全国计算机等级考试二级C语言复习资料

loading 分享 2026-10-28 下载文档

聪智学校

如字符串“china”,在内存中存储形式是

c 该字符串的长度为5字节,所占的存储空间为6字节。

h i n a \\0 7.知识点:字符数组的定义及初始化

? 字符数组名是地址常量,不能赋值给数组名。 例1:(2009-04-32)以下选项中正确的语句组是(D)

A)char s[];s=”BOOK!”; B)char *s;s={“BOOK!”}; C)char s[10];s=”BOOK!”; D)char *s;s=”BOOK!”;

【解析】字符数组名是地址常量,不能赋值给数组名,故A、C项错误,D项指针s是个变量,将字符串常量赋值给s,是正确的。B项中给s赋值时不能用花括号将字符串括起来。

例2:(2009-09-31)下面是有关C语言字符数组的描述,其中错误的是(D) A)不可以用赋值语句给字符数组名赋字符串 B)可以用输入语句把字符串整体输入给字符数组 C)字符数组中的内容不一定是字符串 D)字符数组只能存放字符串

8.知识点:字符数组的输入与输出

例1:(2009-09-13)有以下程序 #include main()

{char a[20]=”How are you?”,b[20]; scanf(“%s”,b);printf(“%s %s\\n”,a,b);

}程序运行时从键盘输入:How are you?<回车>

第 33 页 共 81 页

聪智学校

则输出结果为How are you? How

【解析】scanf函数输入,以空格作为字符串输入结束的标志,故字符数组b只接收到字符串”How”。 例2:(2011-03)有以下程序 main() {

char a[30],b[30]; scanf(\gets(b);

printf(\

}程序运行时若输入:how are you? I am fine<回车>则输出结果是(B) A)how are you? B)how I am fine

are you?I am fine

C)how are you? I am fine D)row are you?

【解析】:scanf以空格作为字符串输入结束的标志,而gets(s)不会。所以a得到的是“how”,b得到的是剩下的“are you? I am fine”。故选择B。 例3:(2011-03)有以下程序 main() {

char s[]=\int i, n=0; for(i=0;s[i]!=0;i++)

if(s[i]>='0'&&s[i]<='9') n++;

printf(\

} 程序运行后的输出结果是 (B)

A)0 B)3 C)7 D)8

第 34 页 共 81 页

聪智学校

【解析】:for循环读取字符数组s中的字符,当读到0时退出循环,注意0和‘0’的区别,字符‘0’的ASCII码为48,‘\\0’的ASCII 码才是0,所以读取的字符为“012xy”中的字符,for循环读取到字符后判断是不是数字字符,如果是n自增1,“012xy”中的数字字符只有三个,所以选择B。

9.知识点:字符串处理函数

例1:(2011-09-32)有以下程序: #include #include main()

{ char a[5][10]={“china”,”beijing”,”you”,”tiananmen”,”welcome”}; int i,j; char t[10]; for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(strcmp(a[i],a[j])>0)

{ strcpy(t,a[i]); strcpy(a[i],a[j]); strcpy(a[i],t);} puts(a[3]);

}程序运行后的输出结果是 (C) A.beijing B.china

C.welcome

D.tiananmen

【解析】双层for循环部分是典型的排序方法,通过strcmp比较两个字符串的大小,然后借助t数组作为中转数组,通过strcpy函数完成a[i]和a[j]两个字符串的交换,使a数组按从小到大排序,即{”beijing” , “china” , ”tiananmen”,”welcome” ,”you” } 例1:(2010-09-23)有以下程序 #include #include main()

第 35 页 共 81 页

聪智学校

{char x[]=”STRING”; x[0]=0;x[1]=?\\0?;x[2]=?0?;

printf(“%d %d\\n”,sizeof(x),strlen(x)); }程序运行后的输出结果是(B) A)6 1 B)7 0 C)6 3 D)7 1

【解析】经过x[0]=0;x[1]=?\\0?;x[2]=?0?;后,x[]=”0\\00ING”。strlen测字符串的实际长度,不含字符串结束标志?\\0?,故strlen(x)为0。sizeof测字符串所占的存储空间,包含字符串结束标志,故sizeof(x)为7。 例2:(2010-09-33)有以下程序 #include #include main()

{char a[20]=”ABCD\\0EFG\\0”,b[]=”IJK”; strcat(a,b); printf(“%s\\n”,a); }程序运行后的输出结果是(B)

A)ABCDE\\0FG\\0IJK B)ABCDIJK C)IJK D)EFGIJK

【解析】把字符数组b中的字符串连接到字符数组a中字符串的后面,并删去字符串a后的第一个字符串结束标志?\\0?。故输出结果为ABCDIJK。 例3: (2010-09-31)下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST”要求的是 (A) A)if(strcmp(s2,s1)==0)ST; B)if(s1==s2)ST; C)if(strcpy(s1,s2)==1)ST; D)if(s1-s2==0)ST; 【解析】若字符串s1等于字符串s2,strcmp(s2,s1)==0,故答案是A。

第四课 指针

第 36 页 共 81 页


全国计算机等级考试二级C语言复习资料.doc 将本文的Word文档下载到电脑
搜索更多关于: 全国计算机等级考试二级C语言复习资料 的文档
相关推荐
相关阅读