字符数组
1、 给出以下定义:
char x[ ]=\
char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为
A) 数组x和数组y等价 B) 数组x和数组y的长度相同
C) 数组x的长度大于数组y的长度 D) 数组x的长度小于数组y的长度
2、 对字符数组str赋初值,str不能作为字符串使用的一个是( )
A) char str[]=\; B) char str[]={\;
C) char str[9]={'s','h','a','n','g','h','a','i',’\\0’}; D) char str[8]={ 's','h','a','n','g','h','a','i'};
3、 判断两字符串s1,s2是否相等,应使用( ).
A)if(s1==s2) B)if(s1=s2)
C)if(strcpy(s1,s2)) D)if(strcmp(s1,s2)==0)
4、 #include
{
char ch[3][5]={ \ printf(\
}
\
5、 #include
void main() {
char str[80]; int i=0; gets(str);
while(str[i]!=0) {
if(str[i]>='a'&&str[i]<='z')
str[i]-=32; i++; }
puts(str); }
程序运行时如果输入 upcase, 屏幕显示 UPCASE 程序运行时如果输入 Aa1Bb2Cc3, 屏幕显示 AA1BB2CC3
6、 将一个字符数组中的数字字符找出来形成一个新的字符串,并显示新字符串。如
“a123bcd456!ui”,生成新字符串“123456”。 参考答案:
#include
void main() { char str[100],news[100]; int i,j; gets(str); j=0; for(i=0;str[i]!='\\0';i++) if(str[i]>='0'&&str[i]<='9') { news[j]=str[i];j++;} news[j]='\\0'; puts(news); }
7、 编一程序,将两个字符串连接起来。除gets和puts外,不能使用其他任何字符串函数。 参考程序如下: 把第2个字符串连接到第1个串的后面。
#include
void main() { char s1[100],s2[30]; //注意s1要够长,来容得下连接后的字符串
int i,j;
gets(s1); gets(s2);
for(i=0;s1[i]!='\\0';i++) ; //空循环,目的是让i指向s1的’\\0’的位置 for(j=0;s2[j]!='\\0';j++) //把s2中的字符逐一拷贝到s1后面
s1[i+j]=s2[j];
s1[i+j]='\\0'; //别忘了在s1后加’\\0’
puts(s1); }
8、 找出10个字符串中最长的字符串。 参考答案: #include
void main()
{ char s[10][30]; //10表示10个字符串,30表示每个字符串最多有29个字符组成, //30可以根据需要自己确定 }
int i;
int max;//存最长字符串的长度 int pos;//存最长字符串的行下标 for(i=0;i<10;i++) gets(s[i]);
max=strlen(s[0]); pos=0;
for(i=1;i<10;i++) if(max //循环结束后pos中存放的是最长字符串的行下标 printf(\s[pos] ); 9、 有 N个国家名,要求按字母先后顺序排列(用起泡排序法)后输出。 #include #include #define N 10 void main() { char names[N][30];//N表示N个国家名字,即N个字符串,30表示每个名字字符串最多有 // 29个字符组成,可以自己确定 char string[30];//交换两个字符串时用 int i,j; printf(\for(i=0;i for(i=0;i { strcpy(string,names[j]); strcpy(names[j],names[j+1]); strcpy(names[j+1],string); } } printf(\for(i=0;i