字符数组习题(1) 下载本文

内容发布更新时间 : 2024/9/17 3:46:47星期一 下面是文章的全部内容请认真阅读。

字符数组习题

1 9 2 10 3 11 4 12 5 13 6 14 7 15 8 一、单项选择题 1.s12和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是_____

A) if(s1>s2)S; B) if(strcmp(s1,s2))S; C) if(strcmp(s2,s1)>0) S; D) if(strcmp(s1,s2)>0)S; 2.以下定义语句中,错误的是________。

A) int a[]={1,2}; B) char a[]={\C) char s[10]={\ D) int n=5,a[n];

3、当接受用户输入的含有空格的字符串时,应使用______函数。

A) gets( ) B) getchar( ) C) scanf( ) D) printf( ) 4、设有数组定义:char array[]=\则strlen(array)的值为______ 。

A) 4 B) 5 C) 6 D) 7

5、设有数组定义:char array[]=\则数组array所占的存储空间为________。 A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节 6、设有数组定义:char array[10]= \则数组array所占的存储空间为__ _____。 A) 4个字节 B) 5个字节 C) 6个字节 D) 10个字节 7.有如下程序 main()

{ char ch[80]; int j;long s=0;

printf(\ gets(ch); for(j=0;ch[j]>'\\0';j++) s=10*s+ch[j]-'0'; printf(\ }

如果运行时,从键盘上输入由数字组成的字符串, 该程序的功能是______。

A) 测字符数组ch的长度 B) 将数字字符串ch转换成十进制数 C) 将字符数组中的小写字母转换成大写 D) 将字符数组中的大写字母转换成小写 8.以下程序的输出结果是______。 main()

{ char a[10]={'1','2','3',0,'5','6','7','8','9','\\0'}; printf(\ }

A) 123 B) 1230 C) 123056789 D) 1230567890 9.若有定义语句:char s[100],d[100]; int j=0,i=0; ,且s中已赋字 符串,请在划线处填______以实现将字符串s中的内容拷贝到字符串d

1

中。(注意:不得使用逗号表达式) while(s[i]) { d[j]=__ _______; j++; } d[j]=0;

A) s[i] B) s[++i] C) s[i++] D) s[j] 10.当执行下面的程序时,如果输入ABC,则输出结果是

A) ABC6789 B) ABC67 C) 12345ABC6 D) ABC456789 #include “stdio.h” #include “string.h” main()

{ char ss[10]=“1,2,3,4,5”;

gets(ss); strcat(ss, “6789”); printf(“%s\\n”,ss); }

11.下列程序执行后的输出结果是

A) you&ne B) you C) me D) err mai()

{ char arr[2][4];

strcpy(arr,\); strcpy(arr[1],\); arr[0][3]='&';

printf(\); }

12.执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是 A) 123,456,789 B) 1,456,789 C) 1,23,456,789 D) 1,23,456 main()

{ char s[100]; int c, i;

scanf(\); scanf(\); scanf(\); printf(\); }

13.下列描述中不正确的是

A) 字符型数组中可以存放字符串

B) 可以对字符型数组进行整体输入、输出 C) 可以对整型数组进行整体输入、输出

D) 不能在赋值语句中通过赋值运算符\对字符型数组进行整体赋值 14. 不能把字符串:Hello!赋给数组b的语句是

A) char b[10]={'H','e','l','l','o','!'}; B) char b[10];b=\C) char b[10];strcpy(b,\); D) char b[10]=\15.函数调用:strcat(strcpy(str1,str2),str3)的功能是 A) 将串str1复制到串str2中后再连接到串str3之后 B) 将串str1连接到串str2之后再复制到串str3之后

C) 将串str2复制到串str1中后再将串str3连接到串str1之后 D) 将串str2连接到串str1之后再将串str1复制到串str3中 二、程序分析题

1、分析程序运行的结果 main()

2

{ char ch[80]=\ int j;long s=0; puts(ch);

for(j=0;ch[j]>'\\0';j++)

if(ch[j]>='a'&&ch[j]<='z') ch[j]=ch[j]-'b'+'B'; puts(ch); } 2、main()

{ char s[ ]=\ int i,j=0;

for(i=1;i<6;i++) if(s[j]>s[i]) j=i;

printf(\ } 3、main()

{ char a[]=\ int i,j,k; k=strlen(a); for(i=0;i<=k-1;j+=1) for(j=i+1;ja[j])

{t=a[i];a[i]=a[j];a[j]=t;} puts(a);

printf(\ }

4、main( )

{ char ch[2][5]={\ int i,j;long s=0; for(i=0;i<2;i++)

for(j=0;ch[i][j]>'\\0';j++) s=10*s+ch[i][j]-'0'; printf(\ }

5、#include main( )

{ char str[ ]=\ int i; for(i=0;str[i]!='\\0';i++)

if(str[i]<'0' || str[i]>'9') printf(\ printf(\6、main()

{ char ch[7]={65a2b321\int i,s=0

for(i=0;ch[i]>='0' && ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf(\); }

3

7、以下程序输出的结果是 #include #include main()

{ char w[][10]={\int k;

for (k=1;k<3;k++)

printf(\); }

8、main()

{ char a[]=\int v[5]={0},k;

for(k=0;s[k];k++) switch(s[k])

{ default:v [s[k]] ++; case '1': v [s[k]]++; case '3': v [s[k]]++; case '2': v [s[k]]++; }

printf(\); }

9、下列程序中字符串中各单词之间有一个空格,则程序的输出结果是 【31】 。 #include “string.h” main( )

{ char strl[]=\, *p1=strl; strcpy(strl+strlen(strl)/2,\); printf(\,pl); }

三、程序填空题

1、以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串yes!,否则函数返回字符串:no!,并在主函数中输出.所谓回文即正向与反向的拼写都一样,例如:adgda.请填空. #include \

char *huiwen(char *str) {

char *p1,*p2; int i,t=0;

p1=str; p2= for(i=0;i<=strlen(str)/2;i++) if(*p1++!=*p2--) { t=1; break; }

if( ) return (\); else return (\); }

main()

4