30.以下程序的输出结果是(B) #include“stdio.h”void main(){int i=0,a=0;;while(i<20){for(;;){if((i)==0)break;elsei--;}i+=11;a+=i;}printf(“%d\\n”,a);} A.21 B.32 C.33 D.11
第4章函数及预处理命令 一、填空题
1.以下叙述正确的是(A)
A.构成C语言的基本单位是函数 B.可以在一个函数中定义另一个函数 C.main()函数必须放在其他函数之前 D.所有被调用之前进行定义 2.以下叙述中错误的是(D)
A.C语言必须由一个或一个以上的函数组成 B.函数调用可以作为一个独立的语句存在 C.若函数形参的值也可以传回给对应的实参
3.调用一个函数,此函数中没有return语句,则该函数(D) A.没有返回值
B.返回若干个系统默认值
C.能返回一个用户所希望的函数值 D.返回一个不确定的值
4.C语言规定,函数返回值的类型是由(D) A.return语句中的表达式类型所决定 B.调用该函数时的主调函数类型所决定 C.调用该函数时系统临时决定
D.在定义该函数时所指定的函数类型所决定 5.以下程序的输出结果是(B)
#include“stdio”void fun(){int a,b;a=100;b=200;}main(){int a=5,b=7;fun();printf(“%d%d,a,b;} A.100200 B.57 C.200100 D.75
6.以下函数调用语句中包含有(B)个实参。 fun((exp1,exp2),(exp3,exp4,exo5)); A.1 B.2 C.4 D.5 7.以下程序的输出结果是(C)
fun(int a,int b,int c){c=a*a+b*b;}main(){int x=22;fun(4,2,x);printf(“%d”,x);} A.20 B.21 C.22 D.23 8.有如下程序:
int func (int a,int b){return(a+b);}main(){int x=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%d\\n”,r);}该程序的输出结果是(D) A.12 B.13 C.14 D.15 9.以下程序的输出结果是(A)
#include
10.以下程序的输出结果是(C)
#include“stdio.h” void fun c1(int i);void fun c2(int i);char st[]=“hello,friend”;void fun c1(int
i){printf(“%c”,st[i]);if(i<3){i+=2;fun c2(i);}}void fun c2(int i);{printf(“%c”,st[i]);if(i<3){i+=2;fun c1(i);}}main(){int i;i=0;fun c1(i);printf(“\\n”;} A.hello B.hel C.hlo D.hlrn 11.C语言中形参的默认存储类别是(A) A.自动(auto) B.静态(static) B.寄存器(register) D.外部(exter) 12.关于全局变量,下列说法正确的是(D) A.本程序的全部范围
B.离定义该变量的位置最接近的函数 C.函数内部范围
D.从定义该变量的位置开始到本文件结束 13.以下程序输出结果是(D)
#include“stdio.h”int f(){static int i=0;int s=1;s+=i;i++;return s;}main(){int i,a=0;for(i=0;i<5;i++)a+=f();printf(“%d\\n”,b);} A.20 B.24 C.25 D.15 14.以下程序的输出结果是(D)
#include
#include
#include
A.6 9 9 B.669 C.6 15 15 D.6 6 15 17.以下有关宏替换的叙述不正确的是(D) A.宏替换不占用运算时间 B.宏名无类型
C.宏替换只是字符替换 D.宏名必须用大写字母表示 18.在宏定义#definePI3.14159中,用宏名PI代替一个(D) A.常量 B.单精度数 C.双精度数 D.字符串 19.以下程序的输出结果是(D)
#include
A.19 B.17 C.15 D.12 20.以下程序的输出结果是(B) #include
#include
22.以下程序的输出结果是(C)
#include
#define N 2 #define Y(n)((N+1)*n)则执行语句:z=2*(N+Y(5));后的结果是(B) A.语句有错误 B.z=34 C.z=70 D.z无定值
24.若有宏定义:#define MOD(x,y)x%y则执行以下语句后的输出结果为(B) intz,a=15,b=100;z=MOD(b,a);printf(“%d”,z++); A.11 B.10 C.6 D.宏定义不合法 25.以下程序的运行结果是(C)
#include
main(){int a=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);} A.Y=3 B.存在语法错误 C.Y=7 D.Y=0 26.请读程序:
#include
27.对下面程序段:#defineA3 #defineB (a)(A+1)*a)x=3*(A+B(7));正确的判断是(B) A.程序出错,不允许嵌套宏定义 B.x=93 C.x=21 D.程序出错,宏定义不允许有参数 28.允许程序输出结果是(B)
#include
A.12. 0 B.9. 5 C.12. 5 D.33. 5 29.允许正确的描述是(C)
A.C语言预处理功能是指完成宏替换和包含文件的调用 B.预处理指令只能位于C源程序文件的首部
C.凡是C源程序中行首以“#”标识的控制都是预处理指令 D.C语言的编译预处理就是对源程序进行初步的语法检查 30.若有以下调用语句,则不正确的fun函数的首部是(D) main(){...int a[50],n;fun(n,&a,[9]);...}
A.void fun (int m,int x[]) B.void fun(int s,int h[41]) C.void fun (int p,int*s) C.void fun (int n,int a)
第五章 数组与字符串
一、选择题
1.以下能正确定义一维数组的选项是(B) A.int num[]; B.#define N100 intnum[N] C.int num[0..100]; D.int N=100;int num [N]; 2.若有以下说明:
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12];char c=‘a',d,g;则数值为4的表达式是(D) A.a[g-c] B.a[4] C.a[‘d'-‘c'] D.a[‘d'-c]
3.执行下面的程序段后,变量k中的值为(A) int k=3,s[2];s[0]=k;k=s[1]*10;
A.不定值 B.33 C.30 D.10 4.有以下程序: #include “stdio.h” main(){int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf(“%d\\n”,j);} 程序运行后的输出结果是(B) A.42 B.45 C.56 D.60 5.以下程序的输出结果是(B) main(){int
i,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3,i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)K+=p[i]*2;printf(“%d\\n”,k);}
A.20 B.21 C.22 D.23
6.以下程序段给数组所有的元素输入数据,请选择正确的答案填入(A) main(){int a[10],i=0;while(i<10)scanf(“%d”,);} A.a+i B.&a[i+1] C.a+i D.&a[i++] 7.阅读下面的程序: main(){int
n[2],i,j,k;for(i=0;i<2;i++)n[i]=0;k=2;for(i=0;i 上面程序的输出结果是(A) A.不确定的值 B.3 C.2 D.1 8.下述程序的输出结果是(B) main(){int y=18,i=0,j,a[8];do{a[i]=y%2 i++;y=y/2;}while(y>=1);for(j=i-1;j>=0;j--)printf(“%d”,a[j];printf(“\\n”);} A.10000 B.10010 C.00110 D.10100 9.有如下程序,该程序的输出结果是(D) main(){int n[5]={0,0,0},i,k=2;for(i=0;i 10.以下能正确定义二维数组的是(B) A.int a[][3]; B.int a[][3]={2*3}; C.int a[][3]={} D.int a[2][3]={{1},{2},{3}}; 11.以下不能正确定义二维数组的是(D) A.int a[2][2]={{1},{2}}; B.int a[][2]={1,2,3,4}; C.ine a[2][2]={{1},2,3}; D.int a[2][]={{1,2},{3,4}}; 12.以下能正确定义数组并正确赋初值的语句是(D) A.int N=5,b[N][N]; B.int a[1][2]={{1},{3}}; C.int c[2][]={{1,2},{3,4}}; D.int d[2][2]={{1,2};{3,4}}; 13.下述程序输出结果是(A) main(){int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf(“%d%d%d%d\\n”,a[0][3],a[1][2],a[2][1],a[3][0]); A.0650 B.1470 C.5430 D.输出值不定 14.定义如下变量和数组: int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是(C)for(i=0;i<3;i++)printf(“%d”,x[i][2-i]); A.159 B.147 C.357 D.369 15有如下程序,该程序的输出结果是(A) main(){int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0,j<=i;j++)s+=a[i][j];printf(“%d\\n”,是);} A.18 B.19 C.20 D.21 16.以下程序的输出结果是(C) main(){int i,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf(“%d,”,x[i][2-i]);} A.1,5,9 B.1,4,7 C.3,5,7 D.3,6,9 17.以下程序的输出结果是(B) main(){int b[3][3]={0,1,2,0,1,2,0,1,2 },i,j,t=1;for(i=0;i<3,i++)for(j=i;j<=i;j++) t=t+b [i][b[j][j]];printf(“%d\\n”,t);} A.3 B.4 C.1 D.9 18.以下合法的数字定义是(D) A.int a[]=“string” B.int a[5]={0,1,2,3,4,5}; C.char a=“string” D.char a[]={‘0’,‘1’,‘2’,‘3’,‘4’,‘5’}; 19.给出以下定义: char x[]=“abcdefg”; char y[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’} 则正确的叙述为(C) A.数组x和数组y等价 B.数组x和数组y长度相等 C.数组x的长度大于数组y的长度 D.数组x的长度小于数组y的长度 20.不能把字符:Hello!赋给数组b的语句是(B) A.char b[10]={‘H’,‘e’,‘l’,‘l’,‘o’,‘!’}; B.char b[10];b=“Hello”; C.char b[10];strcpy(b,“Hello”); D.char b[10]=“Hello”; 21.下列描述中不正确的是(C) A.字符型数组中可以存放字符串 B.可以对字符型数组进行整体输入、输出 C.可以对整体数组进行整体输入、输出 D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值 22.有以下程序: #include 输入以下3行,每行输入都是在第1列开始, A.abcdef B.abcdef C.ab cd D.a b cdef 23.以下程序的输出结果是(D) #include“stdio.h”#include“string.h”main(){int k;char w[][10]={“ABCD”,“EFGH”,“IJKL”,