⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sjjg.cpp

📁 简单的数据结构
💻 CPP
字号:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<malloc.h>
#define MALLOC (struct str *)malloc(sizeof str)
#define ENTER printf("\n")

#define STRLEN 81
struct str
{
char ch[STRLEN];
};

struct str *concat(struct str *s1,int i1,struct str *s2,int i2) //连接两个字符串
 {struct str *s;
  s=MALLOC;
	 int j=0;
	 for(;j<=i1;j++)
	 {
         s->ch[j]=s1->ch[j];
	 }
     for(j=0;j<=i2;j++,i1++)
	 {
		 s->ch[i1]=s2->ch[j];
	 }
	 return s;
 }

int len(struct str *s)  //计算字符串长度
 {int j=0,i=0;
  while(s->ch[i]!='\0')
  { i++;
    j++;
  }
  return j;
 }

 void change1(struct str *s,int i)   //大小写切换
 {
 //s=(struct str *)malloc(sizeof str);
  	 int j=0;
      for(;j<=i;j++)
	  {
		  s->ch[j]=s->ch[j]-32;
	  }
 }

void change()  //数制转换
{   
	int i=0,j=0,m=0;
    int b=0;
	struct str *a;
    a=MALLOC;
	printf("请输入一个16进制数:\n");
	/* 	
do
	{
	scanf("%c",&a->ch[i]);
    i++;
	}
	while(a->ch[i]=='\n');
*/
gets(a->ch);
	for(;a->ch[i]!='\0';i++);
	for(;j<i;j++)
	if(a->ch[j]>=65&&a->ch[j]<=70)
		a->ch[j]=a->ch[j]-55;
	for(j=0;j<i;j++)
	if(a->ch[j]>=48&&a->ch[j]<=57)
		a->ch[j]=a->ch[j]-48;
	m=i;
    for(j=0;j<i;j++,m--)
		b=b+a->ch[j]*pow(16,m-1);
	printf("该数的十进制形式:%d\n",b);
}

void combine()    //字符串比较
{   
	int i1,i2,j,l;
	struct str *s1;
    struct str *s2;
	s1=MALLOC;
	s2=MALLOC;
	printf("请输入两个字符串:\ns1:\n");
	gets(s1->ch);
	printf("s2:\n");
	gets(s2->ch);
    i1=len(s1);
	i2=len(s2);
	i1>=i2? j=i1:j=i2;
	for(l=0;l<j;l++)
	{	
		if(l==j-1&&s1->ch[l]==s2->ch[l]){printf("s1=s2\n");break;}
	    else if(s1->ch[l]>s2->ch[l])    {printf("s1>s2\n");break;}
	    else if(s1->ch[l]==s2->ch[l])    continue;
	    else if(s1->ch[l]<s2->ch[l])    {printf("s1<s2\n");break;};
	}
//S1:printf("s1>s2");
//S2:printf("s1>s2");
//SS:printf("s1=s2");
}
 
 void strconcat()      //大小写转换和字符串连接
{
	 int i1,i2,j;
     struct str *s1,*s2,*s3;
     s1=(struct str *)malloc(sizeof str);
     s2=(struct str *)malloc(sizeof str);
     s3=(struct str *)malloc(sizeof str);
     printf("输入两个小写字母字符串:\n");
     gets(s1->ch);
     gets(s2->ch);
 
     i1=len(s1);
     i2=len(s2);
     //printf("%d %d\n",i1,i2);  //调试时检验len函数
     change1(s1,i1);
     change1(s2,i2);
     printf("该两个字符串的大写形式为:\n");
     for(j=0;j<=i1;j++)
     printf("%c",s1->ch[j]);
     ENTER;
     for(j=0;j<=i2;j++)
     printf("%c",s2->ch[j]);
     ENTER;
     s3=concat(s1,i1,s2,i2);
     printf("将两个字符串的连接成:\n");
     for(j=0;j<=i1+i2;j++)
     printf("%c",s3->ch[j]);
     ENTER;

     //puts(s2->ch);
     //puts(s1->ch);
 }

void Delete()     //空格删除的运算
{ 
	int i;
    int l;
	int m;
	int n=0;
	int h=0;
	int k=0;
	struct str *s;
	s=MALLOC;
	printf("请输入一个字符串:\n");
	gets(s->ch);
    l=len(s);
	for(i=0;i<l;i++)
	{
		if(s->ch[i]==' '||s->ch[i]=='\t')
		{   
			for(m=i;m<=l-i+h;m++)
		           s->ch[m]=s->ch[m+1];
			i--;
		    l--;
			n=n+2;
			for(;k<n;k++)h=h+2;
				
		}
	}
    printf("删除空格后的字符串:\n");
	for(i=0;i<l;i++)
		printf("%c",s->ch[i]);
	printf("\n");
}
void main()   //主函数,实现菜单控制
 {   
char q;
	 printf("常用数据结构:\n");
	 printf("根据以下编号选择要实现的功能:\n");
   printf("1. 数制转换运算(十六与十进制的转换)\n");
   printf("2. 串的大小写转换和连接运算\n");
	 printf("3. 字符串的比较运算\n");
	 printf("4. 串的空格删除运算\n");
	 printf("0. 退出程序 \n");
     q=getchar();
	 getchar();
     switch(q)
	 {
	 case '1': change();     break;// 数制转换运算
	 case '2': strconcat();   break;// 串的大小写转换和连接运算
	 case '3': combine();    break;// 字符串的比较运算
	 case '4': Delete();     break;// 串的空格删除运算
	 case '0': return;            //退出系统
	 }  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -