字符数组作业参考答案

字符数组

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 void main()

{

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 #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;i0) //注意这里比较和交换的是字符串,不是单个字符

{

strcpy(string,names[j]);

strcpy(names[j],names[j+1]); strcpy(names[j+1],string);

}

}

printf(\for(i=0;i

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4