C语言选择题题库2 下载本文

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 #define“stdio.h”#define MUL (x,y)(x)*y main(){int a=3,b=4,c;c=MUL(a++,b++);printf(“%d”,c);} 上面程序的输出结果是(A) A.12 B.15 C.20 D.16

27.对下面程序段:#defineA3 #defineB (a)(A+1)*a)x=3*(A+B(7));正确的判断是(B) A.程序出错,不允许嵌套宏定义 B.x=93 C.x=21 D.程序出错,宏定义不允许有参数 28.允许程序输出结果是(B)

#include #define PT5.5 #define S(x)PT*x*x main(){int a=1,b=2;printf(“%4.1f”,S(a+b));}

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.以下程序的功能是根据输入的“y”(“Y”)与“n”(“N”),在屏幕上分别显示出“This is YES”与“This is NO”。请填空。

#includevoid YesNo(charch){switch (ch){case‘y':casw‘Y’:printf(“\\nThis is YES.\\n”);【1】;case‘n':case‘N’:printf(“\\nThis is NO.\\n”);}}(){charch;printf(“\\nEnter a char‘y',‘Y’,‘n’,‘N’:”);ch=;【2】printf(“ch:%c”,ch);YesNo(ch);} 【1】_break【2】getchar()

2.以下Check函数的功能是对value中的值进行四舍五入计算,若计算后的值与ponse值相等,则显示“WELL ,DONE!!”,否则显示计算后的值。已有函数调用语句Check(ponse ,value)。请填空。

void Check(int ponse,float value){int val;val=【1】;printf(“计算后的值:%d”,val);if (【2】)printf(“\\nWELL DONE!!\\n”);else printf(“\\nSorry the correct answer is %d\\n”,val);} 【1】_(int)((value*10+5)/10) 【2】ponse==val

3.已有函数pow,现要求取消变量i后pow函数的功能不变。请填空。 修改前的pow函数:

pow(int x,int y){int i,j=1;for(i=1;i<=y;++i)j=j*x return(j);}修改后的pow函数:pow(int x,int y){int j;for(【1】;【2】;【3】)j=j*x;return(j);} 【1】j=1【2】y>=1【3】y--

4.以下程序的功能是求三个数的最小公倍数。请填空。

max(int x,int y,int z){if(x>y&&x>z)return(x);else if(【1】)return(z);}main(){int

x1,x2,x3,i=1,j,x0;printf(“Input 3 number:”); scanf(“%d%d%d”,&x1,&x2,&x3);x0=max(x1,x2,x3);while(1){j=x0*i;if([【2】)break;i=i+1;}printf(“This is %d%d%d zuixiaogongbeishu is%d\\n”,x1,x2,x3,j);} 【1】y>x&&y>z【2】j%x1==0&&j%x2==0&&j%x3==0

5.函数gongyu的作用是求num1和num2的最大公约数,并返回该值。 gongyu(int num1,int num2){int temp ,a,b;if(num1【1】num2){temp=num1;num1=num2;num2=temp;}a=num1;b=num2;while(【2】){temp=a%b;a=b;b=temp;}return(a);} 【1】<【2】b!=0

6.以下程序的功能是用递归法计算学生的年龄,已知第一位学生年龄最小,为10岁,其余学生一个比一个大2岁,求第五个学生的年龄。 age(int n){int c;if(n==1) c=10;else c=【1】;retrn(c);}main(){int n=5;printf(“age:%d\\n”,【2】);} 【1】age(n-1)+2【2】age(5)

7.C语言提供了三种预处理命令,它们是宏定义、文件包含和条件编译 8.设有以下宏定义:

#define WIDTH80 #define LENGTH WIDTH+40则执行赋值语句:v=LENGTH820;后(v为int型变量),v的值是 880。 9.以下程序的输出结果是 12 。

#define MUN(z)(z)*(z) main{printf(“%d,MUN(1+2)+3);}

10.设有以下程序,为使之正确运行,请在【】处填入应包含的命令行。(try-me()函数在a:\\mylife.txt中有定义。) 【1】main(){printf(“\\n”);try-me();printf(“\\n”);} 【1】#include“a:\\mylife.txt”

11.设有以下程序,为使之正确运行,请在【】中填入应包含的命令行。 【1】main(){int x=2,y=3;printf(“%d”,pow(x,y));} 【1】#include“math.h”

12.以下的程序是选出能被3整除且至少有一位数是5 的两位数,打印出所有这样的数及其个数。 sub(int k,int n){int a1,a2;a2=【1】;a1=k-【2】;if((k%3==0&&a2==5)||(k%3==0&&a1==5)){printf(“%d”,k);n++;return n;}else return -1;}main(){int n=0,i,m;for(i=10;i<=99;i++){m=sub(i,n);if(m!=-1)n=m;}printf(“\\nn=%d”,n);} 【1】k/10【2】a2*10

13.下面add函数的功能是求两个参数的和,并将和值返回调用函数。函数中错误的是【1】,改正后为【2】

void add(float a,float b){float c;c=a+b;return c;}

【1】void add(float a,float b)【2】float add(float a,float b)

14.函数del的作用是删除有序数组a中的指定元素x,已有调用语句del(a,n,x);其中实参n为删除前数组元素的个数,赋值号左边的n为删除后数组元素的个数。 del(int a[],int n,int x){int p,i;p=0;while(x>=a[p]&&p

【1】p=p+1【2】a[i]=a[i+1]

15.以下程序可以计算10 名学生1门课的成绩的平均分。

float average(float array[10]){int i;float aver,sum=array[0];float(i=1;【1】;i++)sum+=【2】;aver=sum/10;return(aver);}main(){float score[10],aver;int i;printf(“\\ninput 10 scores:”);

for(i=0;i<10;i++)scanf(“%f”,&score[i]);aver=【3】;printf(“naverage score is %5.2f\\n”,aver);} 【1】i<10【2】array[i]【3】average(score)

第五章 数组与字符串

一、选择题

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.字符型数组中可以存放字符串