搜索
您的当前位置:首页C(修订后的习题集和答案)

C(修订后的习题集和答案)

来源:飒榕旅游知识分享网
目 录

第1套 C语言程序设计笔试样题及参考答案 ................................................ 2 第2套 C语言程序设计笔试样题及参考答案 ................................................ 9 第3套 C语言程序设计笔试样题及参考答案 .............................................. 17 第4套 C语言程序设计笔试题及参考答案 .................................................. 22 第5套 C语言程序设计笔试样题及参考答案 .............................................. 29 2008年1月安徽省计算机水平考试二级C语言试题 .................................. 37 2008年6月安徽省计算机水平考试二级C语言试题 .................................. 42 2010年安徽省计算机水平考试二级C语言试题 .......................................... 48 2011上半年安徽省计算机水平考试二级C语言试题................................... 52 2011年下半年全国高等学校(安徽考区)计算机水平考试试卷 ..................... 56 2012年上半年全国高等学校(安徽考区)计算机水平考试试卷 .................... 62 2008年1月安徽省计算机水平考试二级C语言试题参考答案 .................. 68 2008年6月安徽省计算机水平考试二级C语言试题参考答案 .................. 69 2010年安徽省计算机水平考试二级C语言试题参考答案 .......................... 69 2011年上半年安徽省计算机水平考试二级C语言试题参考答案 .............. 71 2011年下半年安徽省计算机水平考试二级C语言试题参考答案 .............. 72 2012年上半年安徽省计算机水平考试二级C语言试题参考答案 .............. 73

1

第1套 C语言程序设计笔试样题及参考答案

一、单项选择题(每题1分,共40分)

1. 某微型计算机的型号规格标有PentiumIII600字样,其中PentiumIII是指 1 。 A.厂家名称 B.机器名称 C.CPU型号 D.显示器名称 2. 目前微型机上普通使用的光驱及光盘,它采用的是 2 。

A.超导技术 B. 激光技术 C.集成电路技术 D.调频技术 3. 在下列一组数中,最小数为 3 。

A.(11011101)2 B. (125)10 C. (A7)16 D. (157)8 4. Windows XP中,“回收站”是 4 。

A.内存的部分空间 B.硬盘中的部分空间 C.软盘中的部分空间 D.高速缓存中的部分空间 5. 在“我的电脑”窗口中改变一个文件或文件夹的名称,可以采用的方法是:先选取该文件夹或文件,再用鼠标左键 5 。

A.单击该文件夹或文件的名称 B.单击该文件夹或文件的图标 C.双击该文件夹或文件的名称 D.双击该文件夹或文件的图标 6. Windows X的文件夹组织结构是一种 6 。

A.表格结构 B. 树形结构 C.网状结构 D.线性结构 7. 以太网(Ethernet)的拓扑结构是 7 。

A.环形 B. 星形 C.总线形 D.树形 8. 在因特网(Internet)中,电子公告板简称为 8 。

A.E-mail B. BBS C.WWW D.FTP 9. 在多媒体个人计算机中,声卡的作用是 9 。

A.用来播放声音 B.连接主机和声音播放设备

C.用来录入声音 D.连接主机和声音播放与录入设备 10.“CIH”是一种计算机病毒,它主要是破坏 10 ,导致计算机系统瘫痪。 A.CPU B.软盘 C.BOOT(程序) D.BIOS

11. 设x,y,z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为 11 。 A.4 B. 16 C.32 D.52 12. 设有如下的变量定义: int i=8,k,a,b; unsigned long w=5; double x=1.42,y=5.2;

则以下符合C语言表达式的是 12 。 A. a+=a-=(b=4)*(a=3) B. x%(-3) C. a=a*3=2 D. y=float(i)

13. 假定有以下变量定义:int k=7,x=12;则能使值为3的表达式是 13 。 A. x%=(k%=5) B. x%=(k-4%5) C. x%=k-k%5 D. (x%=k)-(k%=5) 14. 以下叙述正确的是 14 。

A.输入量可以是一个实型常量,例如:scanf(\"%f\

B.只有格式控制,没有输入项,也能正确输入数据到内存,例如:scanf(\"a=%d,b=%df\"); C.当输入实型数据时,格式控制部分可以规定小数点后几位,例如:scanf(\"%4.2f\ D.当输入数据时,必须指明变量地址,例如:scanf(\"%f\

15. 设x和y均为int型变量,则语句:x+=y;y=x-y;x-=y;的功能是 15 。

A.把x和y按从大到小排列 B.把x和y按从小到大排列 C.无确定结果 D.交换x和y中的值 16. 以下程序的输出结果是 16 。 main()

{int a=12,b=12;

printf(\"%d %d\\n\

2

A.10 10 B.12 12 C.11 10 D.11 13 17. 以下程序运行后,输出结果是 17 。 main()

{char *s=\"abcd\"; printf(\"%ld\\n\}

A.cde B.字符c的ASCⅡ码值 C.字符c的地址 D.出错 18. 以下程序的输出结果是 18 。

main(){int m=5;

if(m++>5) printf(\"%d\\n\else printf(\"%d\\n\

A.7 B.6 C.5 D.4 19. 当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为 19 。 if(aelse if(aA.1 B.2 C.3 D.6

20. 在执行以下程序时,如果从键盘输入:ABCdef<回车>,则输出为 20 。 #include

main()

{char ch; while((ch=getchar())!='\\n') { if(ch>='A'&&ch<='Z')ch=ch+32; else if(ch>='a'&&ch<='z‘) ch=ch-32; printf(\"%c\

printf(\"\\n\");}

A.ABCdef B.abcDEF C.abc 21. 下面能正确进行字符串赋值操作的语句是 21 。 A.char s[5]={\"\\ABCDE\ B.char s[5]={'A','B','C','D','E'}; C.char *s;s=\"ABCDEF\"; D.char *s;scanf(\"%s\22. 当执行以下程序段时,描述正确的选项是 22 。 x=-1; do{x=x*x;}while(!x); A.循环体将执行一次 B.循环体将执行两次 C.循环体将执行无限次 D.系统提示有语法错误 23. 执行以下程序后,输出结果是 23 。

main(){ int y=10; do{y--;}while(--y); printf(\"%d\\n\

A.-1 B.1 C.8 D.0 24. 在下列选项中,没有构成死循环的程序段是 24 。

A. int i=100; B.for(;;); while(1)

{i=i&100+1; if(i>100)break;} C. int k=1000; D. int s=36; do{++k;}while(k<=1000); while(s);--s; 25. 执行语句:for(i=1;i++<4;);后,变量i的值是 25 。

A.3 B.4 C.5 D.不定 26. 以下程序运行后,如果从键盘输入ABCDE<回车>,则输出结果为 26 。#include #include func(char str[])

3

D.DEF {int num=0; while(*(str+num)!='\\0')num++; return(num);} main()

{ char str[10],*p=str; gets(p); printf(\"%d\\n\}

A.8 B.7 C.6 D.5 27. 运行以下程序后,如果从键盘输入china<回车>,则输出结果为 26 。 #include main()

{int v1=0,v2=0; char ch; while((ch=getchar())!='\\n') switch(ch)

{ case 'a': case 'h': default: v1++;

case '0': v2++; } printf(\"%d,%d\\n\

A.2,0 B.5,0 C.5,5 D.2,5

28. 若以下程序所生成的可执行文件名为file1.exe,当打入以下命令执行该程序时,程序的输出结果

是 28 。

FILE1 CHINA BEIJING SHANGHAI

main(int argc,char *argv[])

{ while(argc-->0){ ++argv; printf(\"%s\

A.CHINA BEIJING SHANGHAI B.FILE1 CHINA BEIJING C.C B S D.F C B 29. 下面程序的运行结果是 29 。

main()

{ char ch[7]={\"65ab21\ int i,s=0;

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

A.12ba56 B.6521 C.6 D.62

30. 运行下面的程序,如果从键盘输入:ab<回车>c<回车>def<回车>则输出结果为 30 。

#include #define N 6 main()

{ char c[N]; int i=0;

for(;ifor(i=0;iA.a B.a C.ab D.abcdef b b c c c d d d e f

4

31. 以下程序运行后,输出结果是 31 。 #include ss(char *s) { char *p=s; while(*p)p++; return(p-s);} main() { char *a=\"abded\"; int i; i=ss(a); printf(\"%d\\n\}

A.8 B.7 C.6 D.5 32. 以下程序运行后输出结果是 32 。

#include func(int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); } main() { int k=4,m=1,p; p=func(k,m);printf(\"%d,\

A.8,15 B.8,16 C.8,17 D.8,8 33. 以下程序运行后,输出结果是 33 。

#include #define PT 5.5 #define S(x) PT*x*x main()

{ int a=1,b=2; printf(\"%4.1f\\n\

A.49.5 B.9.5 C.22.0 D.45.0 34. 以下程序运行后,输出结果是 34 。

main()

{static char a[]=\"ABCDEFGH\ char *p1,*p2; int k; p1=a;p2=b;

for(k=0;k<=7;k++) if(*(p1+k)==*(p2+k)) printf(\"%c\ printf(\"\\n\"); }

A.ABCDEFG B.CDG C.abcdefgh D.abcCDefGh 35. 以下程序执行后,a的值是 35 。

main()

{int a,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; printf(\"%d\\n\

A.4 B.1 C.0 D.运行时出错,a无定值 36. 以下程序运行后,输出结果是 36 。

int d=1;

fun(int p){int d=5; d+=p++; printf(\"%d\} main()

{int a=3; fun(a); d+=a++; printf(\"%d\

A.84 B.99 C.95 D.44 37. 以下程序运行后,输出结果是 36 。 main()

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

for(j=0;p[i][j]>'0'&&p[i][j]<='9';j+=2) s=10*s+p[i][j]-'0';

5

printf(\"%d\\n\}

A.6385 B.22 C.33 D.693825 38. 若有以下程序段,输出结果为 38 。 int **pp,*p,a=10; p=&a;pp=&p; printf(\"%d\

A.10 B.p的地址 C.a的地址 D.pp的地址

39. 若建立以下的链表结构,指针p,q 分别指向图中所示结点,则不能将q所指的结点插入到链表

末尾的一组语句为 39 。

Data next

b NULL c a NULL p q

A.q->next=NULL;p=p->next;p->next=q; B.p=p->next;q->next=p->next;p->next=q; C.p=p->next;q->next=p;p->next=q; D.p=(*p)·next;(*q) ·next=(*p) ·next;(*p) ·next=q; 40. 以读写方式打开一个已有的文件file1,下面有关fopen函数正确的调用方式为 40 。 A.FILE *fp;fp=fopen(\"file1\ B.FILE *fp;fp=fopen(\"file1\C.FILE *fp;fp=fopen(\"file1\ D.FILE *fp;fp=fopen(\"file1\二、填空题(每空2分,共20分)

1. 设有变量定义:int a=5,b=4;则表达式(--a>b++)?—a:b++的值为 (1) 。 2. 某C编译系统规定,int型数据占2个字节,则定义:

struct node{ int x; long y; }z; 后,sizeof(z)= (2) 。

3. 设有变量定义:int a[10]={1,2,3,4,5,6,7};int *p=a;则表达式*++p的值为 (3) 。

23i4. 下列程序用于计算s1xxxx的近似值。

2!3!i#include main() { int i=0; float s,t=1.0,x; scanf(\"%1f\ s=t=1.0; while(fabs(t)>1.0e-5) { i++; t= (4) ; s+=t; }

printf(\"s=%f\\n\

5. 下面程序用于将输入的三个数从小到大排序输出。

void main()

{ int a,b,c,x,y;

scanf(\"%d%d%d\ if( (5) ) {x=a;y=b;} else{ x=b;y=a; } if( (6) ) x=c; else if(y>c) y=c;

printf(\"%d,%d,%d\}

6

6. 以下程序将输入的一行字符串中的字母全部变成大写输出。 #include main() { char str[255]; int i=0; while((str[i++]=getchar())!='\\n'); str[i-1]='\\0'; for(i=0;str[i]!='\\0';i++) if(str[i]>='a'&&str[i]<='z') str[i]= (7) ;

printf(\"\\n%s\\n\}

7. 程序运行后,输出4,16,256,。

test(){ (8) x=2; x=x*x; printf(\"%d,\main()

{test(); test(); test();}

8. 函数trans()实现对给定的十进制整数d(d≥0),译成s(2≤s≤16)进制表示形式的字符串。char

trans(unsigned int d,int s)

{char digits[]=\"0123456789ABCDEF\ int i=16; if(s<2||s>16)return 0; buf[i]='\\0'; do { buf[--i]=digits[d%s]; ( (9) ;) }while( (10) ); printf(\"%s\main()

{int s,d; scanf(\"%d%d\ printf(\"%4d=\ trans(d,s); printf(\"%d\\n\三、阅读下列程序,写出程序运行结果(每小题4分,共20分) [程序1] main() { int i, x; scanf(\"%d\ for(i=2; x%i; i++); printf(\"%d\\n\

运行后,从键盘输入3,运行结果为: ; 从键盘输入4,运行结果为: 。 [程序2] main() {int i;

for(i=1; i<6; i++) {if(i%2)printf(\"$\"); else continue; printf(\"#\"); }

printf(\"&\\n\"); }

运行结果为: 。 [程序3]

main() { int n[3],i,j,k;

for(i=0;i<3;i++) n[i]=0; k=2;

7

for(i=0;ilong f(int n) { long s; if((n==1)||(n==2)) s=2; else s=n+f(n-1); return(s); }

main() { long x; x=f(4); printf(\"%d\\n\} 运行结果为: 。 [程序5]

#include main() { int m=5,n=7,i=1;

do { if((i%m==0)&&(i%n==0)) { printf(\"%d\\n\ break; } i++; }while(i!=0); }

运行结果为: 。 四、编程题(共20分)

1.找出1~100之间的全部“同构数”。所谓“同构数”是指一个数,它出现在它的平方数的右端。如6的平方是36,6就是同构数。 (6分)

2.编程实现二维数组(n×n)的转置(即行列互换)。(7分) 3.按下述递归定义编写一个计算幂级数的递归函数。(7分)

n01 xnn1n0x*x参考答案

一、单项选择题

1. C 2.B 3.D 4.B 5.A 6.B 7.C 8.B 9.D 10.D 11.C 12.A 13.D 14.D 15.D 16.D 17.C 18.B 19.B 20.B 21.C 22.A 23.D 24.C 25.C 26.D 27.C 28.A 29.C 30.C 31.D 32.C 33.B 34.B 35.C 36.A 37.A 38.A 39.C 40.B 二、填空题

1. (1)5 2.(2)8 3.(3)2 4.(4)t*x/i 5.(5)a>b (6)x0 三、阅读下列程序,写出程序运行结果 1. 1 0 四、编程题

8

2. $#$#$#& 3. 4 4. 9 5. 35 1. main() {int i,x;

for(i=1;i<=100;i++) {x=i*i;

if((x%10==i)||(x%100==i))printf(\"%d\}}

2. #define N 5 main()

{int a[N][N],t,i,j; for(i=0;ifor(j=0;jfor(j=0;j{ for(j=0;j3. float f(float x,int n) { if(n==0) return 1; else return x*f(x,n-1);}

第2套 C语言程序设计笔试样题及参考答案

一、单项选择题(每题1分,共40分)

1. 下列设备中只能作为输出设备的是 1 。

A.键盘 B.硬盘 C.打印机 D.内存 2. 下列叙述中错误的是 2 。

A.频繁开关计算机会导致计算机系统寿命的缩短

B.任何一个完整的计算机系统中,都必须有一个操作系统软件 C.高温会导致计算机系统的不稳定 D.磁场干扰不会导致计算机系统的不稳定 3. 打印当前屏幕内容应使用控制建是 3 。

A.PrtSc(Print Screen) B. PgDn C. Num_lock D. Pgdown 4. 二进制数11001010.11转换成十进制是 4 。

A.202.375 B. 202.125 C. 202.75 D. 202.625 5. 设一张软盘上已染有病毒,则能完全消除该软盘上病毒的措施是 5 。

A.删除该软盘上的所有文件 B.删除该软盘上的多有可执行文件 C.对软盘进行格式化 D.对软盘进行写保护 6. 通常所说的487是 6 。

A.8位机 B.16位机 C.32位机 D.64位机 7. DOS系统启动后,以下文件常驻内存的是 7 。

A.command.com B. io.sys C.sys.exe D.boot.com 8. Windows 2000中的“任务栏”上存放的是 8 。

A.系统正在运行的所有程序 B.系统中保存的所有程序 C.系统前台运行的程序 D.系统后台运行的程序

9

9. Windows 2000中的剪贴板是 9 。

A.硬盘上的一块区域 B.软盘上的一块区域

C.内存中的一块区域 D.高速缓存中的一块区域 10. 在Internet中,环球网的缩写是 10 。

A.BBS B.FTP C.WWW D.E-MAIL 11. 请选出下面可用作C语言用户标识符的一组 11 。 A.void B.a_b C.2ab D.a+b define _ab a2b ab aaa ab_ ab2 aa_bb

12. 设x为int型变量,则执行‖ x=8;x-=x-=x;‖语句后,x的值为 12 。 A.8 B.0 C.16 D.-8

13. 请选出合法的C语言赋值语句 13 。 A. a=a+b B. a?1:0 C. a=int(a+b); D. a++; 14. 执行以下程序片段的结果是 14 。

int x=321;

do{ printf(\"%2d\}while(!x);

A.打印出321 B.打印出32 C.打印出21 D.陷入死循环 15. 有以下程序段,请问执行后的输出结果为 15 。 double x,y; x=1,y=x+3/2; printf(\"%.1lf\

A.2.5 B.2.0 C.2 D.1 16. 有以下程序段,请问执行后的输出为 16 。 main()

{int a=010,b=10,c=0x10; printf(\"%d ,%d,%d\} A.8,10,16 B.8,11,16 C.7,10,17 D.8,10,17 17. 合法的数组定义是 17 。

A.char a={ ' H ', ' e ', ' l ', ' l ', ' o '}; B. char a={\" H \ C. char a[]={ ' H ', ' e ', ' l ', ' l ', ' o '}; D. char a[5]=\" Hello \";

18. 设a为int型变量,则不能正确表示数学关系|a|>10的表达式是 18 。 A.a>10||a<-10 B.a>10|a<-10 C.!(a>=-10&&a<=10) D.!(a<=10)||a<-10 19. 以下程序的输出结果是 19 。 #include main()

{int a=2,b=5; printf(\"a=%%d,b=%%d\ }

A.a=%2,b=%5 B.a=2,b=5 C.a=%%d,b=%%d D.a=%d,b=%d 20. 以下程序的输出结果是 20 。

#include main(){ int i; for(i=1;i<=5;i++)

{ if(i%2) printf(\"*\"); else continue; printf(\"#\"); } printf(\"$\\n\"); }

A.*#*#*#$ B.#*#*#*$ C.*#*#$ D.#*#*$

10

21. 有以下程序段,请问执行后的输出结果是 21 。 char s[10]=\"abcdefg\p++; printf(\"%s\

A.abcdefg B.bcdefg C.cdefg D.编译不通过 22. 若有定义和语句:

int **pp,*p,a=100,b=200; pp=&p; p=&b; printf(\"%d,%d\\n\则输出结果是 22 。

A.100,200 B.100,100 C.200,100 D.200,200

23. 有以下for循环语句: for(x=0,y=3,i=0;(y>3)&&(x<4);x++,y++)i++; 则执行上述语句后,i的值是 23 。

A.0 B.1 C.2 D.陷于死循环 24. 有以下程序,请问执行后的输出结果是 24 。

#include #include main()

{char s[10]={'H','e','l','l','o'}; printf(\"%d\

A.8 B.7 C.6 D.5 25. 有以下程序,其for语句中循环体执行的次数是 25 。 #include #define N 2 #define M N+1

#define NUM (M+1)*M/2 main() { int i,n=0; for(i=1;i<=NUM;i++) {n++; printf(\"%d\ printf(\"\\n\"); }

A.5 B.6 C.8 D.9 26. 若有定义语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;

则不是对a数组元素正确引用的是 26 。

A.a[p-a] B.*(&a[i]) C.*p D.*(*(a+i)) 27. 若有以下程序段,执行后的输出结果是 26 。

Char *s1=\"BEIJING\printf(\"%d\A.8 B.7 C.15 D.9 28. 下面程序的输出是 28 。

main()

{ char *s=\"121\"; int k=0,a=0,b=0; do{ k++;

if(k%2==0){a=a+s[k]-'0';continue;}

b=b+s[k]-'0';a=a+s[k]-'0'; }while(s[k+1]); printf(\"k=%da=%db=%d\\n\ }

A.k=3a=2b=3 B.k=3a=3b=2 C.k=2a=3b=2 D.k=2a=2b=3 29. 若有以下定义:float x;int a,b;

则正确的switch语句是 29 。

A. switch(x) B. switch(x)

{ case 1.0:printf(\"*\\n\"); { case 1,2:printf(\"*\\n\"); case 2.0:printf(\"**\\n\"); case 3:printf(\"**\\n\");

11

} }

C. switch(a+b) D. switch(a+b)

{ case 1: printf(\"*\\n\"); { case 1:printf(\"*\\n\"); case 1+2:printf(\"**\\n\"); case 2:printf(\"**\\n\"); } }

30. 有以下程序:

#include union pw{ int i; char ch[2];}a; main()

{ a.ch[0]=13; a.ch[1]=0; printf(\"%d\ } 执行上述程序后的输出结果是 30 。

A.13 B.14 C.208 D.209 31. 以下程序输出的结果是 31 。 #include #include main()

{ char w[][10]={\"ABCD\ for(k=1;k<3;k++) printf(\"%s\\n\ }

A. ABCD B. ABCD FGH EFG KL IJ C. EFG D. FGH JK KL O

32. 若有以下的定义:int a[]={1,2,3,4,5,6,7,8,9,10},*p=a;则值为3的表达式是 32 。 A.p+=2,*(p++) B.p+=2,*++p C.p+=3,*p++ D.p+=2,++*p 33. 在以下一组运算符中,优先级最高的运算符是 33 。

A.<= B.= C. % D.&& 34. 以下程序的输出结果是 34 。 #include sub1(char a,char b){ char c;c=a;a=b;b=c;} sub2(char *a,char b){ char c;c=*a;*a=b;b=c;} sub3(char *a,char *b){ char c;c=*a;*a=*b;*b=c;} main()

{ char a,b; a='A';b='B'; sub3(&a,&b); putchar(a);putchar(b); a='A';b='B'; sub2(&a,b); putchar(a);putchar(b); a='A';b='B'; sub1(a,b); putchar(a);putchar(b); }

A.BABBAB B.ABBBBA C.BABABA D.BAABBA 35. 设有如下定义:

struct sk{int a;float b;}data,*p;

若有p=&data;则对data中a域的正确引用是 35 。

A.(*p).data.a B.(*p).a C. p->data.a D.p.data.a 36. 以下程序的输出结果是 36 。 #include

12

main()

{ int i=1,j=3; printf(\"%d,\

{int i=0; i+=j*2; printf(\"%d,%d,\ } printf(\"%d,%d\ }

A.1,6,3,1,3 B.1,6,3,2,3 C.1,6,3,6,3 D.1,7,3,2,3 37. 以下程序的输出结果是 37 。 #include main()

{ int k=4,m=1,p; p=func(k,m); printf(\"%d,\ p=func(k,m); printf(\"%d\ } func(int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return(m);}

A.8,17 B.8,16 C.8,20 D.8,8 38. 设有以下语句:

struct st{int n;struct st *next;};

static struct st a[3]={5,&a[1],7,&a[2],9,'0'},*p; p=&a[0]; 则下列表达式的值为6的是 38 。

A.p++->n B.p->n++ C.(*p).n++ D.++p->n 39. 下面程序的运行结果是 39 。 #include

fun(int **s,int p[2][3]) { **s=p[0][1]; } main()

{int x[2][3]={2,4,6,8,10,12},*p; p=(int *)malloc(sizeof(int)); fun(&p,x); printf(\"%d\

A.10 B.4 C.6 D.8 40. 函数调用语句fseek(fp,10,1)的含义是 40 。 A.将文件指针移动到距离文件头10个字节处 B.将文件指针移动到距离文件尾10个字节处 C.将文件指针从当前位置后移10个字节 D.将文件指针从当前位置前移10个字节 二、填空题(每空2分,共20分)

1. 要打印出当前盘当前目录下的所有扩展名为.dat的文件内容,应使用的DOS命令是 (1) 。 2. 设a,b,c为int型变量,且a=10,b=5,c=1,则执行完以下语句:a/=10-(++b)-(c--); a的值变为 (2) 。

3. 在以下程序片断,请问执行后的输出结果是 (3) 。

int n=10; while(n>7){printf(\"%d\

4. 若有以下定义和语句 int w[10]={23,54,10,33,47,98,72,80,61},*p;p=w;

则通过指针p引用值为98的数组元素的表达式是 (4) 。

5. 以下函数用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n为数组中存放的数据的个数。插入后数组中的数仍有序。请填空。 int fun(char *w,char x,int *n) { int i,p; p=0; w[*n]=x; while(x>w[p]) (5) ;

for(i=*n;i>p;i--) w[i]=w[i-1]; w[p]=x; ++*n; }

13

6. 以下程序求a数组中所有元素的和,函数isprime用来判断自变量是否为素数。素数是只能被1和它本身整除且大于1的自然数。

#include main() { int i,a[10],*p=a,sum=0; printf(\"Enter 10 num:\\n\"); for(i=0;i<10;i++) scanf(\"%d\ for(i=0;i<10;i++) if(isprime(*(p+ (6) ))==1) {printf(\"%d\ sum+=*(a+i); } printf(\"\\nThe sum=%d\\n\}

isprime(int x) { int i; for(i=2;i<=x/2;i++) if(x%i==0) return(0); if(x>1) (7) ; else return(0); }

7. 以下两条if语句可合并成一条if语句为 (8) 。

if(a<=b) x=1; else y=2;

if(a>b) printf(\"****y=%d\\n\else printf(\"####x=%d\\n\

8. 在对文件进行操作的过程中,若要求文件的位置回到文件的开头,应当调用的函数是 (9) 函

数。

9. 若给fun函数的形参s传送字符串\"□□□□6354abc\",则函数的返回值是(10) 函数。

long fun(char s[]) { long n; int sign; for(;isspace(*s);s++);

sign=(*s=='-')?-1:1; if(*s=='+'||*s=='-')s++; for(n=0;isdigit(*s);s++) n=10*n+(*s-'0'); return sign*n; }

三、阅读下列程序,写出程序运行结果(每小题4分,共20分) [程序1]

void main() {char c1=97;

if(c1>='a'&&c1<='z') printf(\"%d,%c\ else printf(\"%c\}

运行结果为: 。 [程序2]

void main() { int a[10]={1,2,3,4,5,6,7,8,9,10}, *pa,*pb,x,i; for(i=0,pa=a,pb=a+9;i<5;i++,pa++,pb--) {x=*pa;*pa=*pb;*pb=x;} for(pa=a;pavoid main()

14

{int i,j,k;

for(i=0;i<5;i++)

{for(k=0;k<=5-i;k++)printf(\" \"); for(j=0;j<2*i-1;j++)printf(\"*\"); printf(\"\\n\"); } }

运行结果为: 。 [程序4]

void main() {char c;

while((c=getchar())!='\\n') switch(c-'1') { case 0: case 1:putchar(c+2); case 2:putchar(c+3);break; case 3:putchar(c+4);

default: putchar(c+1);break; } printf(\"\\n\");} 若从键盘输入321 运行结果为: 。 [程序5]

#include long fun(int n) { long s; if(n==1||n==2)s=2; else s=n+fun(n-1); return s; }

void main() { printf(\"%ld\\n\} 运行结果为: 。 四、编程题(共20分)

1.编写一个程序,从键盘上输入4个整数,输出其中的最小值 (6分)

2.求数列的前10项之和:2/1,3/2,5/3,8/5,13/8,21/13,„„。(7分) 3.编程,求一个3×3矩阵对角线之和。(7分)

参考答案

一、单项选择题

1. C 2.D 3.A 4.C 5.C 6.C 7.A 8.A 9.C 11.B 12.B 13.D 14.A 15.B 16.B 17.C 18.B 19.D 21.B 22.D 23.A 24.D 25.C 26.D 27.A 28.C 29.D 31.D 32.A 33.C 34.A 35.B 36.B 37.A 38.D 39.B 二、填空题

1. (1)COPY *.dat prn 2.(2)3 3.(3)10 9 8 4.(4)*(p+5) 5.(5)++p或p++ 6.(6)i (7)return(1) 7.(8)if(a<=b)

{x=1;printf(\"###x=%d\\n\ else {y=2;printf(\"***=%d\

15

10.C 20.A 30.A 40.D 8.(9)rewind() 9.(10)6354

三、阅读下列程序,写出程序运行结果 1. 97,b

2. 10 9 8 7 6 5 4 3 2 1 5. *

*** ***** ******* 6. 64534 5. 14

四、编程题

1. #include

void main()

{int num1,num2,num3,num4,min; printf(\"请输入四个整数:\");

scanf(\"%d,%d,%d,%d\

min=(num1>num2)?num2:num1; /*先找出前两个数的最小值*/ if(min>num3)min=num3; if(min>num4)min=num4;

printf(\"四个整数中的最小值为:%d\\n\}

2. #include void main() {int i,t,n=10;

float a=2,b=1,s=0; for(i=1;i<=n;i++) {s=s+a/b; t=a;

a=a+b; /*将前一项分子与分母之和作为下一项的分子*/ b=t;} /*将前一项分子作为下一项的分母*/ printf(\"数列的前10项之和为:%9.6f\\n\

}

3. #include void emppty() {float temp;

scanf(\"%f\}

main()

{float a[3][3],sum=0; int i,j;

/*输入3×3矩阵*/

printf(\"输入3×3矩阵:\\n\"); for(i=0;i<3;i++) for(j=0;j<3;j++)

{printf(\"请输入a[%d][%d]:\ scanf(\"%f\

16

}

/*求矩阵对角线元素之和*/ for(i=0;i<3;i++)

{sum+=a[i][i];}

printf(\"矩阵对角线元素之和为:%6.2f\\n\输出*/

}

注:关于本程序中的void empty()函数。如果使用整型数组,就不需要用void empty()函数。使用实型数组,如果没有此函数,在TurboC2.0环境下运行时,会出现错误提示: Scanf:floating point formats not limked Abnormal prpgram termination.

第3套 C语言程序设计笔试样题及参考答案

一、单项选择题(每题1分,共40分)

1. 按电子器件分类,第二代计算机主要是采用 1 作为逻辑开关元件。

A.电子管 B.中小规模集成电路 C.晶体管 D.大规模集成电路 2. 在下列各种进制的数据中,最大的数是 2 。

A.(5F)16 B. (88)10 C.(136)8 D.(1011101)2 3. 冯·诺依曼原理只要是指 3 。

A.运算的精确度 B.存储程序和自动控制 C.高速运算能力 D.智能化体系结构 4.以下关于计算机语言的描述,错误的是 4 。 A.在计算机语言中,汇编语言属于低级语言

B.FoxPro2.5b for Windows语言、C语言、Fortran90语言均属于高级语言 C.机器语言可以被计算机直接执行

D.所有计算机语言程序都必须被编译后才能在计算机上运行。 5. 以下 5 是多媒体计算机必备的设备。 A.视频卡 B.打印机 C.声卡 D.扫描仪 6. 通常说的硬盘容量为80G,指的是 6 。

A.80G bit B. 80G byte C.80G个字 D.80,000个字

7. 在Windows2000中,相同磁盘不同文件夹之间的文件复制操作可以 7 。 A.直接用鼠标将选定的文件拖动到目标文件中

B. 按住Ctrl健后用鼠标将选定的文件拖动到目标文件中

C. 按住Alt健后用鼠标将选定的文件拖动到目标文件中 D. 按住Shift健后用鼠标将选定的文件拖动到目标文件中

8. 在Windows2000中,利用回收站可以恢复 8 上被误删除的文件。 A.硬盘 B. 软盘 C.内存 D.光盘 9. 以下正确的E-mail地址是 9 。

A.www.sohu.com B.@spks.com C.spka@sohu.com D.spks.com@ 10.发现软盘上有文件已经感染上病毒,下列不能清除病毒的方法是 10 。 A.将软盘快速格式化 B.用有效的杀毒软件清除该软盘中的病毒 C.将软盘全面格式化 D.将软盘上所有的文件移动到硬盘中 11. 以下选项中合法的用户标识符是 11 。

A.long B._2Test C.3Dmax D.A.dat

12. 一个C语言程序是由 组成。 A. 若干过程 B. 若干子程序 C. 若干函数 D. 一个主程序和若干子程序

13. C语言中,要求参加运算的数必须是整数或字符的运算符是 13 。 A. / B. ! C. % D. = 14. int类型的数据取值范围是 14 。

17

A.0-255 B.-32768至32767 C.-256至255 D.0至65535 15. 下列属于C语言合法的字符常量是 15 。

A. '\\97' B. \"A\" C. '\' D. \"\\o\"

16. 若x为unsigned int型变量,则执行以下语句后的x的值为 16 。

x=65534;

printf(\"%d\

A.65534 B. 2 C.无定值 D.-2 17. 以下合法的赋值语句是 17 。

A.a=(5+b,d++,a+5); B.x=y=50 C.x+y D.c=int(a+b)

18.已知w=0,x=1,y=2,z=3,a=4,b=5;则执行语句(a=w>x)&&(b=y>z);后,a,b的值为 18 。 A.0,0 B.4,5 C.0,5 D.4,0

19. 设x、y、t均为int型变量,则执行语句:x=y=4;t=++x||++y;后,y的值为 19 。 A.不定值 B.5 C.4 D.1 20. 若有以下程序段,执行后的输出结果是 20 。 int a=3;

printf(\"%d\\n\

A.-6 B.12 C.0 D.-12 21. putchar函数可以向终端输出一个 21 。

A.整型变量表在式值 B.实行变量值 C.字符串 D.字符或字符型变量值 22. 函数fabs(x)的功能是 22 。

A.对x取整 B.对x取绝对值 C.对x取平方根 D.计算x的平方 23. 若给定条件表达式(m)?(a++):a- -则其中表达式m和 23 等价。

A.m==0 B.m==1 C.m!=0 D.m!=1 24. 为了避免嵌套的if-else的二义性,C语言规定,else与 24 配对。

A.与最外层的if B.其之前最近的不带else的if C.其之后最近的if D.与最近的{}之前的if 25. 定义如下变量和数组:

int i,x[3][3]={1,2,3,4,5,6,7,8,9};

下面语句的输出结果是 25 。 for(i=0;i<3;i++)printf(\"%2d\

A.1 5 9 B.1 4 7 C. 3 5 7 D.3 6 9 26. 若i为整型变量,则以下循环执行次数是 。

for(i=2;i==0;) printf(\"%d\

A.0次 B.1次 C.2次 D.无限次 27. 若有定义int x[10]={0,2,4};则数组x在内存中所占字节数为 26 。 A.3 B. 4 C.10 D.20 28. 若有以下程序执行后,输出的结果是 28 。 Char str[]=\"abc\\102\\r12\\\\\\";printf(\"%d\

A.9 B.10 C.12 D.15 29. 以下数组定义中不正确的是 29 。

A.int a[2][3]; B.int b[ ][3]={0,1,2,3,4};

C.int c[10][10]={0}; D.int d[3][ ]={{1,2},{3,4},{5,6}}; 30. 以下程序的输出结果为 30 。

#define M(x,y,z) x*y*z main()

18

{ int a=1,b=2,v=1; printf(\"%d\\n\

A.6 B.7 C.8 D.18 31. 以下是对函数的描述,不正确的是 31 。

A.调用函数时,实参可以是常量、表达式 B.调用函数时,将为形参分配内存单元C.调用函数时,实参于形参个数必须相同 D.调用函数时,形参必须是整数 32. 以下程序的输出结果是 32 。

main()

{int a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf(\"%d\

A.3 B.4 C.5 D.a[4]的地址 33. 若有程序段 int *p,a=6,b=1; p=&a;*p=10;a=a+b;执行该程序段后,a的值是 A.7 B.10 C.11 D.20 34. 若有以下语句:int c[4][5],(*p)[5]; p=c; 则能正确引用c数组元素的是 。 A.p+1 B.*(p+3) C.*(p+1)+3 D.*(p[0]+2)

35. 在调用函数时,若果实参是简单变量,它于对应形参之剑的数据传递方式是 35 。 A.地址传递 B.单向值传递

C.传递方式由用户指定 D.由实参传给形参,再由形参传给实参 36. 设有如下定义:

struct ks

{int a;float b}data,*p; 若有p=&data;,则对data中的a域的正确引用是:

A.(*p).a B.p.data.a C.p->data.a D.(*p).data.a 37. 以下枚举类型的定义中正确的是 36 。

A.enum a={one,two.three}; B. enum a{\"one\ C. enum a={\"one\ D. enum a={one=8,two=9,three}; 38. 以下各选项企图说明一种新类型名,其中正确的是 38 。

A.typedef al int; B. typedef a2= int; C. typedef int a3 D. typedef a4; int; 39. 在c语言中,用w+方式打开一个文件后,可以执行的文件操作是 A.可以任意读写 B.只读 C.只能先写后读 D.只写

40. 当顺利执行了文件关闭操作时,fclose函数的返回值是 40 。 A.0 B.Ture C.-1 D.1 二、填空题(每空2分,共20分)

1. 设有int a=5,b=9;则表达式!(b>a)||(a>4)的值为 (1) 。

2. 在Turbo C集成开发环境下,将当前文件以指定的文件名存盘的功能热键是 (2) 3. 在C标准库函数中,字符串处理函数的原型在 (3) 头文件中。 4. 从赋值语句wang.birth.year=2005;可以判断birth是 (4) 变量 5. 以下函数用来求两整数之和,并通过形参将结果传回。请填空。

void fun(int x,int y, z) {*z=x+y} 6. 有如下程序。

main()

{ unsigned int x=3,y=10; printf(\"%d\\n\} 由输出结果是

7. 设有下列结构变量sx的定义:

struct {long num;

char name[20];

union{float y;short z;}yz;

19

}sx;

则表达式sizeof(sx)的值是

8. 下面函数程序实现交换用它的两个整型变量x和y的值,在程序划线处填入相应的内容。。

#include 8

void main(void ) {

int x,y; scanf(\"%d,%d\swap( 9 ); printf(\"%d,%d\\n\}

void swap( 10 ) { int temp; temp=*x;*x=*y;*y=temp; }

三、阅读下列程序,写出程序运行结果(每小题4分,共20分) [程序1]

#include main() {int i,j,k;

for(i=1;i<5;i++)

{for(k=0;k<=4;k++)printf(\"□\"); for(j=0;j<2*i;j++)printf(\"#\"); printf(\"\\n\"); } }

运行结果为: 。 [程序2]

运行时假定从键盘输入数据为:10 9 8 7 6 5 4 3 2 1

#include main() { int i,str[10], *p=str;

for(i=0;i<10;i++) scanf(\"%d\ for(;--p>=str;) if(*p%2) printf(\"%3d\运行结果为: 。 [程序3]

#include void row(int n) { static int a=1; int b; for(b=1;b<=n;b++) printf(\"%5d\ printf(\"\\n\"); a++; }

void main() { int b; for(b=1;b<=5;b++) row(b);} 运行结果为: 。 [程序4]

在运行时从键盘输入1 #include

20

void main() { int k; scanf(\"%d\ switch(k) {case 1:printf(\"%d,%d\\n\ case 2:printf(\"%d,%d\\n\ case 3:printf(\"%d,%d\\n\ case 4:printf(\"%d,%d\\n\ default: printf(\"full!\\n\"); } }

运行结果为: 。 [程序5]

#include long subT(int n) { if(n==1||n==2)return 2; else return n+subT(n-1); }

void main()

{int x; x=subT(4); printf(\"%d\\n\} 运行结果为: 。 四、编程题(共20分)

1.输出100以内所有个位数为6且能被3整除的自然数。(如36,66,96„„) (6分) 2.编写函数,求级数S=1+2+3+4+„+n,并在主函数中求 y123123412345(7分) 12345612345673.根据以下程序框架,补充代码,求方阵两对角线元素只和及其转置矩阵。(7分) (要求:方阵用二维数组a表示,转置矩阵用t表示,s1,s2表示两对角线元素之和)

#include void main(void)

{ int a[3][3]={1,3,5,7,9,11,13,15,17}; int i,j,s1,s2,t[3][3]; „„ }

参考答案

一、单项选择题

1. C 2.A 3.B 4.D 5.C 6.B 7.B 8.A 9.C 10.D 11.B 12.C 13.C 14.B 15.C 16.A 17.A 18.C 19.C 20.D 21.D 22.B 23.C 24.B 25.C 26.A 27.D 28.A 29.D 30.B 31.D 32.C 33.C 34.D 35.B 36.A 37.D 38.C 39.C 40.A 二、填空题

1. (1)1 2.(2)F2 3.(3)string.h 4.(4)结构型或联合型 5.(5)int * 6.(6)13 7.(7)28 8.(8)void swap(int *,int *); (9)&x,&y; (10)int *x,int *y 三、阅读下列程序,写出程序运行结果 1. ## ####

2. 1 3 5 7 9 21

3. 1 2 4 ###### ######## 4. 1 1,1 1,2 2,1 -3,2 四、编程题 1. #include void main() { int i; for(i=1;i<=100;i++) if(i%10==6&&i%3==0) printf(\"%5d\} 5. 9 3 4 5 6 9 8 12 16 10 15 20 25 2. #include float fun(int); void main(){ float y; y=(fun(3)+fun(4)+fun(5))/(fun(6)+fun(7)); printf(\"%f\\n\} float fun(int n) { int i; float sum=0.0; for(i=1;i<=n;i++) sum=sum+i; return sum; } printf(\"%d,%d\\n\ for(i=0;i<3;i++) {for(j=0;j<3;j++) printf(\"%3d\ printf(\"\\n\"); } } 3. #include void main() {int a[3][3]={1,3,5,7,9,11,13,15,17}; int i,j,s1,s2,t[3][3]; s1=s2=0; for(i=0;i<3;i++) { for(j=0;j<3;j++) t[j][i]=a[i][j]; s1+=a[i][i]; s2+=a[i][2-i]; } 第4套 C语言程序设计笔试题及参考答案

一、单项选择题(每题 1 分,共40分)

1. 计算机在实现工业自动化方面的应用主要表现在____________________________。 A. 数据处理 B. 实时控制 C. 人工智能 D. 数值计算 2. 在下列各种进制的数据中, 最小的数是____________________________。 A.(101001)2 B.(53)8 C.(2B)16 D(44)10

3. 微型计算机系统采用总线结构对 CPU、存储器和处设进行连接。总线通常由

______________3部分组成。

A. 数据总线、信息总线和传输总线 B. 数据总线、地址总线和控制总线 C. 地址总线、运算总线和逻辑总线 D. 逻辑总线、传输总线和通信总线 4. 下列关于计算机语言的叙述中____________________________正确的是。 A. 在计算机语言中,只有机器语言属于低级语言

22

B. 高级语言源程序可以被计算机直接执行 C. C语言属于高级语言 D. 机器语言是与所用机器无关的语言 5. 下列设备中____________________________多媒体的必备部件。

A. 扫描仪 B. 声卡 C. 网卡 D. 软驱

6. 多任务机制是指操作系统可以控制____________时间分配,让计算机同时执行多个应用程序。

A.控制器 B. 运算器 C.CPU D.存储器

7. 在 Windows 系统 中,一个应用程序被最小化后,该应用程序将

_______________________。

A. 被终止执行 B. 暂停执行 C. 在前台执行 D. 被转入后台执行 8. 通常一台计算机要接入国际互联网,应安装的设备是____________________________。

A. 网络操作系统 B. 调制解调器或网卡 C. 网络查询工具 D. 浏览器 9. 下列 4项内容中,不属于Internet基本功能的是____________________________。

A. 电子邮件 B. 文件传输 C. 实时监测控制 D. 远程登录 10. 计算机病毒的主要危害是____________________________。 A. 损坏计算机硬盘 B. 破坏计算机显示器

C. 降低 CPU主频 D. 破坏计算机软件和数据

11. 结构化程序设计规定的 3种基本控制结构是____________________________。

A. 顺序、选择和转向 B. 层次、网状和循环 C. 模块、选择和循环 D. 顺序、选择和循环 12. 以下正确的 C语言标识符____________________________。

A. %x B. a+b C. a123 D. test !

13. 设整型变量 a的值为 2,下列表达式值为1的是____________________________。

A.a%3 B. a/3 C. --a D.a++

14. 设变量 a、b、c已定义并赋值,则下列表达式中符合 C语言语法规则的是____________。

A.a=5++ B.a=b=c++ C. a= %2 D.b=a+1=2 15. 下列式中,值不为4 的表达式是____________________________。 A. sizeof( unsigned long) B. sizeof( long)

C.sizeof(unsigned:int). D. sizeof(float)

16. 下列式中,最终运算结果的数据类型不是单精度的表达式是___________________________。

A. (int)(3 +3.0) B:le -3 C. (float) (3) D.(int)3.0 +3.0 17. 字符串\"ab\\x41 \\\\ 34cd\\ l02y\"的长度____________________________。

A.10 B.12 C.14 D.18 18. 设整型变量 x、y、z均为 2,表达式(x ++)+ (y ++)+ (z ++)的值是_______________________。 A.6 B.7 C.8 D.9

19. 设int a = 0,b = 0,c =0;c=++ a ||b ++;则 a,b,c值分别是_______________________。 A.0、2、0 B.1、1、1 C. 1、1、0 D. 1、0、1

20. 设有语句 scanf(\" %d,%d\;要使m、n的值依次为2、3,正确的输入是_______________________。 A.2□3↙ B.2,3↙ C.2;3↙ D. 2↙

3↙

21. 设整型变量 a,b 的值均为 8。 printf(\"%d,%d\",(a++,++b),b--);的输出是______。 A.8,8 B.8,7 C.9,9 D. 8,9

22. 在VC++中,仅能连续完成组建的操作热键是_______________________。

23

A.Alt+F7 B.Ctrl+F7 C.F7 D. Ctrl + F5

23. C标准库函数中,数学函数的原型在_______________________头文件中。 A. stdio.h B. math.h C. string.h D. ctype. h

24. 最适合解决选择结构\"若 a> = 0,则 b=1;否则 b= 0\"的语句是_______________________。 A.if B.if-else C.switch D嵌套的 if- else

25. 设 int x,y,z=4;x =y= ++ z;x =(y> z)?x+2: x++;则x的值是_______________________。

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

26. 设执行变量 y初值为 3,执行下列循环语句后,变量 y的值是_______________________。 do y ++;while(y ++ <4); A.3 B.4 C.5 D.6 27. 语句 while(! e);中的条件! e等价于_______________________。 A.e==0 B.e!=1 C. e!=0 D. ~e 28. 以下一维数组 a 的正确定义是_______________________。 A.int a(10); B.int n = 10,a[n]; C.int n ; D. #define N 10

int a[N]; scanf(―% d‖,&n);

int a[n];

29. 在执行 char str[10]= \"china\\n\\0\";strlen(str)的结果是_______________________。 A.5 B.6 C.7 D.8 30. 设有语句\"int a[]={3,4,5,9,8,7};\",则表达戎 a[1]-a[4]的值是_______________________。 A.-6: B6 C.- 4 D. 2 31. 设有定义:int s[] = {1,3,5,7,9),* p=&s[0];则值为7的表达式是_______________________。 A. * p+3 B. *p+ C. *(p+ 3) D. *(p+ 4)

32. 若有以下定义.则值为 4 的表达式是_______________________。 int a[]= {1,2,3,4,5,6,7,8,9,10},*p=a; A. p += 3 , *(p++) B.p+=3,*++p

C.p+=4,*p++

D.p+=4,++*p

33. C语言中的函数_______________________。

A. 可以嵌套定义 B. 不可以嵌套调用

C. 可以嵌套调用,但不能递归调用 D. 嵌套调用和递归调用均可 34.下列函数定义中,错误的是_______________________。

A.int f(int *pl,int p2) B. void f(int *pl, int p2)

{ * pl += p2;return(p2);} {pl+= p2;return(*p1);} C. f(int *p1,int p2) D.void f(int *pl, int p2)

{*pl+= p2;return(*p1);} { * pl += p2}

35. 设有结构体及其数组和指针变量的定义语句 struct {int x;}y[2],*p=y;

则下列表达式中不能正确表示结构体成员的是_______________________。 A.(* p).x B. *(p+1).x C. y[0].x D.(&y[1] ->x)

36. 若定义 union ex{int i;float f;char a[l0];}x;则 sizeof(x)的值是_________________。 A.4 B.6 C.10 D.16

37. 下列语句中,不能将文件型指针fp指向的文件内部指针置于文件头的语句是______________。

(注:假定能正确打开文件)

A.fp=fopen(\"abc. dat\",\"w\") B. rewind(fp} C.feof (fp) D. fseek( fp,OL,0))

24

38. 设有宏定义,

#define M(x) x<0?-1:x

则表达式\"M(3.0)+ 1\"的值是_______________________。

A:- 1 B.0 C.1 D.4

39. 下列语句中,不能正确地从键盘上读取单个宇符存入字符型变量ch的语句是_____________。

A. scanf(―%c\",&ch); B.ch = getchar(); C.ch = fgetc(stdin); D. fgetc土(stdin,&ch)

40. main函数可以带两个形参,一般分为 argc和 argv,其中 argv可以定义为______________。 A.int argv; B. char ** argv[]; C. char argv[]; D. char * argv[]; 二、填空题(每空 2 分,共20分)

1. 设int a = 3,b= 5;float x = 7.5,y=3.5;则表达式 (float)a + b/2 + ( int)x%(int)y; 的值是 (1) 。

2. 判断两个(float)变量x,z是否相等,一般用语句:if( (2) )。 3. 已知函数定义为 int ss(int a, float * p) {„„}

则此函数的两个参数类型分别是:整型、 (3) 。

4. 设a为 float型变量,则能将 a中的数值保留一位小数的表达式是 (4) 。 5. 设int a=012,b=11,c=3表达式a< <(c%b)的值是 (5) 。 6. 设有定义语句:

int a[][3]={{1,2,3},{4,5,6}},(*p)[3]=a;

则表达式*(*p+1)的值是 (6) 。 7. 执行下列语句后,a的值是 (7) 。

int a=12;a+=a-=a*a;

8. 下列程序的主要是计算并输出(1)×﹙1+2﹚×﹙1+2+3﹚ׄ×﹙1+2+„+10﹚将横线处

缺少的部分填上。 main()

{ float (8) ,x; int i,j;

for(i=0;i<11;i++) { (9) ;

for(j=0;j<=i;j++) (10) ; y=y*x; }

printf(―%f\\n‖,y); }

三、阅读下列程序,写出程序运行结果(每小题4分,共20分)

【程序1】 int w=2; int f(int x) { int y=1;

static int z=3; y++;z++;

25

return(x+y+z); } main() { int k;

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

printf(―%4d‖,f(w++));

}

运行结果为: 。 【程序2】

#include main()

{ int x=1,y=1,a=0,b=0; switch(x) { case 1:

switch(y) {

case 0:a++; case 1:b++; case 2:b++;break; }

case 2:a++;b++;break; case 3:a++;b++;

}

printf(―a=%d,b=%d\\n‖,a,b); }

运行结果为:

【程序3】程序运行时,假定从键盘输入:1234567890987654321↙

#include main()

{ int i,ch,a[8];

for(i=0;i<8;i++) a[i]=0; while((ch=getchar())!=‘\\n‘) if(ch>=‘0‘&&ch<=‘7‘)

a[ch-‗0‘]++; for(i=0;i<8;i+=2)

printf(―a[%d]=%d\\n‖,i,a[i]);

}

运行结果为: 。

【程序4】

#include

main()

{ int y[2][3]={9,8,7,6,5,4}; int m[2],k,j; for(k=0;k<2;k++) { m[k]=y[k][0];

26

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

if(y[k][j]printf(―%d\\n‖,m[k]);

}

运行结果为: 。

【程序5】

#include

void sub(char *,int,int); main()

{ static char s[10]=‖c-progranm‖; int num=5; sub(s,num,7); printf(―%s\\n‖,s); }

void sub(char *ss,int num1,int num2) { char t,*p;

p=ss+num2;ss=ss+num1; while(ss{t=*ss;*ss=*p;*p=t;ss++;p--;} }

运行结果为: 。

四、编程题(共20分)

1.编程,输入12个整数。按照从后向前的顺序,依次找出并输出其中能被7整除的所有整数,以及这些整数的和。(6分)

2.编程,输入一个3×3的矩阵,求两个对角线元素中的一个最大值。(7分) 3.根据以下框架编写程序,用递归函数按下列公式计算并输出。(7分) s(n)=12+22+32+„+n2 递归计算公式:s(n)= s(n-1)+n*n 递归结束条件:s(1)=1*1=1 #include float s(int); void main(void) { }

float s(int n) { }

27

参考答案 一、 单项选择题

1.B 2.A 3.B 4.C 5.B 6.C 7.D 8.B 9.C 10.D 11.D 12.C 13.C 14.B 15.C 16.A 17.A 18.A 19.D 20.B 21.A 22.C 23.B 24.B 25.B 26.C 27.A 28.D 29.B 30.C 31.C 32.A 33.D 34.B 35.B 36.C 37.C 38.D 39.D 40.D 二、填空题

1.(1)6.000000 2.(2)fabs(x-z)<1e-6 3.(3)指向浮点型指针 4.(4)(int)(a*10+0.5)/10.0 5. (5)80 6. (6)2 7. (7)-264 8. (8)y=1.0 (9)x=0.0 (10)x=x+j 三、阅读程序,写出程序运行结果 1.8 10 12 2. a=1,b=3 3. a[0]=1

a[2]=2 a[4]=2 a[6]=2 4.7

5.c-proargnm 四、编程题 【程序1】 #include main()

{ int i,sum=0,a[12]; for(i=0;i<12;i++) scanf(―%d‖,&a[i]); for(i=11;i>=0;i--)

if(a[i]%7==0) {sum+=a[i]; printf(―%d‖,a[i]); } printf(―\\nsum=%d\\n‖,sum); }

【程序2】

#include main()

{int a[3][3],imax; int i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++) scanf(―%d‖,&a[i][j]); imax=a[0][0]; for(i=1;i<3;i++)

if(imax28

【程序3】

#include float s(int); void main(void) { int n;

scanf(―%d‖,&n); printf(―s(%d)=%f\\n‖,n,s(n)); }

float s(int n) { float w; if(n==1) w=1.0; else w=s(n-1)+n*n; return(w); }

第5套 C语言程序设计笔试样题及参考答案

一、单项选择题(每题1分,共40分)

1.计算机软件系统一般包括____________________________。

A.系统软件和应用软件 B.系统软件和字处理软件 C.管理软件和应用软件 D.科学计算软件和应厢软件 2.将二进制数1000000l转换为十进制数应该是____________________________。

A.127 B.129 C.126 D.128 3.一台计算机字长是4个字节,表示____________________________。 A.能处理的字符串最多由4个英文字母组成 B.能处理的数值最大为4位十进制数9999

C.在CPU中作为一个整体加以传送的二进制数码为32位 D.在CPU中运算的结果最大为232

4.配置高速缓冲存储嚣(Cache)是为了解决____________________________。 A.内存储器与辅助存储器之间速度不匹配问题 B.CPU与内存储器之间速度不匹配问题 C.CPU与辅助存储嚣之间速度不匹配问题 D.主机与外设之间速度不匹配问题

5.下列关于计算机病毒的叙述中,正确的是____________________________。 A.计算机病毒只感染可执行文件 B.计算机病毒只感染文本文件

C.计算机病毒只能通过软件复制的方式进行传播 D.计算机病毒可以通过网络或读写盘等方式进行传播

6. Windows2000的文件结构是一种___________________________结构。 A.关系 B.网状 C.对象 D.树状

7. 在Windows2000环境下,PrintScreen键盘的作用是____________________________。

29

A.打印当前窗口的内容 B.打印屏幕内容

C.复制屏幕到剪贴板 D.复制当前窗口到剪贴板

8. Internet实现了分布在世界各地的各类网络互联,其最基础和核心的协议是

___________________。

A.TCP/IP B. FTP C.HTML D.HTTP

9.通常一台计算机要接入互联网,应该安装的设备是____________________________。 A.网络操作系统 B.调制解凋器或网卡 C.网络查询工具 D.浏览器

10.设在每屏1024×768个像素的强示器上显示一幅真彩色(24位)的图形,其显存容量至

要___________________________个字节。

A.1024×768×24 B.1024×768×2 C.1024×768×3 D.1024×768×12

11.C语言程序的基本单位是____________________________。 A.函数 B.标识符 C.表达式 D.语句

12.设int类型的数据长度为2字节,则该类型数据的取值范围是

____________________________。

A.0至65536 B.0至65535 C.-3267至32768 D.一32768至32767

13.在C语言中,逻辑值“真”是用____________________________表示的。 A.预定义为真值的宏 B.非零数 C.正数 D.非零整数 14.以下____________________________符合c语言语法的实型常量。

A.1.3E0.5 B.7E-2 C.3.14159eE D.E5

15.以下___________________________合法的一组用户定义标识符。 A.If B.turbo C.3CON D.void int _001 include k_3

16.以下____________________________符合C语言语法的赋值表达式。 A.d=8+e+f=d+a B.8+e=f=d C.d=f=8+e++ D.d=8+e++=d+7

17.若有定义 #define a 4

int x=0;float y=1.12;char z=’A’;

则下面错误的语句是____________________________。

A.a++ B.x++ C.++y D.++z

18.C语言对于嵌套if语句规定else总是_______________________匹配。

A.与最外层的if B.与之前最近的if C.与之前最近的不带else的if D.与最近的{}之前的if

19.若a,b,c均为int型变量,则执行以下语句后,a、b值分别为_________________________。 a=b=c=0: a++&&++b||c++;

A.1,0 B.0,1 C.1,1 D.0,0

20.设int a=3;下列表达式值等于0的是____________________________。 A.a&&(a>0) B.!a||a C.a%=a D.a>=a

21.设int a=5,b=2,c=3,d=4;则表达式a>b?a:c>d?c:d的值是____________________________。 A.2 B.3 C.4 D.5

22.在C语言中,设一表达式中包含有int,long,char和unsigned类型的变量和数据,则

这4种类型数据转换的规则是____________________________。

30

A.int->unsingned->long->char B.char->int->long->unsingned C. char->int->unsingned->long D.int->char->unsingned->long

23.若有语句scanf(”%d%d”,&a,&b);要使变量a,b分别得到10和20,正确的输入形

式为____________________________。

A.10 20 B.10,20 C.1020 D.10:20 24.以下4个选项中,不能看作C语言的一条语句是____________________________。 A.{;} B.a=1,b=1,c=1; C.if(x>0); D.if(b==1)k=2;n=3;

25.若k为整型变量,则下面while循环执行的次数为____________________________。 k=10;

while(k==0) k=k-1;

A. 0次 B. 1次 C. 10次 D.无限次

26.数组定义char a[10]={‘a‘,‘b‘,‘c‘}包括了____________________________元素 A.3 B. 9 C. 4 D.10

27.数组名作为实参传给被调用的函数时,形参获得的是

A.该数组第一个元素的值 B.该数组所有元素的值 C.该数组第一个元素的首地址 D.该数组所有元素的首地址 28.函数strlen(”1234\0xy“)的值为____________________________。 A.7 B. 8 C. 4 D.9

29源程序TEST.C经编译产生的目标文件和连接后产生的可执行文件是

____________________________。

A. TEST.bak和TEST.obj B. TEST.obj和TEST.exe C. TEST.ext和TEST.c D. TEST.bak和TEST.exe

30.以下存储类型只有在使用时才为该类型变量分配内存的是_________________________。 A.auto和static B.auto和register C tegister和static D.static和extern

3l.有以下定义 #include char a[10],*b=a;

不能给a数组输入字符串的语句是____________________________。 A.gets(a); B.gets(a[0]); C.gets(&a[0]); D.gets(b);

32.设int a[]={1,2,3},i,*p=a;根据定义及语法分析______________________是不正确的。 A.a[p-8] B.*(&a[i]) C. p[i] D.*(*(a+i)

33.下列选项中能够完整获取命令行参数的主函数格式是____________________________。 A. main(char argc,char *argv[]) B. void main(void)

C.main(int c,char *v[]) D.int main(int argc,char *argv)

34.若定义union uex{ int i;float f:char c;}ex;则sizof(ex)的值是___________________。 A.4 B.5 C.6 D.7

35.feof函数用来判断文件是否结束,如果文件没有结束,则返回值是___________________。 A.-1 B. 0 C.1 D.EOF

36.若定义unsigned int a=3,b=10; printf(―%d\n‖,a<<2|b==1); 则运行结果为___________________。

A.13 B.12 C.8 D.14 37.若有以下定义

31

#define SQR(x)((x)*(x)) main() {float b=3.0;

printf(\"sqr=%.2f\\nn\

则运行结果为___________________。

A.sqr=3.0 B.sqr=9.0 C.sqr=10 D.sqr=10.00 38.设有定义

enum team{my,your=3,his,her=his+5};

则枚举元素my,your,her的值分别是___________________。

A.0 3 2 B.1 3 4 C.0 3 9 D.0 3 5 39.fread和fwrite函数常用来要求一次输入/输出___________________数据。 A.一个整数 B.一个实数 C.一个字节 D.一组 40.已知赋值语句Wang.year=2005;判断Wang是___________________类型的变量。 A.字符或文件 B.整型和枚举 C.联合或结构 D.实型或指针 二、填空题(每空2分,共20分)

1.已知a=10,b=20,则表达式!a#include (2) void main(void) {

int i,n; float x;

scanf(”%f,%d”,&x,&n); for(i=1;i<=n;i++)

printf(”%d,%e\n”,i, (3) ) ; }

double pow(float x,int n) { int i; double p=1.0

for(i=1; (4) ;i++) p*=x; return(p); }

3.求ex=1+x+x2/2!+„„+xn/n!前n+1项之和。 #include void main(void) {

float exp,x,t; int i,n;

scanf(”%f,%d”,&x,&n); (5) ;

exp=1.0;

32

for(i=1;i<=n;i++) {

if(t<1e_6) (6) ;

(7) ; exp+=t;

}

printf(\"\n%f\",exp); }

4将已知数据按升序排列。 #include void main(void)

{ int i,j,iMin,a[10]={4,3,5,1,10,-8,2,27,7,9},iTemp; for(i=0;i<9;i++) { iMin= (8) for(j=i+1;j<10;j++) if( (9) )iMin=j; if(iMin!=i) { iTemp=a[i]; (10) ; a[iMin]=iTemp; } }

for(i=0;i<10;i++)

printf(\"%4d\",a[i]); }

三、阅读下列程序,写出程序运行结果(每小题4分,共20分) 【程序1】运行时假定键盘输入字符串为“2004”。

#include void main(void) { int n=0; char c;

while((c=getchar())!='\\n') if(c>='0'&&c<='9') n=n*10+c-'0';

printf(\"value=%d\\n\; }

运行结果为: 。 【程序2】 #include void main() {

int num[9]= {399,398,397,396,395,299,290,311,301}; int score[9]={81,85,59,77,90,66,89,93,73};

33

int iMax,iPos,i; iPos=0;

iMax=score[iPos]; for(i=1;i<9;i++) if(score[i]>iMax) {iPos=i;

iMax=score[iPos]; }

printf(\"num=%d,score=%d\; }

运行结果为: 。

【程序3】运行时假定键盘输入数据为:l 2 3 4 5 6 7 8 9 10。 #include void main(void) {

int a[10],i; int *p; p=a;

for(i=0;i<10;i++) scanf(\"%d\; for(;--p>=a;) if(*p%2)

printf(\"%3d\; }

运行结果为: 。

【程序4】运行时假定键盘输入字符为:AxByCz。 #include #include void main() {

char str[80]; int i; gets(str);

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

if(str[i]>='a' && str[i]<='z') str[i]-=32; else if(str[i]>='A' && str[i]<='Z') str[i]+=32; puts(str); }

运行结果为: 。 【程序5】 #include void row(void) {

static int a=1;

34

int b; for(b=1;b<=a;b++) printf(\"%5d\printf(\"\\n\"); a++; }

void main() { int a;

for(a=1;a<=5;a++) row(); }

运行结果为: 。 四、编程题(共20分)

1.设某班有35人参加C语言考试,统计输出考试成绩不及格的人数及其百分比。(6分) 2.根据以下程序框架,编写子函数,实现交换两个整型变量x和y的值。(7分) #include void swap(int *,int *); void I main(void) {

int x,y;

scanf(―%d,%d‖,&x,&y); swap(&x,&y); printf(―%d,%d‖,x,y); }

void swap( ) {

}

3.求3×3方阵两对角线元素之和及其转置矩阵。(7分)

(要求:方阵用二维数组a表示,转置矩阵用t表示,s1,s2表示两对角线元素之和)。

35

参考答案 一、单项选择题

l.A 2.B 3.C 4.B 5.D 6.D 7.C 8.A 9.B 10.C 11.A 12.D 13.B 14.B 15.B 16.C 17.A 18.C 19.A 20.C 21.D 22.C 23.A 24.D 25.A 26.D 27.C 28.C 29.B 30.B 3l.B 32.D 33.C 34.A 35.B 36.B 37.D 38.C 39.D 40.C 二、填空题 1.(1) 1

2.(2)double pow(float,int); (3)pow(x,i) (4)i<=n 3.(5)t=1.0 (6)break (7)t*=x/i

4.(8) i (9)a[iMin]>a[j] (10)a[i]=a[iMin] 三、阅读程序,写出程序运行结果 【程序1】value=2004 【程序2】num=311,score=93 【程序3】9 7 5 3 1 【程序4】aXbYcZ 【程序5】1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 四、编程题 1.#include void main() {int i;

float score[35],percent;

int count=0; for(i=0;i<35;i++) scanf(\"%f\; for(i=0;i<35;i++) if(score[i]<60) count++;

percent=(float)count/35;

printf(\"%d,%5.1f\; }

2.#include void swap(int *,int *); void main(void) { int x,y;

scanf(\"%d,%d\; swap(&x,&y);

36

printf(―%d,%d‖,x,y);} void swap(int *px,int *py) { int temp; temp=*px; *px=*py; *py=temp; }

3. #include void main() {

int a[3][3]={1,3,5,7,9,11,13,15,17},t[3][3]; int i,j,s1=0,s2=0; for(i=0;i<3;i++) {

for(j=0;j<3;j++) {

t[j][i]=a[i][j]; }

s1+=a[i][i]; s2+=a[i][2-i]; }

printf(\"%d,%d\\n\; for(i=0;i<3;i++) {for(j=0;j<3;j++) printf(\"%3d\; printf(\"\\n\"); } }

2008年1月安徽省计算机水平考试二级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) 多媒体技术将各种媒体以数字化的方式集成在一起

37

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. 在32位机中,double、long、unsigned int、char类型数据所占字节数分别是 14 。 A) 8、2、4、1 B) 2、8、4、1 C) 4、2、8、1 D) 8、4、4、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\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;,则逻辑表达式x22. 若变量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\ B) scanf(\"%d%d%f\

C) scanf(\"%d%6d%6.2f\ D) scanf(\"%d%d%f\"; &x; &y; &z);

38

24. 执行下面的程序:

main()

{int x=-1; printf(\"%d,%x,%u\则输出结果是 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'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\

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\

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\

该程序的输出结果是 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

39

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\根据上述定义,能输出字母M的语句是 39 。

A) printf(\"%c\\n\ B) printf(\"%c\\n\C) printf(\"%c\\n\ D) printf(\"%c\\n\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\,从键盘输入数据10□20□30<回车>后,y的值是 (3) 。

4. 已知char s1[10]=\"ABCD\,则strlen(strcpy(s1, s2))的值是 (4) 。

5. 有函数调用语句fun(a, b+c, (d, e));,则该函数调用语句中含有的实参的个数是 (5) 。 6. 以下程序运行的结果是 (6) 。 main()

{char a[ ]=\"12345\

int s=0; for(p=a; *p!='\\0'; p++) s=10*s+*p-'0'; printf(\"%d\\n\ }

7. 执行程序段char str[ ]=\"abc\\0def\\0ghi\"; char *p; p=str; printf(\"%s\,则该程序段运行结果是 (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\ } 运行结果是 (10) 。

三、阅读理解题(每小题4分,共20分)

40

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\

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\

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\

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\}

5. 下面程序运行的结果 。 int f(int n) { if(n==2) return 1; else return f(n-2)+n;} main() { printf(\"%d\\n\} 四、编程题(共20分)

1. (6分)设计程序计算并输出1111。 35992. (7分)设计程序输出下面图形(要求用嵌套循环语句实现)

55555 4444 333 22

41

1

3. (7分)设计程序输入一个字符串并判断其是否是“顺序串”(从小到大或从大到小排序,如:AABccd或dccBAA),“是”则打印“Yes”,“否”则打印“No”。 #include #include main() {

char s[100]; ... }

2008年6月安徽省计算机水平考试二级C语言试题

一、单项选择题(每题1分,共40分)

1. 计算机能够自动工作,主要是因为采用了___________。

A) 二进制数制 B) 大规模集成电路 C) 程序设计语言 D) 存储程序控制原理 2. 下列数值中最大的是___________。 A) (10110)2 B) (120)8 C) (70)10 D) (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

42

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的值为______。 A)8 B)13 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语言表达式中与代数式

1(ab)h计算结果不相符的是2______。 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为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 (xy) z=y; C)z=xy?x:y; 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.执行下面程序:

43

#include #include main()

{ char s[21]=\"ABC\";

strcat(s,\"6789\"); printf(\"%s\\n\则输出结果是______。 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\p=&std;

则下面各输出语句中错误的是______。

44

A)printf(\"%d\ B)printf(\"%d\C)printf(\"%d\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\后,输出结果是______。

4.已知字符'A'的ASCII值为十进制65,变量c为字符型,则执行语句c='A'+'6'-'3'; printf(\"%c\\n\后,输出结果是______。

5.已知int x=0,y=1,z=2;,则执行语句if (!x) z=-1; if (y) z=-2; printf(\"%d\\n\后,输出结果是______。

6.有程序段char str[ ]=\"ab\\070\\\\14\\n\"; printf(\"%d\\n\执行后输出结果是______。 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\}

以上程序的运行结果为______。

45

[程序2]

#include \"stdio.h\" main()

{ int i,j,a[10]={3,4,5,6,7,8,9,10,11,12}; for(i=0;i<10;i++) { for(j=2;jif (j>=a[i]) printf(\"%3d\ }

printf(\"\\n\");}

以上程序的运行结果为______。 [程序3]

#include \"stdio.h\" int func(int n) { int s;

if (n<=1) s=1; else s=2*func(n-1); return s; }

main() { int i,s=0;

for(i=1;i<=5;i++) s=s+func(i); printf(\"s=%d\\n\}

以上程序的运行结果为______。 [程序4]

#include \"stdio.h\" void func(int i) { static int x=0; int y=0; x=x+i; y=y+i;

printf(\"%d,%d\\n\}

main() { int i;

for(i=10;i<30;i=i+10) func(i); }

以上程序的运行结果为______。 [程序5]

#include \"stdio.h\" main()

46

{ char str[ ]=\"Welcome to AnHui!\ p=str;

while (*p!='\\0')

{if (*p>='A' && *p<='Z') *p=*p+('a'-'A'); p++;}

printf(\"%s\\n\}

以上程序的运行结果为______。 四、编程题(共20分)

1.(6分)编写程序从键盘上任意输入3个学生的成绩,并按从大到小的顺序输出。 2.(7分)编写程序输出下面图形(要求用多重循环结构实现)。 ********* ******* ***** *** *

3.(7分)Fibinacci数列为:1,1,2,3,5,8,„,从第3个数开始,每个数都是前两个数的和。编写程序将Fibinacci数列前20项逆序存储在数组中并输出该数组。

47

2010年安徽省计算机水平考试二级C语言试题

一、单项选择题(每题1分,共40分)

1.计算机系统中存储信息的基本单位 1 。

A)位 B)字节 C)字 D)字符 2.超市使用的POS机收费系统,属于计算机在 2 在什么方面的应用。 A)数据处理 B)科学计算 C)实时控制 D)计算机辅助

3.下面是PC机常用的4种外设接口,其中U盘、移动硬盘、MP3、MP4等均能连接的接口是 3 。

A)RS—232 B)IEEE—1394 C)USB D)IDE 4.下面各种进制的数据中,最大的数是 4 。

A)(1000010)2 B) (67)10 C) (77)8 D) (3A)16 5.下列关于Windows操作系统通配符的说法中,正确的是 5 。

A)?代表多个字母 B) *代表多个字母 C)?代表任意多个字母 D)*代表任意多个字符

6.某电子邮件的地址为:wyg@163.com,其中wyg是 6 。

A)域名 B)地区名 C)用户名 D)国家名 7.多媒体计算机指 7 。

A)安装了光驱并具有较高运算能力的计算机 B)安装了多种媒体播放器软件的计算机

C)能够处理音频、视频等多媒体信息的计算机 D)能够访问Internet的计算机

8.下列选项中 8 不是有效的信息安全控制方法。 A)用户口令设置 B)用户权限设置 C)数据加密 D)增加网络带宽

9.下列选项中,防止U盘感染病毒的有效方法是 9 。 A)对U盘进行写保护 B)对U盘进行分区

C)保持U盘的清洁 D)不要与有毒的U盘放一起 10.编程属于软件开发过程中的 10 阶段。

A)实现 B)定义 C)分析 D)维护 11.C语言程序总是从 11 开始执行。

A)第一条语句 B)第一个函数 C)main函数 D)#include 12.下列 12 是正确的赋值语句。

A)10=K; B)K=K*15; C)K+47=K D)K=7=6+1 13.下列程序段输出的结果是 13 。 int m=7,n;

n=m++; printf(“%d,%d\\n”,n,m);

A)7,8 B)7,7 C)8,7 D)8,8 14.下列不能作为变量名的是 14 。

A)abc B)x39 C)NBA D)for 15.设有int a=2,b=6; ,则表达式a*b/5的值是 15 。

A)2 B)3 C)2.4 D)3.6 16.设有int y=0; ,执行语句y=5,y*2;后变量y的值是 16 。 A)0 B)5 C)10 D)20

48

17.设有float a=7.5,b=3.0; ,则表达式(int)a/(int)b的值 17 。 A)2.4 B)2.5 C)3 D)2 18.设有int a=2,b=3,c=4; ,则逻辑表达式a20.若变量c为char类型,下列选项中能正确判断出c为小写字母的表达式是 20 。 A)'a'<=c<='z' B)(c>='a')||(c<='z')

C)('a'<=c)and('z'>=c) D)(c>='a')&&(c<='z') 21.设有int x,y,z;则泄露选项中能将x,y中较大者赋给变量z的语句是 21 。 A)if(x>y)z=y; B) if(xy?x:y; D) z=x void main() {

char c='y';

if(c>='x')printf(\"%c\ if(c>='y')printf(\"%c\ if(c>='z')printf(\"%c\}输出结果是 22 。

A)y B)yy C)yyy D)xy 23.下列叙述中正确的是 23 。

A)在switch语句中,不一定使用break语句B) break语句必须与switch语句中的case配合使用

C)在switch语句中必须使用default D)break语句只能用于switch语句 24.执行语句for(i=1;i<9;i+=3);后变量i的值是 24 。

A)8 B) 9 C)10 D)11 25.下列选项中能正确定义并初始化二维数组的是 25 。 A) int a[ ][3]={1,2,3,4,5,6}; B) int a[ ][ ]={1,2,3,4,5,6}; C) int a[2][ ]={1,2,3,4,5,6}; D) int a[2][3]=“1,2,3,4,5,6”;

26.设有char array[ ]=\"Welecome\";则数组array所占的存储单元是 26 。 A) 6个字节 B)7个字节 C)8个字节 D)9个字节 27.下列程序段的输出结果是 27 。 char s[ ]=“\\\\x41xyz”; printf (“%d\\n”,strlen(s));

A)7 B)8 C)9 D)10

28.设有int m[ ]={5,4,3,2,1},i=4;则下列对数组m元素的引用中错误的是 28 。 A) m[i] B) m[4] C) m[m[0]] D) m[m[i]]

29.设有函数调用语句fun((a1,a2),( a3,a4,a5),a6);则该调用语句中实参的个数是 29 。 A) 6 B)5 C)4 D)3 30.设有以下函数首部: int func(double x[100],int n)

如果在程序中需要对该函数进行声明,则下列选项中错误的是 30 。

49

A) int func(double x[ ],int n); B) int func(double,int ); C) int func(double a[100],int b); D) int func(double *x,int n); 31.C语言规定,函数返回值的类型是由 31 决定。

A) return语句中的表达式值的类型 B) 调用该函数的主调用函数类型 C) 调用该函数时传递的实参类型 D)定义该函数时指定的函数类型 32.若要说明a是整型变量,pa为指向a的整型指针变量,则下列选项中正确的是 32 。 A) int a, *pa=&a; B) int a,pa=&a; C)int a,*pa=a; D) int *pa=&a, a; 33.设有int s[ ]={1,23,5,7,9},*p=s;则下列选项中值为7的表达式是 33 。 A)*p+2 B)*p+3 C)*(p+3) D)*(p+2) 34.对于类型相同的两个指针变量之间,能进行的运算是 34 。 A) % B) = C) ! D) / 35.设有 Struct student { char name[21]; int age; char sex;

}std={“Li Ming”,19,’M’},*p; P=&std;

则下列输出语句中错误的是 35 。 A) printf(“%d”,(*p).age); B)printf(“%d”,p->age) C) printf(“%d”,std.age); D) printf(“%d”,p.age); 36.设有union data { int i ; char c ; float f ;} a ;

int b ;

则下列语句中正确的是 36 。

A)a=1.6 B) a.c='\\101' C) b=a D) printf(“%d\\n”,a) 37.设有

Typedef struct ABC

{ long a ; int b; char c[2];}NEW; 则下列叙述中正确的是 37 。

A)以上的说明形式非法 B)ABC是一个结构体变量 C)NEW是个结构体类型名 D)NEW是个结构体变量

38.设有int x=28; ,则执行语句printf(“%d\\n”,x>>2);后的输出结果是 38 。 A)7 B)14 C)28 D)56 39.C语言中,根据数据的组织方式,文件可分为ASCII文件和 39 。 A)二进制文件 B)只读文件 C)只写文件 D)随机文件 40.以读写方式打开一个已存在的文件data.txt,下列选项中正确的是 40 。

A) FILE *fp;fp=fopen(“data.txt”,”rb”); B) FILE *fp;fp=fopen(“data.txt”,”w”); C) FILE *fp;fp=fopen(“data.txt”,”r”); D) FILE *fp;fp=fopen(“data.txt”,”r+”); 二、填空题(每空2分,共20分)

1.结构化程序设计的三种基本结构分别是:顺序结构、 (1) 和循环结构。 2.设有int a=65;,执行语句printf(\"%x\\n\后的输出结果是 (2) 。

3.设有double x=56.789; ,则执行语句printf(\"%.2f\\n\后的输出结果是 (3) 。 4.设有int a =27;,则执行语句a%=4;后a的值是 (4) 。 5设有int a[3][4]={{1,2},{0,1},{4,6,8,10}};,则a[1][1]+a[2][2 ]的值是 (5) 。

50

6.C标准库函数中,常用的字符串比较函数是 (6) 。

7.表示变量存储方式的关键字auto、 (7) 、register和extern. 8.下列程序的输出结果是 (8) 。 #include void main()

{ char s[ ]={“Computer”},*p=s;

printf(“%c”,*p+5);}

9.设有#define M(x) x*x,则M(1+2)的值是 (9) 。 10.设有enum weekday {Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};,则枚举元素Saturday对应的数值是 (10) 。 三、阅读理解题(每题4分,共20分)

1.运行一下程序是从键盘输入2010,其运行结果是 。 #include void main() { int year,leap=0;

scanf(\"%d\

if((year%4==0&& year%100!=0)||(year%400==0))leap=1; if(leap==1) printf(\"%d is a leap year!\\n\else printf(\"%d is not a leap year!\\n\}

2.以下程序的运行结果是 。 #include void main( ) { char ch='c'; switch(ch)

{ case 'a':

case 'A': case 'b': case 'B': printf(\"good!\\n\");break; case 'c': case 'C': printf(\"pass!\\n\");break; case 'd': case 'D': printf(\"warning!\\n\");break; default: printf(\"error!\\n\");}}

3.以下程序的运行结果是 。 #include void main()

{ char s[ ]= \"I/ love /C/Programming/\"; int i , num=0;

for ( i=0;s[ i ] !='\\0 '; i++)

if(s[i]!='/'&& s[i+1] =='/') num++; printf(\"num = %d\\n\ }

4.以下程序的运行结果是 。

51

#include int f(int n) { int m;

if( n ==0||n ==1) m= 3; else m=n*n-f(n-2); return(m); }

void main() { int n=2,m; m=f(n);

printf (\" n=%d,m =%d\\n\

}

5.以下程序的运行结果是 。 #include void main() { char s[ ]= \"ABCDEFGH\" ,b[ ] = \"abCDefGh\";

char *p1,*p2; printf(\"%s\\n\printf(\"%s\\n\

for (p1=s,p2=b;*p1!='\\0';p1++,p2++) if(*p1==*p2) printf(\"%c\printf(\"\\n \"); }

四、编程题(第1题6分,第2、3题各7分,共20分)

1、输入两个正整数a 和 b 整除,输出商,否则输出商和余数。 2、利用循环语句编写程序,计算s = 1+11+111+1111并输出结果。 3、输入10位学生的成绩,输出学生成绩及其所对应的名次。 成绩 90 85 90 95 80 88 70 100 95 95 名次 5 8 5 2 9 7 10 1 2 2 例如,下面有10位学生的成绩及计算后的对应的名次:

其中“95分”排名第2,由于有3个“95分”,下一个较小的成绩“90分”则排名第5。 说明:算法及输出形式不限,相同的成绩及名次可以不重复输出。

2011上半年安徽省计算机水平考试二级C语言试题

一、单项选择题(每题1分,共40分)

1.计算机最主要的工作特点是____1____。

A) 程序存储与自动控制 B) 高速度和高精度 C) 可靠性和可用性 D) 具有记忆能力 2. 下列各种进制的数中,最小的数是___2___。

A) (75)8 B) (3F)16 C) (62)10 D) (111100)2

3.如果你正在使用计算机时突然断电,则__3_____中的信息全部丢失。 A)ROM 和 RAM B)RAM C)ROM D) CMOS 4.计算机软件通常包括____4____。

A)算法及数据结构 B)程序和数据结构 C)程序、数据及相关文档 D)文档及数据

52

5.在 windows 中,将当前窗口作为图片复制到剪贴板时,应按____5____键。 A)Alt+Print Screen B)Ctrl+Ins C)Print Screen D)Alt+Esc 6.多媒体计算机(MPC)是指能____6______的计算机。

A)接收多种媒体信息 B)输出多种媒体信息 C)将多补媒休信息融为一体进行处理 D)播放 CD 音

7.当用户在浏览网页时,若鼠标指针变成手状,通常表明此处有___7_____。 A)图片 B)超级链接 C)声音 D)E-mail 地址 8.目前,__8______被认为是最有效的信息安全控制方法。 A)设置口令 B)设置用户权限 C)限制对计算机的物理接触 D)数据加密 9.下列方式中,___9_____一般不会感染计算机病毒。 A)在网络上下载软件,直接使用 B)使用来历不明软盘上的软件,以了解其功能 C)在本机的电子邮箱中发现有奇怪的邮件,打开看看究竟 D)安装购买的正版软件 10.下列选项中,合法的 IP 地址是_____10_______。

A)210.45.16 B)210.45.266.68 C)210.45.66.8 D)210,45,203,243 11._11___是合法的用户自定义标识符。 A)ah-spks B)double C) D)_myapple 12.一个 C 程序的执行是从_____12_______。

A) 本程序的 main 函数开始,到 main 函数结束

B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序的 main 函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序 main 函数结束

13.源程序 program.c 经编译产生的目标文件和连接后产生的可执行文件是___13______。 A) program.bak 和 program.obj B) program.obj 和 program.exe C) program.ext 和 program.c D) program.bak 和 program.exe 14.执行语句:int a=1,b=0,c;c=a>0||++b;b 的值最后为__14___。 A) 0 B)1 C) 2 D) 不确定 15.在 C 程序中,用_15____表示逻辑值―真‖ 。 A)1 B)非 0 的数 C)非 1 的数 D) 大于 0 的数 16.若变量已正确定义,语句―if(x>y) z=0; else z=1;‖和__16___等价。

A)z=(x>y)?1:0; B)z=x>y; C)z=x<=y; D)x<=y?0:1;

17.设变量定义为 int a, b;,执行下列语句时,输入__17___,则 a 和 b 的值都是 10。 scanf(\"%d, %d\; A)10 10 B)10, 10 C)a=10 b=10 D)a=10, b=10 18.下列程序执行后的输出结果是__18____。 main() { int x='d'; printf(\"%c\\n\ A) G B) H C) E D) J

19.设有说明语句:char a='\\123';则变量 a__19___。

A) 包含 1 个字符 B) 包含 2 个字符 C) 包含 3 个字符 D) 说明不合法 20.有如下程序段: int a=3,b=15; float f=7.5; printf(\"%.1f\执行该程序段后,运算结果为:___20___

A) 11.5 B) 11.0 C) 11 D) 12.0

21.若变量 ch 为 char 类型,能正确判断出 ch 为大写字母的表达式是_21___。 A) 'A'<=ch<='Z' B) (ch>='A')||(ch<='Z') C) ('A'<=ch)and ('Z'>=ch) D) (ch>='A')&&(ch<='Z') 22.以下程序的输出结果是 22 。

53

#include #include

main() { char st[20]=\"2008\\0\\\\\\"; printf(\"%d,%d\\n\ A) 7,7 B) 4,20 C) 10,20 D) 20,20 23.执行语句:int a;a='1'+1.5;后,正确的叙述是__23____。 A) a 的值是字符'3' B) a 的值是浮点型

C) 不允许字符型和浮点型相加 D) a 的值是字符'1'的 ASCII 值加上 1。 24.设 int 类型的数据长度为 2 个字节,则 unsigned int 类型数据的取值范围是 24 。 A)均为 2 个字节 B)0 至 65535 C)-32768 至 32767 D)-256 至 255 25.执行语句: main() { int i=3,j; j=++i+i++; printf(\"%d\\n\ 25 A) 6 B) 7 C) 8 D) 9

26.若 a 为 int 类型,且其值为 5,则执行表达式 a+=a-=a*a 后,a 的值是 26 。 A) -5 B) –40 C) –15 D) 不确定 27.不正确的赋值或赋初值的方式是 27 。

A)char str[ ]= \"Hello 2006! \"; B)char str[20]; str=\"Hello 2006! \"; C)char *p=\"Hello 2006! \"; D)char *p; p=\"Hello 2006! \"; 28.数组定义为 int a[10][10]; 则数组 a 有 28 个数组元素。 A)100 B)81 C)20 D)121

29.在 C 程序中,若对函数类型未加说明,则函数的隐含类型为 29 。 A)int B)double C)void D)char

30.整型变量 x 和 y 的值相等且为非 0 值,则下面表达式中结果为零的是 30 。 A) x||y B) x|y C) x&y D) x^y 31.以下叙述正确的是 31 。

A) do-while 语句构成的循环不能用其它语句构成的循环来代替。 B) do-while 语句构成的循环只能用 break 语句退出。

C) 用 do-while 语句构成的循环,在 while 后的表达式为非零时结束循环。 D) 用 do-while 语句构成的循环,在 while 后的表达式为零时结束循环。 32.有以下循环: int i ; for(i=0;i<10;i++) i++; 循环次数为 32 。 A) 10 B) 5 C) 6 D)7

33.语句 while(!end);中的条件!end 等价于 33 。

A)end==0 B)end!=1 C)end!=0 D)~end

34.运行程序:#define Tap(X) 2*X+1 main() { int a=6,k=2,m=1; a+=Tap(k+m);

printf(\"%d\\n\则输出结果是 34 A) 12 B) 13 C) 7 D) 6

35.若有如下定义: int a=211,*b=&a; 则 printf(\"%d\\n\的输出结果为 35 。 A) 无确定值 B) a 的地址 C)212 D) 211

36.若有定义语句 int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a; 则不是对 a 数组元素的正确引用是 36 。

A)a[p-a] B)*(&a[i]) C) *(*(a+i)) D) *p

37.以下语句运行后结果为 37 。 char *st=\"how are you\"; printf(\"%s\\n\ A) How are you B) are you C) you D) 空串

38.以下语句中,指针 p 的 data 域正确的引用方式为 38 。 struct node { int data; struct node *lchild,*rchild; }Btree; Btree *p;

A) p.data B) p->data C)(*p)->data D) p[data]

54

39.函数调用语句 fseek(fp,10,1)的含义是 39 。

A)将文件指针移到距离文件头 10 个字节处 B)将文件指针移到距离文件尾 10 个字节处

C)将文件指针从当前位置后移 10 个字节 D)将文件指针从当前位置前移 10 个字节

40.以下关于文件的说法错误的是 40 。

A)C系统把文件当作一个―流‖,按字节进行处理 B)文件在读写之前必须打开,读写结束必须关闭

C)feof 函数可判断文件指针是否处于文件结束位置,如是则返回值为0,否则为1 D)文件可按字节,字符串,数据块为单位读写,文件也可按指定的格式进行读写 二、填空题(每空2分,共20分)

1.执行语句:int a=0,b=1;则 a++>b?++a:b 值是 (1) 。

2.程序可以分为三种基本结构, 即 (2) 、分支结构、循环结构。 3.条件判断语句包括 if 语句和 (3) 语句。

4.printf(\"%5.4f\\n\;输出为 (4) 。 5.表达式 1<0<2 的值是 (5) 。

6.int a=-2;printf(\"%u\输出为 (6) 。

7.设有以下定义: typedef struct { char t[10]; union {int a;float f;}ufo; }String; String s; strcpy(s.t, \"12345\");则 sizeof(s)的值为_ (7) 。 8.下面的程序输出结果是 (8) 。 #include

int sum(int n) { int i,s=0; for(i=1;i9.以下语句执行后输出 (9) 。 main() { int *p; char s[]=\"Happy New Year!\p=s+6;c=++p; printf(\"%c\

10.C文件按编码方式分为 ASCII 文件和 (10) 。

三、阅读下列程序,写出程序运行结果(每小题4分,共20分) 1.以下程序的输出结果是_________ #include \"stdio.h\" main()

{ int i,j;

for(i=0;i<=3;i++) { for(j=0;jprintf(\"%d\ printf(\"*\\n\"); } }

2.以下程序的输出结果是_________ #include \"stdio.h\" int f(int c)

{ static int a=10;

int b=++a; return (a+b+c); }

55

main()

{printf(\"%d\

3.以下程序的输出结果是_________ #include \"stdio.h\" void f(int *x,int y) { --*x;

y++;} main( )

{ int x=3,y=0;

f(&x,y);

printf(\"%d,%d\

4.以下程序的输出结果是_________ #include \"stdio.h\" main()

{ char *s={\"Computer-Level-Test\ for(p=s;*p!=NULL;p++)

{ if(*p=='-') printf(\"\\n\");

else if(*p<='Z' && *p>='A')

printf(\"%c\ else

printf(\"%c\ }

5.以下程序的输出结果是_________ #include \"stdio.h\" int fun(int n)

{ if(n<10) return n;

else return (n%10)*fun(n/10); } main()

{ printf(\"%d\ } 四、编程题(共20分)

1.编程输出 100 以内所有6的倍数及它们的和。

2.已知字符串 char s[50]= \"Iamstudent.\请编写程序将字符 a 插入到 student 之前,结果为 \"Iamastudent.\"。 程序框架如下 #include main() { char s[50]= \"Iamstudent.\"; … } 3. 编写程序打印以下图形: (必须使用循环结构,直接输出不给分)。 1 23 456 7890

2011年下半年全国高等学校(安徽考区)计算机水平考试试卷

一、单项选择题(每题1分,共40分)

1.在计算机应用领域中,英文缩写“OA”的中文含义是__________。

A)计算机辅助制造 B)办公自动化 C)计算机辅助教学 D)个人计算机 2.下列选项中,属于主机范畴的是___________。

56

A)光盘 B)打印机 C)U盘 D)内存 3.与十进制数100不等值的数是__________。

A) (1011011)2 B) (1100100)2 C) (144)8 D) (64)16 4.下列有关Windows“文件”的叙述,不正确的是_________。

A) 文件夹中既可以存放文件,又可以存放文件夹 B) 文件夹中不能存放同名文件 C) 不同文件夹中可以存放同名文件

D) 名称相同的文件和文件夹可以存放在同一文件夹中

5.在Windows中右键单击文件后,在弹出的快捷方式中选择“发送到”→“桌面快捷方式”,则_________。

A)移动该文件到桌面 B)复制该文件到桌面 C)在桌面建立快捷图标 D)从桌面发送电子邮件

6.最古老、最基本的一种信息保护措施是_________。

A)病毒防护 B)防火墙 C)加密 D)入侵检测 7.在计算机多媒体技术中,ASCII码属于__________媒体。 A)感觉 B)表示 C)储存 D)传输 8.下列有关计算机病毒的叙述,不正确的是__________。 A)计算机病毒可以把自身复制到内存

B)长期不使用感染计算机病毒的计算机,计算机病毒可以自动消失 C)计算机病毒可以潜伏在文件中,并不立即发作

D)计算机病毒可以侵占系统资源,影响系统运行性能 9.网址http://www.ah.edu.cn中http表示________。

A)用户名 B)主机的IP地址或域名 C)超文本传输协议 D)资源在主机上的存放路径 10.用高级程序设计语言编写的程序称为_________。

A)源程序 B)可执行程序 C)伪代码程序 D)目标程序 11.以下选项中叙述正确的是____________。 A)C语言程序总是从第一个定义的函数开始执行

B)在C语言程序中,被调用的函数必须在main()函数中声明 C)C语言程序总是从main()函数开始执行

D)C语言程序中的main()函数必须放在程序的开始部分

12.C语言程序的三种基本结构是顺序结构、选择结构和________结构。 A)循环 B)递归 C)转移 D)嵌套

13.以下选项中不属于C语言的基本数据类型____________。 A)int B)double C)char D)bool 14.以下选项中正确的C语言标识符是_________。

A)2b B)x__1 C)a@b D)3#h 15.以下选项中关于C语言的叙述 错误 的是____________。 A)变量不能使用大写字母命名

B)在一个表示中可以出现不同类型的变量 C)可以将一个字符型常量赋值给一个整型变量 D)可以将一个整型常量赋值给一个实型变量

16.以下选项中,和语句k=n++;等价的是___________。

A)k=n,n=n+1; B)n=n+1,k=n; C)k=++n; D)k=n+1; 17.已知:int i=3,j=2;,则执行语句j*=i+2;printf(“%d”,j);后,输出结果是________。 A)8 B)10 C)12 D)14

57

18.已知:int a=2,b=3,c;,则执行语句c=(a+2,b+2);后,输出结果是__________。 A)2 B)3 C)4 D)5 19.已知:int x,y;float z;,若要给变量x,y,z输入数据,以下正确的输入语句是______。 A)scanf(\"%d,%d,%d\ B)scanf(\"%d,%d,%f\C)scanf(\"%d,%d,%f\ D)scanf(\"%2d,%2d,%3.2f\20.华氏温度F和摄氏温度C的关系是c=5/9(F-32)。已知:float c,f;,由华氏温度F求摄氏温度C的不正确的复制表达式是_______。

A)c=5/9(f-32) B)c=5.0/9*(f-32) C)c=5*(f-32)/9 D)c=(float)5/9*(f-32) 21.一个C程序中要调用sqrt()函数时,应在程序中包含的头文件是________。 A)stdio.h B)math.h C)string.h D)stdlib.h 22.已知:char c='a';,则执行语句printf(\"%c\",c-32);后,输出结果是________。 A)A B)65 C)97 D)出错

23.能正确表示逻辑关系“a≥5或a≤﹣1”的C语言表达式是_________。

A)a>=5.or .a<=﹣1 B)a>=5.and.a<=﹣1 C)a>=5&&a<=﹣1 D)a>=5||a<=﹣1 24.已知:int i=7;则表达式9<=i<=20的值是___________。

A)0 B)1 C)19 D)表达式不正确

25.已知:int a=3,b=6,c=1;则执行语句(a>b)&&(c=b+2);后,c的值是_________。 A)0 B)1 C)6 D)8 26.if(表达式)„„;语句中的表达式___________。

A)只能是关系表达式 B)只能是逻辑表达式 C)只能是关系表达式或逻辑表达式 C)可以是任何表达式

27.已知:int k=1;则语句while(k<=5) k++;中循环体语句执行的次数是_________。 A)0 B)4 C)5 D)6 28.执行下面程序后,输出结果是____________。 #include void main() {

int x,y;

for(x=1,y=10;xprintf(\"%d\\n\}

A) 5 B)6 C)4 D)死循环 29.已知以下程序 int p;

do{ scanf(―%d‖,&p);}while(p>=100);

此处循环的结束条件是_________。

A)p的值大于100 B)P的值大于等于100 C)P的值小于100 D)P 的值小于等于100 30.已知:int a[8]={1,2,3,4,5,6,7,8},x;,则执行语句x=a[2]+a[4];后,x的值是_________。

A)8 B)6 C)7 D)3 31.对一维数组初始化正确的语句是_________。

A)int s[4]={0,1,2,3,4}; B)int s[]={0,1,2,3,4}; C)int s[4];s{0,1,2,3,4}; D) int s[];s{0,1,2,3,4}; 32.已知:char s[20];以下正确的语句是__________。

A) s=\"Merry Christmas\"; B)s[20]= \"Merry Christmas\";

58

C)strcpy(s, \"Merry Christmas\"); D)strcpy(\"Merry Christmas\

33.已知:char a[3][10]={ \"heifei\,能正确显示字符'q'的语句是___________。

A)printf(\"%c\",a[1][2]); B)printf(\"%c\C)printf(\"%c\ D)printf(\"%c\34.执行以下程序后,输出结果是__________。 #include void swap(int *x,int *y) { int t; t=*x,*x=*y,*y=t; } void main( ) { int a=12,b=24; swap(&a,&b);

printf(\"%d,%d\",a,b);}

A)12,24 B)12,12 C)24,12 D)24,24 35.若调用函数时用数组名作为实参,则传递给形参的是___________。

A)数组首地址 B)数组的第一个元素值 C)数组中全部元素的值 D)数组元素的个数 36.执行以下程序后,输出结果是______________。

#include void main( )

{ int a[6]={4,2,10,5,20,7},*p=a;

printf(\"%d\

}

A)2 B)3 C)6 D)10 37.执行以下程序后,输出结果是______。

#define SQ(a) a*a #include void main( ) { int a=3;

printf(\"%d\}

A) 1 B)3 C)6 D)9 38.已知:

struct student { int number;

char name[10]; char sex; }s;

则以下叙述中正确的是______________。

A)struct是类型名 B)s是类型名 C)s是结构体变量 D)student是结构体变量 39.已知:int a=15;,执行语句a=a<<2;后,变量a的值是____________。

A)20 B)40 C)60 D)80

40.若要打开已存在的文本文件abc.txt,并对此文件进行读、写操作,则正确的语句是

59

____________。

A)fopen(\"abc.txt\ B) fopen(\"abc.txt\C)fopen(\"abc.txt\ D) fopen(\"abc.txt\二.填空题(每空2分,共20分)

1.已知int x=8,y=3;,则执行语句x%=y;后x的值是____________。

2.已知int a=7,b=2;,则执行语句printf(\"%d\后的输出结果是_____________。 3.执行语句printf(\"%.4f\后的结果是________________。

4.已知int x=010;,则执行语句printf(\"%d\后的输出结果是______________。 5.数学条件式“207.已知int a[4][3]={{1,2,3},{3,4,5},{4,5,6},{5,6,7}};,则表达式a[2][1]+a[3][2]的值是________________。

8.已知int a[10]={19,23,44,17,37,28,49,36},*p=a;,则表达值为37的数组元素的表达式*(p+______)。

9.已知 char str[ ]= \"input\";,则printf(\"%s\后的输出结果是_____________。 10.已知: struct student {

int id

char name[20]; int sex; }wang;

假设sizeof(int)等于4,则sizeof(wang)的值是___________。 三.阅读题(每题4分,共20分)

1.以下程序的运行结果是___________。 #include void main( ) {

int score=85; switch(score/10) {

case 10: case 9: printf(\"A\"); break; case 8: printf(\"B\"); break; case 7: printf(\"C\"); break; case 6: printf(\"D\"); break; default: printf(\"E\"); break;

}

}

2.下面程序运行后,输入2011,12,24<回车>,程序的运行结果是_____________。 #include void main( ) {

int a,b,c,t;

60

scanf(\"%d,%d,%d\if(aprintf(\"%d>=%d>=%d\3.以下程序运行结果是___________。 #include void main( ) {

int i,j;

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

for(j=1;j<=i;j++) printf(\"*\"); }

4.以下程序的运行结果是____________。 #include void scan(char s[]) { int i=0; while(s[i]<='9'&&s[i]>='0') i++; s[i]='\\0'; }

void main() { char s[]=\"2012 year\"; scan(s); printf(\"%s\}

5.以下程序的运行结果是_____________。 #include int f(int n) {

if(n==1)

return 1; else

return 2*f(n-1)+2;

}

void main( ) {

printf(\"%d\\n\printf(\"%d\}

四、编程题(第一题6分,第二、三题7分,共20分)

1.(6分)设计程序从键盘输入两个整数,打印输出这两个数中的较小值。

2(7分)利用循环语句编写程序,计算11+111+211+311+„„+2011并输出结果。

61

3.(7分)设有未完成的函数: char GetChar(char c)

{ char s[ ]= \"9038571426\" „„ }

字符串s中无序的存储了10个数字字符,没有重复。函数的功能是:

1) 如果字符c不是数字字符,函数原样返回该字符;

2) 在s中查找字符c并返回其在s中的前一个字符。如果该字符位于s的最前面

(字符‘9’),则返回最后一个字符‘6’。 例如;

GetChar ('4')得到字符'1',GetChar ('T')得到字符'T' 请设计并完成改函数。

2012年上半年全国高等学校(安徽考区)计算机水平考试试卷

一. 单项选择题(每题1分,共40分)

1. 利用计算机管理科技情报资料,属于计算机在_______方面的应用。 A)数据处理 B)科学计算 C)实时控制 D)人工智能 2.下列关于计算机的叙述,正确的是_________。

A)计算机的主机只包括CPU B)计算机主要的工作特点是储存程序与自动控制 C)计算机必须具有硬盘才能工作 D)内存和外存中的数据均可由CPU直接读取 3.ASCII码是_______。

A)国际标准信息交换码 B)欧洲标准信息交换码 C)中国标准信息交换码 D)美国标准信息交换码

4.使用Cache可以提高计算机运行速度,这主要是因为________。 A)Cache增大了内存的容量 B) Cache扩大了硬盘的容量 C)Cache缩短了CPU的等待时间 D)Cache可以存放程序和数据 5.操作系统的主要功能是_______。

A)管理系统所有的软、硬件资源 B)实现软、硬件交换 C)把源程序转换为目标程序 D)进行数据处理 6.在windows 中,用户可以同时打开多个窗口,此时_______。 A)所有窗口的程序都处于后台运行状态 B)所有窗口的程序都处于前台运行状态

C)只能有一个窗口处于激活状态,它的标题栏颜色与众不同

D)只能有一个窗口处于前台运行状态,而其余窗口的程序则处于停止运行状态 7.计算机病毒主要造成_______的破坏。 A)软盘 B)磁盘驱动器 C)硬盘 D)程序和数据 8.多媒体技术的特性不包括______。 A)集成性 B)艺术性 C)交互性 D)数字化 9.域名与IP地址通过________服务器相互交换。 A)DNS B)www C)E-mail D)FTP 10.计算机能直接执行的程序是______。 A)源程序 B)机器语言程序 C)高级语言程序 D)汇编语言程序 11.以下选项中,不属于C语言结构化程序设计三种基本结构的是_______。 A)选择结构 B)顺序结构 C)递归结构 D)循环结构

62

12.以下选项中,可以作为C语言用户标识符的一组是_______-。 A) void、define、WORO B)a3_b3、_123、xyz C)For、_abc、case D)2a、Do、sizeof 13.已知:char a='\\70';,则变量a________。

A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明非法 14.已知:float x=2,y;,则表达式y=x+3/2的值是________。 A)3.5 B)3.0 C)2.0 D)1.0 15.已知:int a=1,b=2,c=3,d=4;,则执行语句a>b && ++c>=d;后,变量c的值是________。 A)4 B)3 C)1 D)不正确 16.C语言中,运算对象必须是整型数值的运算符是________。 A)% B)/ C)< D) !

a2b217.以下选项中,数学式 1/2sinc正确表达式是__________。 A)1/2sin(sqrt(a^2+b^2)/fabs(c)) B) 0.5sin(sqrt(a^2+b^2)/fabs(c)) C) 1/2*sin(sqrt(a*a+b*b)/fabs(c)) D)1.0/2*sin(sqrt(a*a+b*b)/fabs(c)) 18.以下选项中,能正确表示逻辑关系:“a≥10 或a≤0”的C语言表达式是______。 A﹚a>=0||a<=10 B﹚a≥10||a≤0 C﹚a>=10 && a<=0 D﹚a>=10||a<=0 19.已知:int x;,这表达式!x等价于_______。 A)x==0 B)x!=0 C)x==1 D)x!=1 20.已知:int i=10,j=1;,则执行语句printf(“%d,%d”,i--,++j);后,输出结果是______。 A)9,2 B)10,2 C)9,1 D)10,1 21.已知:int a=5;,执行语句a=3*5,a*4,a+5;后,变量a的值是_________。 A)45 B)20 C)15 D)10 22.已知:int x,y,t;,则语句:t=x,x=y,y=t;的功能是________。 A)将x和y按从大到小排列 B)将x和y按从小到大排列 C)交换x和y的值 D)语法错误 23.已知:float x;int y;,用语句scanf(“%f,%d”,&x,&y);输入变量x,y的值,正确的输入是_________。

A)1.25,2 B)1.25 2 C)1.25:2 D)1.25;2

24.已知:int x=1,y=2,z;则执行语句z=x>y?x--:y++;后,变量z的值是_________。 A)0 B)1 C)2 D)3

25.执行以下程序后,输出结果是____________。 #include void main() {

int x=1,a=0,b=0; switch(x)

{ case 0:b++;

case 1:a++;

case 2:a++;b++;} printf(\"%d,%d\",a,b); }

63

A)2,1 B)1,1 C)1,0 D)2,2

26.以下选项中,有关for循环正确的描述是_________。 A)for循环只能用于循环次数已经确定的情况 B)for循环先执行循环体语句,后判断循环条件 C)在for循环中,不能用break语句跳出循环体

D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 27.已知:int x=0,y=10;while(x void main() { int i,s=0;

for(i=1;i<=6;i++) { if(i%3==0) continue; s=s+i; }

printf(\"%d\\n\",s);}

A)0 B)9 C)12 D)21

29.以下选项中关于数组定义和初始化,错误的是__________。 A)int a[5]={1,2,3,4,5} B)int a[5]={1,2,3}

C)int a[]={1,2,3,4,5} D)int a[3]={1,2,3,4,,5} 30.已知:char b[20];若要从键盘输入字符串“hello World!”给b,则正确的输入语句是_____________。

A)scanf(\"%c\",b); B)scanf(\"%s\",b[20]); C)gets(b); D)gets(b[20]); 31.下面程序段是给数组所有的元素输入数据,请选择正确答案填入。 int a[10],i=0;

while(i<10){scanf(\"%d\",_31_);i++;}

A)a+i B)&a[i+1] C)*a+i D)&a+i

32.若用数组名作为函数调用时的实参,则实际上传递给形参的是___________。

A)数组首地址 B)数组的第一元素值 C)数组中全部元素的值 D)数组元素的个数 33.已知主调函数中有以下声明: int a=1,b=2;

float fun(int x,int *y);

则在主调函数中可以正确调用此函数的语句是___________。

A) fun(a); B)fun(a,&b); C)fun(*a,*b); D)fun(&a,a+b); 34.已知函数定义: int sub(long x,float y) {

return x+y; }

则当此函数调用结束后,返回给主函数的值类型是________。 A)int B)char C)float D)double

64

35.已知:char s[10],*p=s;,以下选项中错误的语句是_________。

A)p=s+5; B)s=p+s; C)s[2]=p[4]; D)*p=s[0];

36.已知p1、p2是指向同一个整型数组指针变量,则以下表达式无意义的是__________。 A)p1-p2 B)p1+p2 C)p1>p2 D)p1=p2 37.已知:int i,j=8,*p=&i;,则与i=j;等价的语句是___________。 A)i=*p; B)*p=j; C)i=&j; D)i=**p; 38.已知: struct st{ int num; char sex; float score;

}stud,*p=&stud;

则对于结构体变量stud的成员num正确的引用是_________。

A)stud->num B)st.num C)p->num D)p.num 39.执行以下程序后,输出结果是_________。 #include

#define MA(X) X*(X+1) void main() {

int a=1,b=2;

printf(\"%d\",MA(a+b)); }

A)7 B)9 C)12 D)18

40.在C语言中,若使用“r+”方式打开文件,以下选项中错误的是___________。 A)文件必须存在 B)可以进行读操作 C)可以进行写操作 D)只能进行读操作 二.填空题(每空2分,共20分)

1.字符'0'的ASCII码值为十进制数48,执行语句printf(\"%d\",'9');后,输出结果是____________。

2.设int a=6,b=7,c;,执行语句c=(a%5)+(b / 3);后,变量c的值是________。 3.设int a=1,b=1,c=1;,表达式a-b>c || b==c的值是_________。 4.设 x=5;,执行语句while(x>0) --x;后,x的值是________。 5.已知char s[10]= \"abcd\",t[]=\"efg\";,则执行strcat(s,t);printf(\"%s\",s);后,输出结果为__________。

6.已知char arr[]=\"China\";,则系统为数组arr分配的储存空间是____________字节。 7.已知int x[][3]={1,3,5,7,9,11,13,15,17};,则数组x的行数是____________。 8.已知int a[5]={1,3,6,10,15},*p1=&a[1],*p2=&a[4];,则*p2 - *p1的值是_________。 9.有以下定义 struct cat {

char c[4]; float b; }Kitty;

则表达式sizeof(Kitty)的值是__________。

65

10.已知:int a=6,b=5;,则表达式a&b的值是_________。 三、阅读理解题(每题4分,共20分) 1.以下程序的运行结果是__________。 #include void main() {

int a=1,b=2,c=3; if(a>b)c=1;

else if(a==b)c=0; else c= -1; printf(\"c=%d\",c); }

2.以下程序的运行结果是__________。 #include void main() {

int i=5,s=1; do{

s=s*i; i --;

}while(i>2);

printf(\"s=%d\",s); }

3.以下程序的运行结果是_________。 #include void main() {

char s[]=\"12345\"; int d=0,i; for(i=0;s[i]!=‘\\0’;i++) d=d*10+s[i]-‘0’;

printf(“d=%d”,d); }

4.以下程序的运行结果是_______。 #include int a=1,b=2; void fun() {

a*=b; b+=a; printf(\"%d,%d\"a,b);}

void main() {

int a=10,b=20; fun();

printf(\"%d,%d\",a,b);

66

}

5.以下程序运行的结果是_____。 #include int isalpha(char c) {

if((c>='a'&&c<='z') ||(c>='A'&&c<='Z'))

return 1; else

return 0; }

void main() {

char s[]=\"li na won the champion .\";

int i;

s[0]=s[0]-32; /*转化为大写字母*/ for(i=1;s[i]!= '\\0';i++)

if(!isalpha(s[i-1])&& isalpha(s[i])) s[i]=s[i]-32;

printf(\"%s\\n\",s); }

四、编程题(第一题6分,第2,3题各7分,共20分)

1.编程从键盘输入一个正整数a,判断该数的奇偶性,若为奇数输出\"odd\",若为偶数输出\"even\"。

2.编程输出所有三位正整数中各位数字之和等于10的数。

3.猜数游戏:计算机产生一个1~1000之间的随机整数,用户输入一个正整数,判断是否与计算机产生的随机数相同。若猜中,输出所猜次数和该数,若没猜中,输出“Sorry,you are failed!”,用户一共有10次猜数的机会。 编号函数int Guess(int n)完成猜数功能:参数n是计算机产生的随机数,用户输入一个所猜的正整数x,判断是否与n相等,若x与n相等,返回所猜次数;若x比n小,输出“too small!”;若x比n大,输出“too big!”。没猜中可以继续,但最多可猜10次,若10次都没猜中,则返回0。 #include #include int Guess(int n) { }

void main() {

int n,count; n=rand()%1000+1; count=Guess(n); if(count==0)

printf(“Sorry,you are failed!\\n”);

67

else

printf(“Congratulation!You guess %d time,the number is %d\\n”,count,n); }

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. feof() 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=2.937775 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]=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\");

2. (7分) main() {int i, j; for(i=5; i>=1; i--) {for(j=1; j 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\"); } } 68

else printf(\"Yes\\n\"); } } } } 2008年6月安徽省计算机水平考试二级C语言试题参考答案

一、单项选择题

1.D 2.B 3.B 4.A 5.D 6.C 7.B 8.C 9.A 10.A 11.A 12.C 13.B 14.A 15.A 16.B 17.D 18.B 19.A 20.C 21.B 22.C 23.D 24.B 25.D 26.C 27.D 28.D 29.A 30.B 31.A 32.A 33.C 34.D 35.B 36.C 37.C 38.B 39.D 40.A 二、填空题

1. 17 2. 1 3. 123.47 4. D 5. -2 6. 7 7. 数组名a 8. 3 9. 8 10. 8 三、阅读下列程序,写出程序运行结果 1. a=1,b=3,c=2 四、编程题 1. #include main() { int a,b,c,t; scanf(―%d%d%d‖,&a,&b,&c); if (a main() { int f[20],k,t; f[0]=f[1]=1; for(k=2;k<20;k++) f[k]=f[k-1]+f[k-2]; for(k=0;k<10;k++) { t=f[k];f[k]=f[19-k];f[19-k]=t;} for (k=0;k<20;k++) { if (k%5==0) printf(\"\\n\"); printf(\"%5d\ } } 2. #include main() { int k,j; for(k=1;k<=5;k++) { for(j=1;j<=k;j++) printf(\" \"); for(j=1;j<=11-2*k;j++) printf(\"*\"); printf(\"\\n\"); } } 2. 3 5 7 11 7. s=31 8. 10,10 30,20 5. welcome to anui! 2010年安徽省计算机水平考试二级C语言试题参考答案

一、单项选择题

1. B 2.A 3.C 4.B 5.D 6.C 7.C 8.D 9.A 10.A 11.C 12.B 13.A 14.D 15.A 16.B 17.D 18.C 19.B 20.D 21.C 22.B 23.A 24.C 25.C 26.D 27.A 28.C 29.D 30.B 31.D 32.A 33.C 34.B 35.D 36.B 37.C 38.A 39.A 40.D

69

二、填空题

1. 分支结构 2. 41 3. 56.79 4. 3 5. 9 6. strcmp 7. static 8. H 9. 5 10. 6 三、阅读下列程序,写出程序运行结果 1. 2010 is not a leap year 3. num=1 5. ABCDEFGH abCDefGh 2. pass! 4. n=2,m=1 CDG 四、编程题

1. #include void main()

{ int a,b; scanf(\"%d,%d\

printf(―商是%d‖,a/b);

if(a%b!=0) printf(―余数是%d‖,a%b); printf(―\\n‖); }

2. #include void main() {

int j,sum=0,t=0; for(j=1;j<5;j++) { t=t*10; t=t+1; sum+=t;

printf(\"%d+\ } printf(\"\\b=%d\\n\}

解法二

#include #include void main() {int i,j,a,s=0; for (i=1;i<5;i++) { a=0; for(j=i;j>0;j--) a=a+pow(10,j-1); s=s+a; }

printf(\"s=1+11+111+1111=%4d\ printf(\"\\n\"); } 3. #include void main()

{int a[11],rank[11]; int i,j,t;

70

printf(\"请输入10个学生的成绩:\\n\");

for(i=0;i<10;i++)scanf(\"%d\for(i=0;i<10;i++) { t=1;

for(j=0;j<10;j++)if(a[i]printf(\"成绩:\");

for(i=0;i<10;i++) printf(\"%4d\ printf(\"名次:\");

for(i=0;i<10;i++) printf(\"%4d\}

2011年上半年安徽省计算机水平考试二级C语言试题参考答案

一、单项选择题

1. A 2.D 3.B 4.C 5.A 6.C 7.B 8.D 9.D 10.C 11.D 12.A 13.B 14.A 15.B 16.C 17.B 18.C 19.A 20.B 21.D 22.B 23.D 24.B 25.C 26.B 27.B 28.A 29.A 30.D 31.D 32.B 33.A 34.A 35.D 36.C 37.B 38.B 39.C 40.C 二、填空题

1. 1 2. 顺序 3. SWITCH 4. 123456.1235 5. 1

6. 65534 7. 14 8. 204 9. Y 10. 二进制文件 三、阅读程序题 1. * 1* 22* 333* 四、编程题

1、main() { int i,s=0; clrscr();

for(i=0;i<100;i++) { if(i%6==0&&i!=0) {printf(\"%d\\ }

printf(\"\\ns=%d\\n\ }

2、#include main()

{ char s[50]=\"Iamstudent.\"; int n,i,j;

char c='a'; n=strlen(s);

71

2. 51 3. 2,0 4. computer level test 5. 16 for(i=0;iif(s[i]=='s'){j=i;break;} for(i=n-1;i>=j;i--) s[i+1]=s[i]; s[j]=c;

s[n+1]='\\0'; printf(\"%s\\n\ }

3、 main()

{ int i,j,m=1; clrscr();

for(i=1;i<=4;i++) { for(j=1;j<=i;j++) { if(m==10) m=0; printf(\"%d\ if(j==i) printf(\"\\n\"); } } }

2011年下半年安徽省计算机水平考试二级C语言试题参考答案 参考答案

一、单项选择题

1. B 2.D 3.A 4.D 5.C 6.C 7.B 8.B 9.C 10.A 11.C 12.A 13.D 14.B 15.A 16.A 17.B 18.D 19.C 20.A 21.B 22.A 23.D 24.B 25.B 26.C 27.C 28.B 29.B 30.A 31.B 32.C 33.A 34.C 35.A 36.D 37.D 38.C 39.C 40.B 二、填空题

1. 2 2. 3 3.2012.2012 4.8 5.x>20&&x<30 6. 3 7.12 8.4 9.put 10.28 三、阅读题 1. B

2. 2011>=24>=12 3.****** 4.2012 5.1 22

四、编程题 1.#include void main() {

2. #include void main() { 72

int a,b; printf(\"请输入两个整数:\"); scanf(\"%d,%d\ if(a3. #include char gchar(char c)

{ char s[ ]=\"9038571426\"; int i;

if(c>='0'&&c<='9') { for(i=0;i<10;i++) { if(c==s[i]&&i==0) { return s[9];} else if(c==s[i]){ return s[i-1];} } } else return c; }

void main() { char x,y; scanf(\"%c\ y=gchar(x); printf(\"%c\}

2012年上半年安徽省计算机水平考试二级C语言试题参考答案 参考答案

一、单项选择题

1. A 2.B 3.D 4.C 5.A 6.C 7.D 8.B 9.A 10.B 11.C 12.B 13.A 14.B 15.B 16.A 17.D 18.D 19.A 20.B 21.C 22.C 23.A 24.C 25.A 26.C 27.D 28.C 29.D 30.C 31.A 32.A 33.B 34. A 35.B 36.B 37.B 38.C 39.B 40.D 二、填空题

1.57 2.3 3.1 4.0 5.abcdefg 6.6 7.3 8.12 9.8 10.4 三、阅读理解 1.c=-1 2.s=60 3.d=12345 4.2,410,20

5.Li Na Won The Champion .

73

四、编程题

#include void main() { int a; printf(\"请输入一个正整数:\"); scanf(\"%d\ if(a%2==0) printf(\"even\\n\"); else printf(\"odd\\n\"); } 2. #include void main() { int i,a,b,c; for(i=100;i<=999;i++) { a=i/100; b=i/10%10; c=i%10; if(a+b+c==10)printf(\"%5d\ } printf(\"\\n\"); }

3. #include #include int Guess(int n) { int x,count=0;

while(count<10) { scanf(\"%d\ if(x==n){count++;break;} else if(x>n) printf(\"too big!\"); else printf(\"too small!\"); count++; }

if(count>=10)return 0; else return count; }

void main() {

int n,count;

n=rand()%1000+1; count=Guess(n); if(count==0)

printf(\"Sorry,you are failed!\\n\"); else

printf(\"Congratulation!You guess %d time,the number is %d\\n\}

74

因篇幅问题不能全部显示,请点此查看更多更全内容

Top