2008年安徽省计算机水平考试二级C语言试题
一、单项选择题(每题1分,共40分)
1. 通常将个人计算机称为 1 。
A) PLC B) LCD C) PC D) CRT
2. 下列表示存储器容量的数据中,最大的是 2 。
A) 1GB B) 211MB C) 220KB D) 210B
3. 将十进制数41转换为二进制数,下面结果中正确的是 3 。
A) 00101001 B) 00101011 C) 00100011 D) 00100101
4. 按照计算机应用领域分类,学校使用的成绩管理系统属于 4 。
A) 实时控制B) 科学计算C) 数据处理D) 计算机辅助设计
5. 删除Windows桌面上应用程序的快捷图标,意味着 5 。
A) 该程序连同其图标一起被删除
B) 只删除了该程序,对应的图标被隐藏
C) 该程序连同其图标一起被隐藏
D)只删除了图标,对应的程序仍然存在
6. 以下关于多媒体技术的叙述中,错误的是6。
A) 多媒体技术将各种媒体以数字化的方式集成在一起
B) 多媒体技术就是能用来观看DVD电影的技术
C) 多媒体技术已经成为声、文、图等媒体信息在计算机系统中综合应用的代名词
D)多媒体技术和计算机技术的融合开辟出一个多学科交叉、跨行业的崭新领域
7. 下列的网络IP地址中,正确的是7。
A) 249.220.258.202 B) 204.250.9 C) 202.155.98.C D) 202.245..101.201
8. “熊猫烧香”是一种8。
A) 办公软件B) 杀毒软件C) 计算机病毒D)下载工具
9. 下列有关计算机病毒和黑客的说法中,不正确的是9。
A) 所有计算机病毒都可以通过杀毒软件彻底清除
B) 计算机黑客是指利用网络入侵别人计算机的人
C) 防范计算机病毒的一种常用办法是在计算机上安装正版的反病毒软件
D)防范计算机黑客的一种常用办法是在计算机上安装网络防火墙
10. 10 是程序、数据以及相关文档的集合
A) 软件B) 程序C) 指令D)算法
11. 下列关于C语言程序说法正确的是11 。
A) C程序书写时,不区分大小写字母
B) C程序书写时,一行只能写一条语句
C) C程序书写时,一条语句可分成几行书写
D) C程序书写时,每行必须有行号
12. C语言中的源程序文件和目标文件的扩展名分别是12 。
A) C和obj B) C和exe C) com和exe D)obj和c
13. 以下四项中属于ANSI C语言关键字的是13 。
A) CHAR B) define C) max D) return
14. 在C语言中,double、long、unsigned、int、char类型数据所占字节数分别是14 。
A) 8、2、4、1 B) 2、8、4、1 C) 4、2、8、1 D) 8、4、2、1
15. 设int a=0, b=1, c=2;,则表达式a? a+b:a+c的值是15 。
A) 0 B) 1 C) 2 D) 3
16. 下列16 是字符型常量。
A) '\n' B) "A" C) "\" D) '65'
17. 已知int x,y;,执行语句x=(y=10-5, y*2), y-5;后,变量x和y的值分别是17 。
A) x=0, y=5 B) x=10, y=5 C) x=5, y=0 D) x=5, y=5
18. 已知int x;,当x为大于1的奇数时,下列值为0的表达式是18 。
A) x%2==1 B) x/2 C) x%2!=0 D) x%2==0
19. 下面程序段执行结果是19 。
int i=5, k;
k=(++i)+(++i)+(i++);
printf("%d,%d",k, i);
A) 24, 8 B) 21, 8 C) 21, 7 D) 24, 7
20. 下列正确的赋值语句是20 。
A) 10=a; B) b=45.6 C) c=15*5; D) a+47=c;
21. 已知int x=1, y=2, z=3;,则逻辑表达式x A) 1 B) 2 C) 3 D) 4 22. 若变量c为char类型,能正确判断出c为大写字母的表达式是22 。 A) 'A'<=c<='Z' B) c>='A'||c<='Z' C) 'A'<=c and 'Z'>=c D) c>='A && c<='Z' 23. 已知int x, y; float z;,以下正确的输入语句是23 。 A) scanf("%d%d%f", x, y, z); B) scanf("%d%d%f", &x, &y, &z); C) scanf("%d%6d%6.2f", &x, &y, &z); D) scanf("%d%d%f"; &x; &y; &z); 24. 执行下面的程序: main() {int x=-1; printf("%d,%x,%u", x, x, x); } 则输出结果是24 。 A) -1, -1, -1 B) -1, -ffff, -32768 C) -1, ffff, -32768 D) -1, ffff, 65535 25. C语言对于嵌套的if语句规定else总是25 匹配。 A) 与最外层的if B) 与之前最近的if C) 与之前最近的不带else的if D) 与最近的{ }之前的if 26. 下面程序运行结果为26 main() {char c='a'; if('a' else printf("UP"); } A) LOW B) UP C) LOWUP D) 语句错误,编译不能通过 27. 以下叙述正确的是27 A) do-while语句构成的循环,在while后的表达式为非零时结束循环 B) do-while语句构成的循环,在while后的表达式为零时结束循环 C) do-while语句构成的循环只能用break语句退出 D) do-while语句构成的循环不能用其他语句构成的循环来代替 28. 要使下面程序段输出10个整数,则在下划线处填入正确的数是28 。 for(i=0; i<= ; i+=2) printf("%d",i); A) 9 B) 10 C) 18 D) 20 29. 下列描述中不正确的是29 。 A) 字符数组中可以存放字符串 B) 可以对字符数组进行整体输入、输出 C) 可以对实型数组进行整体输入输出 D) 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值 30. 下面能对字符数组正确赋给字符串的初始化操作语句是30 。 A) char s[5]={'C', 'H', 'I', 'N', 'A'}; B) char s[5]={"CHINA"}; C) char s[]="CHINA"; D) char s[5]; s[0]='C'; s[1]='H'; s[2]='I'; s[3]='N'; s[4]='A'; 31. 下面程序段的输出结果是31 。 char s[ ]="\\\101abc\0"; printf("%s\n", s); A) \Aabc\0 B) \101abc\0 C) \101abc D) \Aabc 32. 有如下程序: main() {int a[6], i, s=0; for(i=1; i<6; i++) {a[i]=i+1; s+=a[i];} printf("%d\n", s); } 该程序的输出结果是32 。 A) 18 B) 19 C) 20 D) 21 33. 当调用函数时,实参是一个数组名,则向函数传送的是33 。 A) 数组的长度B) 数组的首地址 C) 数组每一个元素的地址D) 数组每个元素中的值 34. C语言中,如果在定义函数时没有指定函数类型,系统会隐含指定为34 。 A) char B) int C) register D) static 35. 一个源文件中定义的全局变量的作用域是35 。 A) 本函数的全部范围B) 本程序的全部范围 C) 本文件的全部范围D) 从定义开始至本文件结束 36. 对于类型相同的两个指针变量之间,不能进行的运算是36 。 A) < B) = C) + D) - 37. 已知int s[ ]={1, 3, 5, 7, 9}, *p=&s[0];,则值为5的表达式是37 。 A) *p+2 B) *p+3 C) *(p+2) D) *(p+3) 38. 若有如下语句: int c[4][5], (*p)[5]; p=c; 能正确引用c数组元素的是38 。 A) p+1 B) *(*p+2) C) *(p+3) D) *(p+1)+3 39. 有如下定义: struct person {char name[9]; int age;}; struct person class[10]={"John", 17, "Paul", 19, "Mary", 18, "Adam", 16}; 根据上述定义,能输出字母M的语句是39 。 A) printf("%c\n", class[3].name); B) printf("%c\n", class[3].name[1]); C) printf("%c\n", class[2].name[1]); D) printf("%c\n", class[2].name[0]); 40. 设int b=8;,表达式(b>>2)/(b>>1)的值是40 。 A) 0 B) 2 C) 4 D) 8 二、填空题(每空2分,共20分) 1. 在turbo C 2.0编辑环境中,激活主菜单的热键是(1) 。 2. 已知int a=7; float x= 3.5, y= 4.8;,则表达式x+a%2*(int)(x+y)的值是(2) 。 3. 设有int x, y; scanf("%d%*d%d", &x, &y);,从键盘输入数据10□20□30<回车>后,y的值 是(3) 。 4. 已知char s1[10]="ABCD", s2[5]="xy";,则strlen(strcpy(s1, s2))的值是(4) 。 5. 有函数调用语句fun(a, b+c, (d, e));,则该函数调用语句中含有的实参的个数是(5) 。 6. 以下程序运行的结果是(6) 。 main() {char a[ ]="12345", *p; int s=0; for(p=a; *p!='\0'; p++) s=10*s+*p-'0'; printf("%d\n",s); } 7. 执行程序段char str[ ]="abc\0def\0ghi"; char *p; p=str; printf("%s", p+5);,则该程序段运行 结果是(7) 。 8. struct person {char name[8]; long num; union{float x; int y;}m; }w; 则表达式sizeof(w)的值是(8) 。 9. 判断文件指针是否指向文件尾的函数为(9) 。 10. #define S(x) 5*x main() {int a=1, b=2; printf("%d", S(a+b)); } 运行结果是(10) 。 三、阅读理解题(每小题4分,共20分) 1. 下面程序运行的结果。 main() {int i, j, s=0; for(i=1; i<=4; i++) for(j=1; j<=5-i; j++) s=s+i*j; printf("%d", s); } 2. 下面程序运行的结果。 main() {int i, a=3, b=4, t; for(i=1; i<=5; i++) switch(i%5) {case 0: b=3; case 1: t=a; a=b; b=t; break; default: b=5; } printf("%d, %d\n", a, b); } 3. 下面程序运行的结果。 main() {int a[10], i, s=0; a[0]=1; a[1]=2; for(i=2; i<10; i++) {a[i]=a[i-1]+a[i-2]; s=s+a[i]; } printf("%d\n", s); } 4. 下面程序运行的结果。 main() {int i, s=0; for(i=1; i<=5; i++) {static int x=0; x=x+i; s=s+x; } printf("%d\n", s); } 5. 下面程序运行的结果。 int f(int n) {if(n==2)return 1; else return f(n-2)+n; } main() {printf("%d\n", f(10)); } 四、编程题(共20分) 1. (6分)设计程序计算并输出99 151311++++ 。 2. (7分)设计程序输出下面图形(要求用嵌套循环语句实现) 55555 4444 333 22 1 3. (7分)设计程序输入一个字符串并判断其是否是“顺序串”(从小到大或从大到小排序,如:AABccd 或dccBAA),“是”则打印“Yes ”,“否”则打印“No ”。 #include char s[100]; ... } 2008年1月安徽省计算机水平考试二级C 语言试题参考答案 一、单项选择题(每题1分,共40分) 1. C 2. A 3. A 4. C 5. D 6. B 7. D 8. C 9. A 10. A 11. C 12. A 13. D 14. D 15. C 16. A 17. B 18. D 19. B 20. C 21. C 22. D 23. B 24. D 25. C 26. A 27. B 28. C 29. C 30. C 31. D 32. C 33. B 34. B 35. D 36. C 37. C 38. B 39. D 40. A 二、填空题(每题2分,共20分) 1. F10 2. 11.5 3. 30 4. 2 5. 3 6. 12345 7. ef 8. 16 9. eof() 10. 7 三、阅读理解题(每题4分,共20分) 1. 35 2. 3, 4 3. 228 4. 35 5. 29 四、编程题(共20分) 1. (6分) main() {int i; float t, s=0; for(i=1;i<=99; i+=2) {t=1.0/i; s+=t; } printf("s=%f\n", s); } 运行结果:s=2.937775 2. (7分) main() {int i, j; for(i=5; i>=1; i--) {for(j=1; j for(j=1; j<=i; j++) printf("%d", i); printf("\n"); } } 3. (7分) #include main() {int i,j; char s[80]; gets(s); if(s[1]>s[0]) {for(i=2; s[i]&& s[i]>=s[i-1]; i++); if(s[i])printf("No\n"); else printf("Yes\n"); } if(s[1] {for(i=2; s[i]&& s[i]<=s[i-1]; i++); if(s[i])printf("No\n"); else printf("Yes\n"); } if(s[1]==s[0]) {for(i=2; s[i]&& s[i]>=s[i-1]; i++); if(s[i]=='\0')printf("Yes\n"); else {for(j=2; s[j]&& s[j]<=s[j-1]; j++); if(s[j])printf("No\n"); else printf("Yes\n"); } } } 又解: #include main() {int i,j; char s[80]; gets(s); if(s[1]>s[0]) {for(i=2; s[i]&& s[i]>=s[i-1]; i++); if(s[i])printf("No\n"); else printf("Yes\n"); } else {for(i=2; s[i]&& s[i]<=s[i-1]; i++); if(s[i]=='\0')printf("Yes\n"); else {for(j=2; s[j]&& s[j]>=s[j-1]; j++); if(s[j])printf("No\n"); else printf("Yes\n"); } } } 一、单项选择题(每题1分,共40分) *1. 计算机能够自动工作,主要是因为采用了。 A) 二进制数制B) 大规模集成电路 C) 程序设计语言D) 存储程序控制原理 2. 下列数值中最大的是。 A) (10110)2B) (120)8C) (70)10D) (3A)16 *3. 在计算机指令系统中,一条指令通常由组成。 A) 数据和字符B)操作码和操作数 C) 运算符和数据D) 被运算数和结果 4. 运算器主要由组成。 A) 算术逻辑单元B)处理器 C) 控制器D) 存储器 5.下列关于Windows“回收站”的叙述中,不正确的是。 A)“回收站”中的信息可以清除 B) “回收站”中的信息可以还原 C) “回收站”的大小可以设置 D) “回收站”不占用硬盘空间 6. 多媒体信息不包括。 A) 文字、图形B) 音频、视频C) 光驱、声卡D) 影像、动画 *7. 学校机房的若干台计算机连接而成的网络通常属于。 A) WAN B) LAN C) MAN D) GPS *8. FTP是。 A) 发送电子邮件的软件B) 浏览网页的工具 C) 文件传输协议D) 聊天工具 9. 下列关于计算机病毒的叙述中,不正确的是。 A) 计算机病毒只破坏硬件,不破坏软件 B) 计算机病毒是人为编写的一种程序 C) 计算机病毒能通过磁盘、网络等媒介传播、扩散 D) 计算机病毒具有潜伏性、传染性和破坏性 10. 下列关于算法的叙述中,正确的是。 A) 算法就是对特定问题求解步骤的描述 B) 算法就是程序 C) 算法就是软件 D) 算法没有优劣之分 11.一个可编译运行C语言源程序中,______。 A)主函数有且仅有一个B)可以有多个主函数 C)必须有除主函数以外的其他函数 D) 可以没有主函数 *12.结构化程序设计所规定的三种基本控制结构是 ______。 A)输入、处理、输出B)树形、网形、环形 C)顺序、选择、循环D)主程序、子程序、函数13.以下选项中不合法的用户标识符是______。 A)long B)_2test C)3Dmax D)for 14.设有:char a='\101';,则变量a______。 A)包含1个字符B) 包含3个字符 C) 包含4个字符D)定义不合法 15.以下选项中运算对象不能为实型的运算符是______。 A)% B)/ C)= D)* ?*16.已知int i,a;,执行语句i=(a=2*4,a+5),a+6;后,变量i的值为__13____。 A)8 B)14 C)40 D)46 17.设有以下变量定义,并已赋确定的值:long w; int x; double y; 则表达式w+x+1/y值的数据类型为______。 A)int B)long C)float D)double 18.以下选项中,与k=++n完全等价的表达式是______。 A)k=n,n=n+1 B) n =n+1, k=n C) k=n+1 D) k+=n+1 19.设x,y,t均为int型变量,则执行语句:x=y=0;t=++x || ++y;后,y的值为______。 A)0 B)1 C)2 D) 不确定20.若整形变量a,b,t已正确定义,现要将a和b中的数据进行交换,下面不正确的是______。 A)t=a; a=b; b=t; B) t=a, a=b, b=t; C) a=t; t=b; b=a; D) t=b; b=a; a=t; 21.设有float a=2,b=4,h=3;,以下C语言表达式中与代数式h b a) ( 2 1 计算结果不相符的是 ______。 A)(a+b)*h/2 B) 1/2*(a+b)*h C) (a+b)*h*1/2 D) h/2*(a+b) 22.已知a,b,c为int类型,执行语句scanf("a=%d,b=%d,c=%d",&a,&b,&c); ,若要使得a 为1,b为2,c为3,则以下选项中正确的输入形式是______。 A)a=1 B)1,2,3 C)a=1,b=2,c=3 D)1 2 3 b=2 c=3 23.对于以下形式:if (表达式) 语句;,其中的表达式______。 A)只能是关系表达式 B)只能是关系表达式或逻辑表达式 C)只能是逻辑表达式 D)可以是任何表达式 24.若变量c为char类型,以下选项中能正确判断出c为数字字符的表达式是______。 A) '0'<=c<='9' B) (c>='0') && (c<='9') C) ('0'<= c) & ('9'>=c) D) (c>=0) && (c<=9) 25.下面有关for 语句的正确描述是______。 A) for语句只能用于循环次数已经确定的情况 B) for语句是先执行循环体语句,后判断作为循环条件的表达式 C)在for语句,不能用break 语句跳出循环体 D) for语句的循环体中,可以包含多条语句,但必须用花括号括起来 26.能将两个变量x,y中值较小的一个赋给变量z 的语句是______。 A)if (x C)z=x 27.若有: char st1[ ]="123456"; char st2[ ]={'1','2', '3','4', '5','6'};则下面叙述正确的是______。 A)数组str1和str2完全相同 B) str1和str2数组长度相同 C)数组str1和str2不相同,str1是指针数组 D) str1和str2数组长度不相同 28.以下不能正确初始化二维数组的选项是______。 A)int a[2][2]={{1},{2}}; B)int a[ ][2]={ 1,2,3,4}; C)int a[2][2]={ 1,2,3 } D)int a[2][]={{1,2},{3,4}}; 29.执行下面程序: #include #include main() { char a[21]="ABC"; strcat(s,"6789"); printf("%s\n",s);} 则输出结果是______。 A)ABC6789 B) ABC C) 6789 D) 6789ABC 30.在C语言程序中,关于函数说法正确的是______。 A)函数的定义可以嵌套,但函数的调用不可以嵌套 B)函数的定义不可以嵌套,但函数的调用可以嵌套 C)函数的定义和函数的调用均不可以嵌套 D)函数的定义和函数的调用均可以嵌套 *31.C语言程序中,调用函数时若实参是普通变量,则下面说法正确的是______。 A)实参和形参各占独立的存储单元 B)实参和形参可以共用存储单元 C)可以由用户指定实参和形参是否共用存储单元 D)由计算机系统根据不同的函数自动确定实参和形参是否共用存储单元 32.设程序中定义了以下函 double myadd(double a, double b) { return (a+b); } 如果在程序中需要对该函数进行声明,以下选项中错误的是______。 A) double myadd(double a, b); B) double myadd(double, double); C) double myadd(double b, double a); D) double myadd(double a, double b); 33.C语言中,若某变量在定义它的函数被调用时才被分配存储单元,则该变量的存储类别为______。 A)static B) extern C)auto或registe D)extern 或static 34.以下能使指针变量p指向a的正确选项是______。 A) int a,*p=a; B) int a,p=a; C) int a,*p=*a; D) int a,*p=&a; 35.设有char str[ ]="Olympic";则表达式*(str+4)的值是______。 A)'m' B) 'p' C) 'i' D)不确定的值 *36.已知 union { int i; char c; float p; }ex; 则sizeof(ex)的值是______。 A) 1 B) 2 C)4 D)7 37.设有: struct student { char name[10]; int age; char sex; }std={"Li Ming",19,'M'},*p; p=&std; 则下面各输出语句中错误的是______。 A)printf("%d",(*p).age); B) printf("%d",p->age); C)printf("%d", p.age); D) printf("%d", std.age) *38.以下关于typedef的叙述不正确的是______。 A)typedef不能用来定义变量 B)用typedef可以增加新类型 C)用typedef只是将已存在的类型用一个新的名称来代表 D)使用typedef便于程序的通用和移植 39.已知int x=16;,表达式x>>2的值是______。 A)64 B)32 C)8 D)4 40.下列关于文件操作描述正确的是______。 A)对文件操作必须先打开文件 B)对文件操作必须先关闭文件 C)对文件操作打开和关闭的顺序无关紧要 D)对文件操作打开和关闭的顺序取决于是读还是写操作 二、填空题(每空2分,共20分) 1.设有int x; float y=5.5;,则执行语句x=y*3+(int)y%4;后,x的值是______。 2.已知int x=5,y=3,z=1;,则执行语句x%=y+z;后,x的值是______。 3.已知float f=123.467;,则执行语句printf("%.2f\n",f);后,输出结果是______。 4.已知字符'A'的ASCII值为十进制65,变量c为字符型,则执行语句c='A'+'6'-'3'; printf("%c\n",c);后,输出结果是______。 5.已知int x=0,y=1,z=2;,则执行语句if (!x) z=-1; if (y) z=-2; printf("%d\n",z);后,输出结果是______。6.有程序段char str[ ]="ab\070\\14\n"; printf("%d\n",strlen(str));执行后输出结果是______。7.已知int a[10];,则______代表数组a的首地址。8.有函数调用语句:f(a+b,(c,d),e);,则该调用语句中函数实参的个数是______。 9.以下程序的输出结果为______。 #include “stdio.h” #define S(x,y) x*y void main() { int a=3,b=2,c; c=S(2+a,b); printf(“%d”,c);} 10.已知int a[3][3]={1,2,3,4,5,6,7.8.9};,则*(*(a+2)+1)的值是______。 三、阅读理解题(每题4分,共20分) 1.以下程序的运行结果为______。 #include "stdio.h" main() { int i,a=0,b=0,c=0; for(i=0;i<5;i++) switch(i) { case 0:a++; case 1: case 2:b++;break; default:c++; } printf("a=%d,b=%d,c=%d\n",a,b,c); } 2.以下程序的运行结果为______。 #include "stdio.h" main() { I nt i,j,a[10]={3,4,5,6,7,8,9,10,11,12}; for(i=0;i<10;i++)