1、1 单项选择 = 题号:13167 以下叙述中正确的是( ) 。 A、程序设计的任务就是确定所用算法 B、程序设计的任务就是确定所用数据结构 C、顺序,转移,选择程序设计的任务就是编写程序代码并上机调试 D、以上三种说法都不完整 答案: D 题号:13162 计算机能直接执行的程序是( ) 。 A、可执行程序 B、源程序 C、汇编程序 D、目标程序 答案: A 题号:13171 下列叙述中正确的是( ) 。 A、C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束 B、可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C、main可作为用户标识符,用以命名任意一个
2、函数作为主函数 D、C语言程序将从源程序中第一个函数开始执行 答案: A 题号:13165 在算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算 法的( ) 。 A、确定性 B、正当性 C、可行性 D、有穷性 答案: A 2 题号:13164 以下叙述中正确的是( ) 。 A、用C语言编写的程序只能放在一个程序文件中 B、 C、 D、 答案: D 题号:13169 下列叙述中正确的是( ) 。 A、在C程序中 main( )函数的位置是固定的 B、每个C程序文件中都必须要有一个main( )函数 C、C程序中所有函数之间都可以相互调用,与函数所处位置无关 D、在C程序的函数中不
3、能定义另一个函数 答案: D 题号:13191 设有以下程序段: int m=0,n=0;char c=a; scanf(“%d%c%d“, printf(“%d,%d,%dn“a,b,c) ; A、 3,3,-10 B、 0,0,5 3 C、-10,3,-10 D、0,0,-10 答案: B 题号:13189 以下程序段的输出结果是( ) 。 float a=3.1415; printf(“%6.0fn“,a) ; A、 3. B、3.1415 C、3.0 D、 3 答案: D 题号:13186 设x和y均为int型变量,则语句: x+=y;y=x-y;x-=y 的功能是( ) 。 A、把x
4、和y按从大到小排列 B、把x和y按从小到大排列 C、交换x和y中的值 D、无确定结果 答案: C 题号:13177 设有定义:int x=10 ;,则表达式“x+(char)1/2.0“值的类型是( ) 。 A、double B、unsigned C、 float D、int 答案: A 题号:13179 若x和y都是int型变量,且x=10,y=20,则执行printf(“%dn“,x,y) ; 4 语句后,输出的结果是( ) 。 A、输出格式符不够,输出不确定的值 B、20 C、10 20 D、10 答案: D 题号:13195 以下程序段的运行结果是( )。 int a=-5,b=5;
5、printf(ab?“a=d“:“b=d“,a,b) A、没有正确的输出格式控制 B、a=-5b=5 C、a=-5 D、b=-5 答案: D 题号:13199 下面的程序,说法正确的是( )。 main() int x=3,y=0,z=0; if(x=y+z)printf(“*“); else printf(“#“); A、可以通过编译,但是不能通过连接,因而不能运行 B、有语法错误不能通过编译 C、输出* D、输出# 答案: D 题号:13198 有如下程序 main() int x=l,a=0,b=0; switch(x) 5 case 0:b+: case 1:a+: case 2:a+
6、;b+; printf(“a=d,b=dn“,a,b); 该程序的输出结果是_。 A、a=2,b=1 B、a=1,b=1 C、a=1,b=0 D、a=2,b=2 答案: A 题号:13196 为了避免嵌套的if-else语句的二义性,C语言规定else总是与( )组成配对 关系 A、在其之前未配对的if B、缩排位置相同的if C、同一行上的if D、在其之前最近的未配对的if 答案: D 题号:13192 有如下程序 void main() int x=1,a=0,b=0; switch(x) case 0:b+; case 1:a+; case 2:a+;b+; printf(“a=%d,
7、b=%dn“,a,b); 该程序的输出结果是 A、a=1,b=1 B、a=2,b=2 C、a=2,b=1 6 D、a=1,b=0 答案: C 题号:13194 下列只有当整数x为偶数时,才是逻辑“真“的表达式是( )。 A、x2 !=0 B、(x-x2*2)=0 C、!(x2=0) D、if (x2); 答案: B 题号:13193 假定所有变量均已正确说明,下列程序段运行后x的值是( ) int a=0;b=0;c=0;x=30; if (!a) x-; else if (b) x+; if( c) x=x-3; else x+=4; A、4 B、33 C、30 D、3 答案: B 题号:1
8、3197 下列条件语句中,功能与其他语句不同的是 ( ) A、 if (a!=0) printf(“%dn“,x); else printf(“%dn“,y); B、 if (a) printf(“%dn“,x); else printf(“%dn“,y); C、if(a=0) printf(“%dn“,x); else printf(“%dn“,y); D、 if(a=0) printf(“%dn“,y); else printf(“%dn“,x); 答案: C 7 填空题 = 题号:12987 一个C源程序中至少应包括一个_ 。 答案: 空 1: main函数 题号:12990 C语言源程
9、序文件名的后缀是_;经过编译产生的目标文件的后缀是 _;经过连接生成的可执行文件的后缀是_。 答案: 空 1: .c 空 2: .obj 空 3: .exe 题号:13035 在C程序中,最多能有_个main函数。 答案: 空 1: 1 题号:13044 已知字符A的ASCII码值是65,字符变量c1的值是A,c2的值是D。执行语 句printf(“%d,%d“,c1,c2-2);后,输出的结果是_。 答案: 空 1: 65,66 8 题号:12994 有以下程序 #include main() char a20=“How are you?“,b20; scanf(“%s“,b); print
10、f(“%s %sn“,a,b); 程序运行时从键盘输入:How are you? 则输出结果为_ 。 答案: 空 1: How are you? How 题号:13043 设a=4,b=5,x=3.5,y=4,则以下两个表达式的值分别是 (1)_(2) _。 (1)x+a%3+(int)(x+y)%2/4 (2) (float)(a+b)/2+(int)x%(int)y 答案: 空 1: 4.5 空 2: 7.5 题号:13049 执行下列程序段后,变量i的值是( ) 。 int i=10: switch(i) case 9:i+=0; case 10:i+=1; case 11:i+=2;
11、default:i+=3; 9 答案: 空 1: 16 题号:12997 下列程序的功能是输出 a、b、c 三个变量中的最小值。请填空。 #include main( ) int a,b,c,t1,t2; scanf(“%d%d%d“, t1=ab?“a=d“:“b=d“,a,b) A、没有正确的输出格式控制 B、a=-5b=5 C、a=-5 D、b=-5 答案: D 题号:13194 下列只有当整数x为偶数时,才是逻辑“真“的表达式是( )。 A、x2 !=0 B、(x-x2*2)=0 C、!(x2=0) D、if (x2); 答案: B 题号:13197 下列条件语句中,功能与其他语句不同
12、的是 ( ) A、 if (a!=0) printf(“%dn“,x); else printf(“%dn“,y); B、 if (a) printf(“%dn“,x); else printf(“%dn“,y); C、if(a=0) printf(“%dn“,x); else printf(“%dn“,y); D、 if(a=0) printf(“%dn“,y); else printf(“%dn“,x); 答案: C 16 题号:13192 有如下程序 void main() int x=1,a=0,b=0; switch(x) case 0:b+; case 1:a+; case 2:a
13、+;b+; printf(“a=%d,b=%dn“,a,b); 该程序的输出结果是 A、a=1,b=1 B、a=2,b=2 C、a=2,b=1 D、a=1,b=0 答案: C 题号:13198 有如下程序 main() int x=l,a=0,b=0; switch(x) case 0:b+: case 1:a+: case 2:a+;b+; printf(“a=d,b=dn“,a,b); 该程序的输出结果是_。 A、a=2,b=1 B、a=1,b=1 C、a=1,b=0 D、a=2,b=2 答案: A 题号:13196 为了避免嵌套的if-else语句的二义性,C语言规定else总是与( )
14、组成配对 17 关系 A、在其之前未配对的if B、缩排位置相同的if C、同一行上的if D、在其之前最近的未配对的if 答案: D 题号:13199 下面的程序,说法正确的是( )。 main() int x=3,y=0,z=0; if(x=y+z)printf(“*“); else printf(“#“); A、可以通过编译,但是不能通过连接,因而不能运行 B、有语法错误不能通过编译 C、输出* D、输出# 答案: D 题号:13193 假定所有变量均已正确说明,下列程序段运行后x的值是( ) int a=0;b=0;c=0;x=30; if (!a) x-; else if (b) x
15、+; if( c) x=x-3; else x+=4; A、4 B、33 C、30 D、3 答案: 18 B 填空题 = 题号:12968 C源程序的基本单位是_。 答案: 空 1: 函数 题号:13036 算法的基本特征主要包括可行性、确定性、_和输入、输出(拥有足 够的情报) 。 答案: 空 1: 有穷性 题号:12990 C语言源程序文件名的后缀是_;经过编译产生的目标文件的后缀是 _;经过连接生成的可执行文件的后缀是_。 答案: 空 1: .c 空 2: .obj 空 3: .exe 题号:13042 表达式3.6-5/2+1.2+5%2的值是_。 答案: 空 1: 3.8 19 题号
16、:12995 下列程序运行后的输出结果是_ 。 main( ) int x=0210; printf(“%Xn“,x); 答案: 空 1: 88 题号:12994 有以下程序 #include main() char a20=“How are you?“,b20; scanf(“%s“,b); printf(“%s %sn“,a,b); 程序运行时从键盘输入:How are you? 则输出结果为_ 。 答案: 空 1: How are you? How 题号:13045 当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为_。 if(amax) max=x; if(xmax) a
17、bsmax=x; /*FILL*/ printf(“max=%d,min=%d,absmax=%d,avg=%f“,max,min,absmax,_ _); 答案: 位置 1: =x 位置 2: (float)total/n 【或】 total*1.0/n 【或】 1.0*total/n 题号:1664 /*- 【程序填空】 - 功能:以每行5个数来输出300以内能被7或17整除的偶数,并求出 其和。 -*/ #include #include main() int i,n,sum; sum=0; /*FILL*/ _ /*FILL*/ for(i=1; _ ;i+) /*FILL*/ 32
18、if(_) if(i%2=0) sum=sum+i; n+; printf(“%6d“,i); /*FILL*/ if(_) printf(“n“); printf(“ntotal=%d“,sum); 答案: 位置 1: n=0 位置 2: ii 位置 3: i%7=0|i%17=0 【或】 !(i%7)|!(i%17) 【或】 !(i%17)|!(i%7) 【或】 !(i%7 double fun(); printf(“Please input a number:“); /*ERROR*/ print(“%d“,n) ; printf(“%10.6fn“,fun(n); /*ERROR*/
19、fun(int n) int i,j,t; double s; s=0; /*ERROR*/ while(i=1;imax) max=x; if(xmax) absmax=x; /*FILL*/ printf(“max=%d,min=%d,absmax=%d,avg=%f“,max,min,absmax,_ _); 答案: 位置 1: =x 位置 2: (float)total/n 【或】 total*1.0/n 【或】 1.0*total/n 题号:5879 /*- 【程序填空】 - 功能:求两个非负整数的最大公约数和最小公倍数。 -*/ #include main() int m,n,r,
20、p,gcd,lcm; scanf(“%d%d“, if(m1e-4) 【或】 while(0.0001 main() int y=10; while(y-) ; printf(“y=dn“,y) ; 程序运行后的输出结果是 A、y=0 47 B、y=1 C、while构成无限循环 D、y=-1 答案: D 题号:13238 下面程序的输出是。 main() int x=10,y=15,a=5; while(x+!=(y-=1) a+=1; if(y j) printf(“%dn”, s); break; s += i; A、4 B、8 C、6 D、7 答案: C 题号:6730 以下程序的输出
21、结果是 main() int y = 10 for(; y 0; y -) if(y % 3 = 0) pritnf(“%d”, -y); continue; A、741 B、963 C、875421 D、852 答案: D 题号:3095 以下程序段的输出结果是 int k, j, s; for(k = 2; k 0|Emax) max=x; if(xmax) absmax=x; /*FILL*/ printf(“max=%d,min=%d,absmax=%d,avg=%f“,max,min,absmax,_ _); 答案: 位置 1: =x 位置 2: (float)total/n 【或】
22、 total*1.0/n 【或】 1.0*total/n 题号:6603 /*- 【程序填空】 - 功能:输出100到1000之间的各位数字之和能被15整除的所有数, 输出时每10个一行。 -*/ 54 #include main() int m,n,k,i=0; for(m=100;m0) 【或】 while(0=0;i-) /*将数组倒序输出*/ switch(ai) case 10:printf(“a“); break; case 11:printf(“b“); break; case 12:printf(“c“); break; case 13:printf(“d“); break;
23、case 14:printf(“e“); break; case 15:printf(“f“); break; default:printf(“%d“,ai); printf(“n“); TestFunc(); void TestFunc() FILE *IN,*OUT; char sIN80; int iOUT,i; IN=fopen(“in.dat“,“r“); if(IN=NULL) printf(“Please Verify The Currernt DirIt May Be Changed“); OUT=fopen(“out.dat“,“w“); if(OUT=NULL) print
24、f(“Please Verify The Current Dir It May Be Changed“); for(i=0;iy?yx; main( ) int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d); f=f1(f2(a,b),f2(c,d); 88 g=a+b+c+d-e-f; printf(“%d,%d,%dn“,e,f,g); A、5,2,7 B、4,3,7 C、3,4,7 D、2,5,7 答案: B 题号:13118 有下列程序: fun(int x,int y)return (x+y); main( ) int a=1,b=2,c=3
25、,sum; sum=fun(a+ +,b+ +,a+b),c+ +); printf(“%dn“,sum); 执行后的输出结果是( ) 。 A、8 B、7 C、6 D、9 答案: A 题号:13116 若各选项中所用变量已正确定义,fun()函数中通过return 语句返回一个函数 值,下列选项中错误的程序是( ) 。 A、main( ) float fun(int i,int j); x =fun(i,j); float fun(int a,int b) B、main( ) x =fun (2,10); float fun(int a,int b) C、float fun(int a,int
26、 b) main( ) 89 x =fun(i,j); D、float fun(int,int); main( ) x =fun(2,10); float fun(int a,int b) 答案: B 题号:13117 有下列程序: int fun1(double a)return a*=a; int fun2(double x,double y) double a=0,b=0; a=fun1(x);b=fun1(y);return(int)(a+b); main( ) double w;w=fun2(1.1,2.0); 程序执行后变量w 中的值是( ) 。 A、5 B、5.000000 C、
27、0.0 D、5.21 答案: B 题号:13122 有下列程序: fun (int x,int y) static int m=0,i=2; i+=m+1; m=i+x+y; return m; main ( ) int j=1, m=1, k; k=fun(j,m); printf(“%d, “,k); k=fun(j,m); printf(“%dn“,k); 执行后的输出结果是( ) 。 A、11,11 B、5,5 C、5,11 90 D、11,5 答案: C 题号:13124 有下列程序: void change (int k )k0=k5; main( ) int x10=1,2,3,
28、4,5,6,7,8,9,10,n=0; while (n1) fun(x/2); printf(“%d“,x); main( ) fun(7); printf(“n“); 程序运行后的输出结果是( ) A、731 B、37 C、73 D、137 答案: B 题号:13252 在C语言中,只有在使用时才占用内存单元的变量,其存储类型是( ) A、static和register B、auto和register C、auto和static D、extern和register 答案: B 94 题号:13260 有以下程序 #include int fun() static int x=1; x*=2
29、; return x; main() int i,s=1; for(i=1;i0) return tn-1+f(t,n-1); else return 0; A、10 B、14 C、4 D、6 答案: A 95 题号:13258 有以下程序 #include int f(int x,int y) return(y-x)*x); main() int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c); printf(“%dn“,d); 程序运行后的输出结果是( ) A、10 B、9 C、7 D、8 答案: B 题号:13253 下面的函数调用语句中 func函数的实参个数是( )
30、 func(f2(v1, v2), (v3, v4, v5), (v6, max(v7, v8); A、4 B、3 C、5 D、8 答案: B 题号:13259 有以下程序 #include void fun(int p) int d=2; p=d+; printf(“%d“,p); main() int a=1; fun(a); printf(“%dn“,a); 96 程序运行后的输出结果是( ) A、22 B、21 C、12 D、32 答案: B 题号:13212 有以下程序 #include int fun(int a,int b) if(b= =0) return a; else re
31、turn(fun(- -a,- -b); main() printf(“%dn“, fun(4,2); 程序的运行结果是( ) A、2 B、4 C、1 D、3 答案: A 程序设计 = 题号:13336 /*- 功能:编写一个函数sxh(),它的功能是判断一个三位数是不是水仙花数。 主函数去调用sxh(),输出100-1000内所有水仙花数。(普通变量作为函数参数) -*/ #include int narcis(int num) int n,i,j,k; printf(“narcissus numbers are:“); for(n=100;ny?yx; main( ) int a=4,b=
32、3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d); f=f1(f2(a,b),f2(c,d); g=a+b+c+d-e-f; printf(“%d,%d,%dn“,e,f,g); A、5,2,7 B、4,3,7 C、3,4,7 D、2,5,7 答案: B 题号:13121 有下列程序: void sort(int a ,int n) int i,j,t; for(i=0;in-1;i+ +) for(j=i+1;jn;j+ +) if(aiaj) t=ai; ai=aj; aj=t; 104 main( ) int aa10=1,2,3,4,5,6,7,8,9,10,
33、i; sort(aa+2,5); for(i=0;i0) return tn-1+f(t,n-1); else return 0; A、10 B、14 C、4 D、6 答案: A 题号:13253 下面的函数调用语句中 func函数的实参个数是( ) func(f2(v1, v2), (v3, v4, v5), (v6, max(v7, v8); A、4 B、3 C、5 D、8 答案: B 程序设计 = 题号:13336 /*- 功能:编写一个函数sxh(),它的功能是判断一个三位数是不是水仙花数。 主函数去调用sxh(),输出100-1000内所有水仙花数。(普通变量作为函数参数) -*/
34、#include int narcis(int num) int n,i,j,k; printf(“narcissus numbers are:“); for(n=100;n=1 float a, ave (int y10); /*ERROR*/ a=ave(score0); printf (“%.2f n“,a); 112 float ave(int y10) float r,s; int i; s=0; for(i=0;ipj-Score ) t = pi;pi = pj;pj = t; printf ( “%d %dn“, s1.Score, p1-Score ) ; 运行后的输出结果是
35、( ) 。 A、595 611 B、680 680 C、620 620 D、595 680 答案: A 题号:13140 若要说明一个类型名STP,使得定义语句STP s等价于char *s,以下选项中正 115 确的是( ) 。 A、typedef stp *char; B、typedef char * STP; C、typedef STP char *s; D、typedef *char STP; 答案: B 题号:13145 设有以下说明语句 typedef struct int n; char ch8; PER; 则下面叙述中正确的是( ) 。 A、typedef struct 是结构
36、体类型 B、struct 是结构体类型名 C、 PER是结构体类型名 D、PER 是结构变量名 答案: C 题号:13136 有以下程序 #include struct STU int num; float TotalScore; ; void f ( struct STU p ) struct STU s2 = 201104, 620 , 201119, 611 ; p.num = s1.num; p.TotalScore = s1.TotalScore; main ( ) struct STU s2 = 201123, 701 , 201150, 595 ; f ( s0 ) ; prin
37、tf ( “%d %3.0fn“, s0.num, s0.TotalScore ) ; 程序运行后的输出结果是( ) 。 A、201123 701 116 B、201150 595 C、201104 620 D、201119 611 答案: A 题号:13147 以下叙述不正确的是( ) 。 A、宏名无类型 B、 宏替换不占用运行时间 C、宏名必须用大写字母 D、宏替换只是字符替换 答案: C 题号:13148 宏命令不可以放在( ) 。 A、源程序文件的末尾 B、源程序文件的开头 C、函数内部 D、函数外部 答案: C 题号:13264 有以下语句,0i9,则对a数组元素的引用不正确的是_。
38、 int a10 = 0,1,2,3,4,5,6,7,8,9,*p = a; A、*( while (s1i = = s2i 117 return (s1i = = 0 此函数的功能是_。 A、将s2所指字符串赋给s1 B、比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0 C、比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0 D、比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0 答案: D 题号:13263 以下程序运行时输出结果是_。 #include void sum (int *a) a0 = a1; void
39、main ( ) int aa10 = 1,2,3,4,5,6,7,8,9,10,i; for (i = 2; i = 0; i-) sum ( printf ( “ %dn“ ,aa0); 执行后的输出结果是_。 A、1 B、4 C、2 D、3 答案: B 题号:13267 若有定义:char *st = “ how are you“ ;下列程序段中正确的是_。 A、char a11 ; strcpy ( + + a, st ) ; B、char a11 ; strcpy ( a, st ) ; C、 char a , *p ; strcpy ( p = D、char a11, *p ; s
40、trcpy ( p = a + 1, 答案: D 题号:13223 若有定义“typedef struct testint x,y2;TEST;“,则以下声明中正 118 确的是_。 A、struct test x; B、test x; C、struct x; D、struct TEST x; 答案: A 题号:13226 已知有如下的结构类型定义和变量声明: struct student int num; char name10; stu = 1,“Mary“, *p = 则下列语句中错误的是_。 A、printf(“%d“, C、printf(“%d“,stu . num); D、prin
41、tf(“%d“,p-num); 答案: A 题号:13274 若有下面的说明和定义: struct test int ml; char m2; float m3; union uu char ul5; int u22; ua; aa; A、17 B、12 C、9 D、16 答案: B 题号:13272 以下选项中引用结构体变量成员的表达式错误的是_。 A、(p+)-num 119 B、stu3.age C、p-num D、( *p).num 答案: B 题号:13282 有以下程序,运行后的输出结果是( ) 。 #include #define PT 3.5; #define S(x) PT*x*x; main() int a=1;b=2; printf(“%4.1fn“,S(a+b); A、14.0 B、31.5 C、7.5 D、程序有错无输出结果 答案: D 题号:13277 以下叙述正确的是( ) 。 A、 C语 言 的 预 处 理 不 能 实 现 宏 定 义 和 条 件 编 译 的 功 能 B、 在 C语 言 中 , 预 处 理 命 令 行 都 以 #开 头 C、 每 个 C程 序 必 须 在 开 头 包 含 预 处 理 命 令 行 : #include D、 预 处 理 命 令 行 必 须 位 于 C 源 程 序 的 起 始 位 置 答案: B 程序设计 =