马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 6bingame 于 2024-11-26 14:22 编辑
字符串和字符数组
自动分类字符应用
课堂练习
题1:任意输入一段字符串(不超过40个字符),将输入的字符串进行分类。数字字符分为一类,字母字符分为一类,其他字符分为一类。
例如:输入asdf123456QWE!@#$789TYU,输出效果如下:
数字字符:123456789
字母字符:asdfQWETYU
其它字符:!@#$
解:#include<stdio.h>
int main()
{
int i,m,e,o;
char input[40];
char math[40],English[40],others[40];
m=e=o=0;
printf("输入字符串\n");
gets(input); //输入字符
for(i=0;input[i];i++)
{
if(input[i]>='0'&&input[i]<='9')
math[m++]=input[i];
else if((input[i]>='a'&&input[i]<='z')||(input[i]>='A'&&input[i]<='Z'))
English[e++]=input[i];
else others[o++]=input[i];
}
printf("整数字符:"); //输出整数字符
for(i=0;i<m;i++)
printf("%c",math[i]);
printf("\n");
printf("字母字符:"); //输出字母字符
for(i=0;i<e;i++)
printf("%c",English[i]);
printf("\n");
printf("其它字符:"); //输出其它字符
for(i=0;i<m;i++)
printf("%c",others[i]);
printf("\n");
return 0;
}
题2:连接两个字符串。
解:#include<stdio.h>
int main()
{
char a[]="ABCDEFG";
char b[]="123456";
char c[80];
int i=0,j=0,k=0;
while(a[i]!='\0'||b[j]!='\0') //a和b不同时到结束
{
if(a[i]!='\0') //a不到结束时
{
c[k]=a[i];
i++;
}
else //b不到结束时
c[k]=b[j++];
k++; //c数组元素下标
}
c[k]='\0'; //c数组最后一个元素,标志字符串结束
puts(c);
return 0;
}
题3:两个字符串复制程序。
解:#include<stdio.h>
#define LSIZE 81
void strcopy(char[],char[]);
int main()
{
char message[LSIZE]; //原数组
char newMessage[LSIZE]; //复制后的数组
printf("输入字符串:");
gets(message);
strcopy(newMessage,message);
puts(newMessage);
return 0;
}
//复制string2到string1
void strcopy(char string1[],char string2[])
{
int i=0; //i是下标
while(string2[i]!='\0') //是否结束
{
string1[i]=string2[i]; //复制
i++;
}
string1[i]='\0'; //结束标志
}
|