大一C语言选择题及答案

更新时间:2024-03-07 18:23:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第1章 C语言程序设计概述 一.选择题

1.以下叙述中正确的是(A)

A.C语言程序中注释部分可以出现在程序中任意合适的地方 B.花括号“{”和“}”只能作为函数体的定界符

C.构成C语言程序的基本单位是函数,所有函数名都可以由用户命名 D.分号是C语言语句之间的分隔符,不是语句的一部分 2.以下叙述中错误的是(A)

A.用户所定义的标识符允许使用关键字

B.用户所定义的标识符应尽量做到“见名知意” C.用户所定义的标识符必须以字母或下划线开头

D.用户所定义的标识符中,大,小写字母代表不同标识 3.下列关于C语言用户标识符的叙述中正确的是(B) A.用户标识符中可以出现下划线和中划线(减号) B.用户标识符中不可以出现中划线,但可以出现下划线

C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头

D.用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头 4.以下关于C语言标识符的描述中,正确的是(D) A.标识符可以由汉子组成 B.标识符只能以字母开头

C.关键字可以作为用户标识符 D.Area与area是不同的标识符 5.以下正确叙述是(C)

A.在C语言中,main函数必须位于文件的开头 B.C语言每行只能写一条语句 C.C语言本身没有输入,输出语句

D.对一个C语言进行编译预处理时,可检查宏定义的语法错误 6.下面说法正确的是(C)

A.C程序由符号构成 B.C程序由标识符构成 C.C程序由函数构成 D.C程序由C语句构成 7.以下叙述不正确的是(D)

A.一个C源程序可以由一个或多个函数组成 B.一个C源程序必须包含一个main函数 C.C程序的基本组成单位是函数

D.在C程序中,注释说明只能位于一条语句后面

8.C语言规定:在一个源程序中,main函数的位置可以任意 9.以下不能定义为用户标识符的是(D) A.scanf B.Void C._3com D.int

10.以下不合法的用户标识符是(C) A。j2_KEY B.Double C.4d D._8_

11.下列四组选项中,均不是C语言关键字的是(A) A.define IF type B.getc char printf C.include scanf case D.while go pow 12.以下不能定义为用户标识符的是(D) A.Main B._0 C._int D.sizeof 13.以下不合法的用户标识符是(C)

A。j2_KEY B.Double C.4d_8_ D.main 14.以下选项中合法的用户标识符是(B) A.long B._2Test C.3Dmax D.A.dat

15.以下选项中不合法的用户标识符是(A) A.abc.c B.file C.Main D.Printf

16.以下选项中不合法的用户标识符是(C) A._12Ab B.include C.3abc D.Int 17.以下叙述正确的是(B)

A.可以把define和if定义为用户标识符

B.可以把define定义为用户标识符,但不能把if定义为用户标识符 C.可以把if定义为用户标识符,但不能define定义为用户标识符 D.define和if都不能定义为用户标识符 18.一个C语言的执行是从(A)

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

B.本程序文件中的第一个函数开始,到本程序文件的最后一个函数结束 C.本程序的main函数开始,到本程序文件的最后一个函数结束 D.本程序文件的第一个函数开始,到本程序main函数结束 19.C语言程序的基本单位是语句 20.以下叙述 中正确的是(C) A.程序应尽可能短

B.为了编程的方便,应当根据编程人员的意图使程序的流程随意转移 C.虽然注释会占用较大篇幅,但程序中还是应尽可能详细地注释 D.在VC环境下,运行的程序就是源程序

第2章 数据类型与表达式 一选择题

1.以下选项中不属于C语言的类型的是(D) A.signed short int B.unsigned long int C.ungned int D.long short

2.以下选项中可作为C语言合法整数的是(C) A.10110B B.0386 C.0xffa D.x2a2 3.以下选项中合法的实型常数是(C) A.5E2.0 B.E-3 C.2E0 D.1.3E

4.以下选项中属于C语言的数据类型是(A) A.复数型 B.逻辑数 C.双精度型 D.集合型 5.以下选项中合法的字符常量是(B) A.“B” B.‘\\010' C.68 D.D 6.下面正确的字符常量是(C)

A.“c” B.‘\\\\' C.‘W' D.‘’ 7.下面不正确的字符串常量是(A)

A.‘abc' B.“12‘12” C.“0” D.“”

8.在C语言中,char型数据在内存中的存储形式是(D) A.补码 B.反码 C.原码 D.ASCII码

9.以下所列的C语言常量中,错误的是(B) A.0xFF B.1.2e0.5 C.2L D.‘\\72' 10.表达式3.6-5/2+1.2+5%2的值是(D) A.4.3 B.4.8 C.3.3 D.3.8

11.有以下定义语句:double a,b;int w;long c;若各变量已正确赋值,则以下选项中在的表达式是(C)

A.a=a+b=b++ B.w%((int)a+B C.(c+w)%(int)a D.w=a%b 12.有以下程序

#include main() {int m=12,n=34;printf(“%d%d,m++,n++);printf(“%d%d\\n”,n++,++m);}程序运行后的结果是(C)

A.12353514 B.12353513 C.12343514 D.12343513 13有以下程序:

#include main() {int a1=3,a2=9;printf(“%d\\n”,(a1,a2));} 以下叙述中正确的是(B)

A.格式输出3 B.程序输出9 C.格式说明符不足,编译出错 D.程序运行时产生错误信息

14..有以下程序

#include main() {int x,y,z;x=y=1;z=x++,y++,++y;printf(“%d,%d,%d\\n”,n,y,z);}程序运行后的结果是(C)

A.2,3,3 B.2,3,2 C.2,3,1 D.2,2,1

15.若有定义:int a=8,b=5,c;执行语句“c=a/b+0.4;”后,c的值为 1

16.若变量a是int类型,并执行了语句:a=‘A’+1.6;则正确的叙述是(D) A.a的值是字符C B.a的值是浮点型

C.不允许字符型和浮点型相加 D.a的值是字符‘A'的ASCII值加上1 17.下列语句中,正确的语句是(C) A.int x=y=Z==0 B.int Z=(x+y)++ C.x=+3==2

D.x%=2.5

18.以下能正确地定义整型变量a,b和c,并为它们赋初值5的语句是(C) A.int a=b=c=5 B.int a,b,c=5

C.int a=5,b=5,c=5 D.a=b=c=5

19.已知各变量的类型说明如下:

int k,a,b;unsigned long w=5;double x=1.42;则以下不符合C语言的表达式是(A) A.x%(-3) B.w+=-2

C.k=(a=2,b=3,a+B D.a+=a-=(b=4)*(a=2) 20.若有说明语句:char='\\72';则变量c(A) A.包含1个字符 B.包含2个字符

C.包含3个字符 D.说法不合法,c的值不确定 21.假定w,x,y,z,m均为int型变量,有如下程序段: w=1;x=2;y=3;Z=4;m=(w

A.4 B.3 C.1 D.2

22.若x,i,j和k都是int型变量,则计算下面表达式x=(i=4,j=16,k=32)后,x的值为(C) A.4 B.16 C.32 D.52

23.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是(B) A.7 B.8 C.6 D.2

24.设以下变量均为int类型,则值不等于7的表达式是(C) A.(x=y,x+y,x+1) B.(x=y=6,x+y,y+1)

C.(x=6,x+1,y=6,x+y) D.(y=6,y+1,x=y,x+1)

25.下列关于运算符优先顺序的描述中正确的是赋值运算符〈逻辑运算符〈关系运算符〈算术运算符

26.若有代数式bc/3ac,则不正确的C语言表达式是(C) A.a/b/c*e*3 B.3*a*e/b/c C.3*a*e/b*c D.a*e/c/b*3

27.已知字母A的ASCII码为十进制数65,且c2为字型符,则执行语句c2='A'+'6'-'3'后,c2中的值为68

28.若以下变量均是整型,且num=sum=7;则计算表达式sum=num++,sum++,++num;后sum的值为8

29.设a,b,c,d,m,n均为int型变量,且a=5,b=6,c=7,d=8,m=2,n=2,则逻辑表达式(m=a>b) &&(n=c

30.若有定义:int a=7;float x=2.5,y=4.7,则表达式x+a%3*(int)(x+y)%2/4的值是2.500000 31.设x,y,z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为32 32.表达关系X<=Y<=Z的C语言表达式为(X<=Y)&&(Y<=Z) 33.运行结果为4的表达式是C.int i=1,j=1;i+=j+=2 34.表达式(a=3*5,a*5),a+5的值是A.20

35.设有整型变量a,b,c,它们的初值是1,运行表达式++a| |++b&&++c后,a,b,c的值分别是A.2,1,1

36.若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是B.(exp!=0) 37.当c的值不为0时,在下列选项中能正确将c的值赋给变量a,b的是C.(a=c) &&(b=c) 38.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是C.-12

第3章C语言程序的控制结构 3.1顺序结构程序设计 一、选择题

1.下列语句中,符合语法的赋值语句是(B) A.a=10 B.x=y==20 C.i++ D.m=2,n=5 2.下列语句中,正确的语句是(C) A.int x=y=z=0 B.int z=(x+y)++ C.x=+3==2 D.x%=2.5 3以下叙述中错误的是(C) A.C语句必须是以分号结束

B.复合语句在语法上被看作一条语句

C.空语句出现在任何位置都不会影响程序运行 D.赋值表达式末尾加分号就构成赋值语句 4.下列程序的输出是(C) #includevoid main()

{int a=011,b=101;printf(“\\n%x,%o”,++a,b++)} A.12,145 B.9,145 C.a,145 D.a,5 5.以下选项中不是C语句的是(C) A.{inti;i++;printf(“%d\\n”,i);} B.; C.a=5,c=10 D.{;}

6.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序编译时出错。 main(){intr;float;scanf(“%d”,&r);s=圆周率*r*r;printf(“s=%f\\n”,s);程序出错的原因是(D) A.注释语句书写位置错误

B.存放圆半径的变量r不应该定义为整型 C.输出语句中格式描述符非法

D.计算圆面积的赋值语句中使用了非法变量

7.若变量已正确定义,要将a和b中的数进行交换,下面不正确的语言组是(C) A.a=a+b,b=a-b,a=a-b B.t=a,a=b,b=t C.a=t;t=b;b=a D.t=b;b=a;a=t

8.设有如下程序段:int x=2002,y=2003;printf(“%d\\n”,(x,y));则以下叙述中正确的是输出值为2003 9.已知字符‘a‘的ASCII码为97,则下述程序段(C) char ch='a';int k=12;printf(“%x,%o”,ch,k);printf(“k=%%d”,k); 答案:C.输出为61,14,k=%d 10.下述程序的输出结果是(B)

#includemain(){int x=023;printf(“%d”,--x);}

A.17 B.18 C.23 D.24 11.下述程序的输出结果是(D) #includemain(){int k=11;printf(“k=%d,k=%o,k=%x\\n”,k,k,k);}答案:D.k=11,k=13,k=b 12.有如下定义:float x;unsigned;则(B)是合法的输入语句。

答案:B.scanf(“óo”,&x,&y) 13.对于下述语句,若将10赋给变量k1和k3,将20赋给变量k2和k4,则应按方式(D)输入数据int k1,k2,k3,k4;scanf(“%d%d”,&k1,&k2); scanf(“%d%d”,&k3,k4);

A.1020 B.10 20 102010 20 C.10,20 D.10 20 10,20,10,2014.有以下程序: main(){int a=666,b=888;printf(“%d\\n”,a,b);} A.错误信息 B.666 C.888 D.666,888

15.已知字符A的ASCII码值是65,以下程序(C)

#includemain(){chara=‘A';intb=20;printf(“%d,%o”,(a=a+1,a+b,b),a+‘a'-‘A',b);} A.表达式非法,输出零或不定值

B.因输出项过多,无输出或输出不定值 C.输出结果为20,142 D.输出结果为20,1541,20

16.对于条件表达式(M)?(a++):(a--),其中的表达式M等价于(C) A.M==0 B.M==1 C.M!=0 D.M!=1

17.若变量c定义为float类型,当从终端输入283.1900后按回车键,能给变量c赋以283.19的输入语句是(D) A.scanf(“%f”,c) B.scanf(“%8.4f”,&c) C.scanf(“%6.2f”,&c) D.scanf(“?”,&c)

18.设有定义:long x=-23456789L;则以下能够正确输出变量x值的语句是(B) A.printf(“x=%d\\n”,x) B.printf(“x=\\n”,x) C.printf(“x=?1\\n”,x) D.printf(“x=%LD\\n”,x)

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)

#includelong fun(int n){long s;if(n==1||n==2)s=2;else s=n-fun(n-1);return s;}main(){printf(“%d\\n”,妇女(3));} A.1 B.2 C.3 D.4

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 void fun1(){int x=0;x++;printf(“%d”,x);}void fun2(){static int x;x++;printf(“%d”,x);}main(){int j;for(j=0;j<3,j++){fun2();fun1();}} A.1,1,1,1,1,1 B.1,1,1,1,2,3 C.1,1,2,2,3,3 D.1,1,2,1,3,1 15.以下程序的输出结果是(B)

#include int m=3;main(){int fun (int k);int m=10;printf(“%d\\n”,fun(5)*m);}int fun (int k){if(k==0)return m;return(fun (k-1)*k);} A.360 B.3600 C.1080 D.1200 16.以下程序的输出结果是()

#include int d=1;fun(int p){static int d=5;d+=p;prntf(“%d”,d);return(d);}main(){int a=3;printf(“%d\\n”,妇女(a+fun(d)));}

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 #define M(x,y,z)x*y+z main(){int a=1,b=2,c=3;printf(“%d\\n”,M(a+b,b+c,c+a));}

A.19 B.17 C.15 D.12 20.以下程序的输出结果是(B) #include #define SQR(x)x*x main(){int a=16,k=2,m=1;a=(k+a)/SQR(k+m);printf(“%d\\n”,a);} A.16 B.12 C.9 D.1 21.有如下程序:

#include #define N2 #define MN+1 #define NUM2*M+1 main(){printf(“%d”,NUM);} A.5 B.6 C.7 D.8

22.以下程序的输出结果是(C)

#include #define(x)x*x main(){int a=6,b=2,c;c=f(a)/f(b);printf(“%d”,c);} A.9 B.6 C.36 D.18 23.若有以下宏定义:

#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 #define MAX (a,b)(a)>(b)(a):(a) #define PRINT(Y)printf(“Y=%d\\t”,Y)

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.以下能正确定义一维数组的选项是(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#defineN 6 main(){char c[N];int i=0;for(;i

输入以下3行,每行输入都是在第1列开始,代表1个回车键符: a b cdef 则程序输出的结果是(C)

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”,

“MNOP”,};for(k=1;k<3;k++)printf(“%s\\n”,&w[k][k]);} A.ABCD FGH KL B.ABCD EFG IJ M C.EFG JK O D.FGH KL

24.设有:static char str[]=“Beijing”;则执行:printf(“%d\\n”,strlen (stecpy (str,“China”)));后的输出结果是(A)

A.5 B.7 C.12 D.14

25.当执行下面程序输入:ABC时,输出结果是(A)

#include“stdio.h”#include“string.h”main(){char ss[10]=“12345”;strcat(ss,“6789”);gets(ss);printf(“%s\\n”,ss);}

A.ABC B.ABC9 C.123456ABC D.ABC456789 26.请选出以下语句的输出结果是(A) printf(“%d\\n”,strlen(“\\t\\”\\065\\xff“\\n”));

A.5 B.14 C.8 D.输出项不合法,无正常输出 27.下述程序的输出结果是(A) main(){char s[]=“-12345”;int k=0,sign,m;if(s[k]==‘+’||s[k]==‘-’)sign=s[k++]==‘+’?1:-1;for(m=0;s[k]>=‘0’&&s[k]<=‘9’;k++)m=m*10+s[k]-‘0';printf(“resault=%d”,sign*m);} A.resault=-12345 B.resault=12345 C.resault=-10000 D.resault=10000()

28。定义如下数组s:chars [40];若准备将字符串“This is a string”记录下来,(B)是错误的输入语句。

A.gets(s+2); B.scanf(“ s”,s); C.for (i=0;i<17;i++) s[i]=getchar( ); D.while((c=getchar()!=\\n) s[i++]=c;

29.当执行下面的程序时,如果输入ABC,则输出结果是(A) #include“stdio.h”#include“string.h” main(){char ss[10]=“1,2,3,4,5”;gets(ss);strcat (ss,“6789”);printf(“%s\\n”,ss);}

A.ABC6789 B.ABC67 C.12345ABCC6 D.ABC456789 30.有以下程序:

#include“stdio.h” void change (int k[]){k[0]=k [5];} main (){int x[10]={1,2,3,4,5,6,7,8,9,10},n=0;while (n<=4)【change (&x[n];n++;}for(n=0;n<5;n++) printf (“%d”,x[n]); printf(“\\n”);}程序运行后输出结果是(A)

A.678910 B.13579 C.12345 D.62345 31.有以下程序: #include“stdio.h” int fun(int x[],int n){staticint sum=0,i;for(i=0;i

#include“stdio.h”void sort(int a[],int n){int i,j,t;for(i=0;iC.1,2,7,6,5,4,3,8,9,10, D.1,2,9,8,7,6,5,4,3,10, 33.有以下程序:

#include“stdio.h” void sum (int a[]){a[0]=a[-1]+a[1];}main (){int a[10]={1,2,3,4,5,6,7,8,9,10};sum (&a [2]);printf(“%d\\n”,a [2]);}程序运行后输出结果是(A) A.6 B.7 C.5 D.8 34.有以下程序: #include“stdio.h” #define N 20 fun(int a [],int n,int m){int i;for(i=m;i>=n;i--)a [i+1]=a[i];} main (){int i,a[N]={1,2,3,4,5,6,7,8,9,10};fun (a,2,9);for(i=0;i<5;i++) printf(“%d”,a[i]);}程序运行后输出结果是(C)

A.10234 B.12344 C.12334 D.12234 35.有以下程序: #include“stdio.h” intf(int b[][4]){int i,j,s=0;for(j=0;j<4;j++){i=j;if(i>2)i=3-j;s+=b[i][j];}return s} main( ){int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,8,12},{3,2,1,0}};程序运行后输出结果是(D) A.12 B.11 C.18 D.16

第六章 指针 一、选择题

1.以下定义语句中正确的是(C)

A.char a=‘A’b=‘B'; B.float a=b=10.0; C.int a=10,*b=&a; D.float *a,b=&a; 2.若有定义:int x=0,*p&x;则语句printf(“%d\\n”,*p);的输出结果是(B) A.随机值 B.0 C.x的地址 D.p的地址 3.设有定义:“int n1=0,n2,*p=&n2,*&n1;”以下赋值语句中与“n2=n1;”语句等价的是(A) A.*p=*q; B.p=q; C.*p=&n1; D.p=*q; 4.已有定义,int k=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是(B)

A.k= *ptr1+ *ptr2; B.ptr2=k; C.ptr1=ptr2 D.k= *ptr1*( *ptr2); 5.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是(D) A.a,point,*&a B.&*a,&a,*point C.*&point,*point,&a D.&a,&*point,point

6.若需建立如图所示的存储结构,且已有说明float*p,m=3.14;则正确的赋值语句是(B) A.p=m B.p=&m; C.*p=m D.*p=&m

7.若有说明:int*p,m=5,n;以下正确的程序段是(D) A.p=&n;scanf(“%d,&p”); B.p=&n;scanf(“%d”,*p); C.scanf(“%d”,&n);*p=n; D.p=&n;*p=m;

8.若有说明:int*p1,*p2,m=5,n;以下均是正确赋值语句的选项是(C) A.p1=&m;p2=&p1; B.p1=&m;p2=&n;*p1= *p2; C.p1=&m;p2=p1; D.p1=&m;*p2=*p1; 9.有如下程序段:

int *p,a=10,b=1;p=&a;a=*p+b; 执行该程序段后,a的值为(B) A.12 B.11 C.10 D.编译出错 10.设char *s=“\\ta\\o17bc”;则指针变量s指向的字符串所占的字节数是(C)

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

11.下面程序段中,for循环的执行次数是(B)。 char *s=“\\ta\\o17bc”;for(;* s!=‘\\0';s++)printf(“*”); A.9 B.5 C.6 D.7 12.下面程序段的运行结果是(C) char *s=“abcde”;s+=2;printf(“%d”,s);

A.cde B.字符‘c' C.字符‘c'的地址 D.无确定的输出结果

13.设p1和p2是指向同一个字符中的指针变量,c为字符变量,则以下不能正确执行的赋值语句是(B)

A.c=*p1+ *p2; B.p2=c;

C.p1=p2; D.c=*p1*(*p2); 14.设有下面的程序段: char s[]=“china”;char*p;p=s; 则下列叙述正确的是(D) A.s和p完全相同

B.数组s中的内容和指针变量p中内容相等 C.s数组长度和p所指向的字符串长度相等 D.*p与s[10]相等

15.以下正确的程序段是(C) A.char str [20];scanf(“%s”,&str); B.char *p;scanf(“%s”,p); C.char str[20];scanf(“%s”,&str[2]; D.char str[20],*p=str;scanf(“%s”,p[2]); 16.下面程序段的运行结果是(B) char str[]=“abc”,*p=str;printf(“%d\\n”,*(p+3)); A.67 B.0 C.字符‘C’的地址 D.字符‘C' 17.下面程序段的运行结果是(C) char a[]=“language”,*p;p=a;while(*p!=‘u'){printf(“%c”,*p-32);p++; A.LANGUAGE B.a+2 C.&a+1 D.&a[0]

18.若有以下定义,则对a数组元素的正确引用是(D) int a[5],*p=a;

A.*&[5] B.a+2 C.&a+1 D.*(a+2)

19.若有以下定义,则对a的数组元素地址的正确引用是(D) int a[5],*p=a;

A.p+5 B.* a+1 C.&a+1 D.&a[0]

20.若有定义:int a[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素值的正确引用为(A)

A.*(*(a+i)+j) B.(a+j)[j] C.*(a+i+j) D.*(a+i)+j

21.若有定义:int a[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的正确引用为(D)

A.*(a[i]+j) B.(a+j) C.*(a+j) D.a[i]+j 22.运行程序的输出结果是(C)

main(){int I,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(I=0;I<4;I+=2)printf(“%d”,p[I]);}

A.52 B.51 C.53 D.97

23.若有定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是(C)

A.p+1 B.a+1 C.a++ D.++p

24.若有以下的说明和语句,则在执行for语句后,*(*(pt+1+2)表示的数组元素是(C) intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0]; A.t[2][0] B.t[2][2] C.t[1][2] D.t[2][1] 25.以下程序的输出结果是(C) main(){char ch[3][4]={“123”,“456”“,78”},*p[3];int i;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++) printf(“%s”,p[i]);}

A.123456780 B.123 456 780 C.12345678 D.147 26.以下程序的输出结果是(B) main(){char *s=“12134211”;int v[4]={0,0,0,0},k,i;for(k=0;s[k];k++){switch (s[k]){case‘1':i=0;case‘2':i=1;case‘3':i=2;case‘4':i=3;}v[i]++;}for(k=0;k<4;k++) printf(“%d”v[k]);} A.4 2 1 1 B.0008 C.4678 D.8888 27.以下程序的输出结果是(D)

#include“string.h”main(){char *p1,*p2,str[50]=“ABCDEFG”;p1=“abcd”;p2=“efgh”;strcpy(str+1,p2+1);strcpy(str+3,p1+3); printf(“%s”,str);} A.AfhhEFG B.Abfhd C.Afghd D.Afgd 28.下列程序执行后输出结果是(A)

void fun c(int *a,int b[]){b[0]=*a+6;}main(){int a,b[5];a=0;b=[0]=3;func(&a,b);printf(“%d\\n”,b[0]);}

A.6 B.7 C.8 D.9

29.下列程序执行后的输出结果是(B)

main(){int a[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i+1;printf(“%d\\n”,a[1][2]);} A.3 B.6 C.9 D.随机数 30.下列程序的输出结果是(B) int b=2;int fun c(int *a){b+=*a;return(b);}main(){int a=2,res=2;res+=func(&a);printf(“%d\\n”,res);} A.4 B.6 C.8 D.10

31.以下函数返回a所指数组中最小的值所在的下标值。

fun(int *a,int n){int i,j=0,p;【】p=j;for(i=j;iA.i=p B.a[p]=a[i] C.p=j D.p=i 32.有如下程序:

main(){char s[]=“ABCD”,*p;for(p=s+1;p

A.ABCD BCD CD D B.A B C D C.B C D D.BCD CD D 33.有如下程序: main(){char ch[2][5]={“6937”,“8254”},*p[2];int i,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][i]>‘\\0’;j+=2)s=10*s+p[i][j]-‘0’;printf(“%d\\n”,s);}

该程序的输出结果是(C)

A.69825 B.63825 C.6385 D.693825 34.下列程序段的输出结果是(A) void fun(int *x,int *y){printf(“%d%d”,*x,*y);*x=3;*y=4;}main(){int x=1,y=2;fun(&y,&x);printf(“%d%d”,x,y);}

A.2143 B.1212 C.1234 D.2112 35.以下程序的输出结果是(B) char (char ch){if(ch>=‘A’&&ch<=‘Z’)ch=ch-‘A’+‘a’;return ch;}main(){char s[]=“ABC”+abc=defDEF”,*p=s;while(*p){*p=c char(*p);p++;}printf(“%s\\n”,s);} A.abc+ABC=DEFdef B.abc+abc=defdef C.abcaABCDEFdef D.abcabcdefdef 36.以下程序的输出结果是(D)

#include#includemain(){char b1[18]=“abcdefg”,b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pb);printf(“%d\\n”,strlen(b2));} A.8 B.3 C.1 D.7

37.语句int(*ptr)()的含义是(C) A.ptr是指向一维数组的指针变量 B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向int型数据的指针

38.已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是(A) A.p=max; B.*p=max C.p=max(a,b); D.*p=max(a,b) 39.已有定义int(*p)();指针p可以(B)

A.代表函数的返回值 B.指向函数的人口地址 C.表示函数的类型 D.表示函数返回值的类型

40.若有说明:long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是(A) A. *p=&a;scanf(“”,p); B.p=(long *)malloc(8);scanf(“”,p); C.scanf(“”,p=&a); D.scanf(“”,&a);

第七章 结构体和共用体 一、选择题

1.设有以下语句:

typedefestruct TT{char c;int a[4];}CIN;则下面叙述中正确的是(C) A.可以用TT定义结构体变量 B.TT是struct类型的变量 C.可以用CIN定义结构体变量 D.CIN是struct TT类型的变量 2.设有以下说明语句:

struct stu{int a;float b;}stutype;则下面的叙述不正确的是(C)

A.struct是结构体类型的关键字 B.struct stu是用户定义的结构体类型 C.struct是用户定义的结构体类型名 D.a和b都是结构体成员名 3.以下程序的运行结果是(D)

#include“stdio.h”main(){struct date{int year,month,day;}today;printf(“%d\\n”,sizeof (struct date));}

A.6 B.8 C.10 D.12

本文来源:https://www.bwwdw.com/article/9lga.html

Top