《C语言知识试题选择题及其答案解析.doc》由会员分享,可在线阅读,更多相关《C语言知识试题选择题及其答案解析.doc(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、/第1 题:阅读程序,选择程序的运行结果_A_。#include main() int x; x=try(5); printf(“%dn”, x); try(int n) if(n0) return(n*try(n-2); else return(1); A.15B.120C.1D.前面3个答案均是错误的第2 题:在下列结论中,只有一个是正确的,它是_A_。A.递归函数中的形式参数是自动变量 B.递归函数中的形式参数是外部变量C.递归函数中的形式参数是静态变量D.递归函数中的形式参数可以根据需要自己定义存储类型第3 题:阅读程序,选择程序的输出结果_A_。#include f(int x, i
2、nt y) return(y-x); main() int (*g)(int,int);int a=5, b=6, c=2; g=f; c=(*g)(a,b); printf(“%dn”, c);A.1B.2C.3D.前面3个答案均是错误的第4 题:阅读程序,选择程序的输出结果_D_。#include char *p=”abcdefghijklmnopq”;main() while(*p+!=e) ; printf(“%cn”, *p); A.cB.dC.eD.f第6 题:阅读程序,选择程序的输出结果_D_。#include void prtv(int *x) printf(”%dn”, +*
3、x); main() int a=25; prtv(&a);A.23B.24C.25D.26第7 题:阅读程序,选择程序的输出结果_B_。#include main() static char a = ”language”, b=”program”; char *ptr1=a, *ptr2=b; int k; for(k=0; k7; k+) if(*(ptr1+k)=*(ptr2+k) printf(”%c”, *(ptr1+k);A.gae B.gaC.languageD.有语法错误第8 题:函数调用strcat(strcpy(str1, str2), str3)的功能是_C_。A.将串s
4、tr1复制到串str2中,然后再连接到str3之后 B.将串str1连接到串str2之后,再复制到str3之中 C.将串str2复制到串str1中,然后再将串str3连接到串str1之后D.将串str2复制到串str1中,再将串str1连接到str3之后第9 题:设有以下程序段,则在main函数中使用语句_D_是无意义的。main() int min(); int a, b, c, (*p)(); p=min; min(x, y)int x, y; A.printf(”%dn”, min(a,b); B.c=min(a, b);C.c=(*p)(a,b); D.p+;第10 题:已知stati
5、c int a23=2,4,6,8,10,12; 正确表示数组元素地址的是_A_。A.*(a+1) B.*(a1+2)C.a1+3 D.a00第11 题:已知int i, x34; 则不能将x11的值赋给变量i的语句是_C_。A.i=*(*(x+1)+1) B.i=x11C.i=*(*(x+1) D.i=*(x1+1)第12 题:当c的值不为0时,在下列选项中能够将c的值赋给变量a、b的是_C_. A.c=b=a;B.(a=c)|(b=c); C.(a=c)&(b=c);D.a=c=b;第13 题:函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能正确执行此功能的函数是_D_。
6、A.funa(int *x, int *y) int *p;*p=x; *x=*y; *y=*p;B.funb(int x, int y) int t;t=x; x=y; y=t;C.func(int *x, int *y) *x=*y; *y=*x;D.fund(int *x, int *y) *x=*x+*y; *y=*x-*y; *x=*x-*y;第14 题:已知int x=1,3,5,7,9,11, *ptr=x; 则不能正确引用数组元素的语句是_B_。A.*(ptr-)B.*(-ptr)C.*(ptr+)D.*(+ptr)第15 题:已知int *ptr1, *ptr2; 均指向同一
7、个int类型一维数组中的不同元素,k为int类型变量,则下面错误的赋值语句是_B_。A.k=*ptr1+*ptr2;B.ptr2=k;C.ptr1=ptr2;D.k=*ptr1*(*ptr2);第16 题:已知chars110, *s2=”ab0cdef”; 则执行语句strcpy(s1,s2); 后,变量s1的内容为_A_。A.ab B.cdefC.ab0cdef D.内容不定第17 题:以下有关宏替换叙述中,错误的是_D_。A.宏替换不占用运行时间 B.宏无类型名 C.宏替换只是字符替换D.宏名必须用大写字母表示第18 题:C语言主函数main最多允许有_B_个参数。A.1B.2C.0D.
8、3第19 题:C语言的编译系统对宏定义是_D_。A.在程序运行时进行替换处理B.在程序连接时进行处理C.和源程序中其他C语句同时进行编译的D.在对源程序中其他成分正式编译之前进行处理的第20 题:已知int *p; 则变量p是_B_。A.指向int的指针B.指向指针的指针C.int型变量D.以上3种说法均是错误的第21 题:已知int i; char *s=”a045+045b”; 执行语句for(i=0; *s+; i+); 之后,变量i的结果是_B_。A.7B.8C.9D.以上3个答案都是错误的第22 题:已知int i=0, j=1, *p=&i, *q=&j; 错误的语句是_D_。A.
9、i=*&j;B.p=&*&i;C.j=*p+;D.i=*&q;第23 题:已知int a=1,2,3,4,5,6,7,8,9,10,11,12, *p=a; 则值为3的表达式是_A_。A.p+=2, *(p+)B.p+=2, *+pC.p+=3, *p+D.p+=2, +*p第24 题:已知int a34, *p=a; p+=6; 那么*p和_D_的值相同。A.*(a+6)B.*(&a0+6) C.*(a1+2) D.*(&a00+6)第25 题:已知int a43=1,2,3,4,5,6,7,8,9,10,11,12; int (*ptr)3=a, *p=a0;则以下能够正确表示数组元素a1
10、2的表达式是_D_。A.*(ptr+1)2) B.*(*(p+5) C.(*ptr+1)+2D.*(*(a+1)+2)第26 题:已知char *s; 正确的语句是_B_。A.s=”computer”;B.*s=”computer”;C.*s=”computer”; D.*s=A;第27 题:已知char s20= ”programming”, *ps=s; 则不能引用字母o的表达式是_A_。A.ps+2B.s2C.ps2 D.ps+=2, *ps第28 题:已知char b5, *p=b; 则正确的赋值语句是_C_。A.b=”abcd”;B.*b=”abcd”;C.p=”abcd”;D.*p
11、=”abcd”;第29 题:已知char s100; int i; 则在下列引用数组元素的语句中,错误的表示形式是_D_.A.si+10 B.*(s+i)C.*(i+s) D.*(s+)+i)第30 题:已知char s10, *p=s; 则下列语句中,错误的语句是_B_。A.p=s+5;B.s=p+s; C.s2=p4D.*p=s0;第31题:(103)以下程序的输出结果是_D_。 #include main() int x=10, y=10; printf(“%d %dn”, x-, -y); A.10 10B.9 9C.9 10D.10 9第32 题:已知double *p6; 它的含义
12、是_C_。A.p是指向double类型变量的指针 B.p是double类型数组C.p是指针数组 D.p是数组指针第33 题:说明语句int *(*p)(); 的含义是_D_。A.p是一个指向int型数组的指针B.p是指针变量,它构成了指针数组C.p是一个指向函数的指针,该函数的返回值是一个整型D.p是一个指向函数的指针,该函数的返回值是一个指向整型的指针第34 题:已知int a, *p=&a; 则下列函数调用中错误的是_D_。A.scanf(”%d”, &a);B.scanf(”%d”, p); C.printf(”%d”, a); D.printf(”%d”, p);第35 题:已知int
13、 *p, a; 则语句p=&a; 中的运算符&的含义是_D_。A.位与运算B.逻辑与运算C.取指针内容 D.取变量地址第36 题:下面程序的功能是将字符串s中所有的字符“c”删除。请选择填空。# include main() char s80; int i, j; gets(s); for(i=j=0; si!=0; i+) if(si!=c) _A_ sj!=0; puts(s); A.sj+=si;B.s+j=si;C.sj=si; j+;D.sj=si第37 题:阅读下列程序,选择程序的运行结果_B_。#include main() int i, k, a10, p3; k=5; for
14、(i=0; i10; i+) ai=i; for(i=0; i3; i+) pi=ai*(i+1); for(i=0; i3; i+) k+=pi*2; printf(“%dn”, k);A.20B.21C.22D.23第38 题:下述程序的输出结果是_A_。 #include main() printf(“%f”, 2.5+1*7%2/4); A.2.500000 B.2.750000C.3.375000 D.3.000000第39 题:下面程序的输出结果是_B_。 #include main() printf(“%dn”, NULL); A.-1B.0C.1D.程序是错误的第40 题:在下
15、面的程序段中,每行前面的数字表示行号,则下面程序_D_。1 main()2 3 int a3;4 int i;5 for(i=0; i3; i+) scanf(“%d”, &ai);6 for(i=1; i3; i+) a0=a0+ai;7 printf(“%fn”, a);8 A.没有错误 B.第5行有错误C.第6行有错误D.第7行有错误第41 题:在下面的程序段中,每行前面的数字表示行号,则下面程序_C_。1 main()2 3 float a10;4 int i;5 for(i=0; i3; i+) scanf(“%d”, &ai);6 for(i=1; is2) B.if(strcmp
16、(s1s2) C.if(strcmp(s2s1)0) D.if(strcmp(s1s2)0)第45 题:已知char a20, b20; 则以下正确的输入语句是_B_。A.gets(a,b);B.scanf(“%s%s”, a, b); C.scanf(“%s%s”, &a, &b);D.gets(“a”), gets(“b”);第46 题:若二维数组a由m列,则在aij之前的元素个数为_B_。A.j*m+i B.i*m+j C.i*m+j-1D.i*m+j+1第47 题:下列数组说明语句中错误的是_B_。A.double x5=2.0, 4.0, 6.0, 8.0, 10.0; B.int
17、y5=0,1,3,5,7,9;C.char c1=1,2,3,4,5; D.char c2=x10,xa,x8;第48 题:在C语言中,二维数组元素在内存中的存放顺序是_A_。A.按行存放 B.按列存放C.由用户自己定义 D.由编译器决定第49 题:已知static int a34; 则数组a中个元素_B_。A.可在程序的运行阶段得到初值0 B.可在程序的编译阶段得到初值0 C.不能得到确定的初值D.可在程序的编译或运行阶段得到初值0第50 题:语句typedef long class的作用是_D_。A.建立了一种新的数据类型B.定义了一个整型变量C.定义了一个长整型变量D.定义了一个新的数据
18、类型标识符第51 题:已知staticint a34=0; 则下面正确的叙述是_D_。A.只有元素a00可以得到初值0B.此说明语句是错误的C.数组a中每个元素都可得到初值,但其值不一定为0 D.数组a中每个元素均可得到初至0第52 题:以下能对外部的二维数组a进行初始化错误的语句是_C_。A.int a23=0; B.int a3=1,2, 0; C.int a23=1,2, 3,4, 5,6;D.int a3=1,2,3,4,5,6;第53 题:以下能对外部的二维数组a进行正确初始化的语句是_B_。A.int a2=1,0,1, 5,2,3; B.int a3=1,2,3, 4,5,6;
19、C.int a24=1,2,3, 4,5, 6; D.int a3=1,0,1, , 1,1;第54 题:(105)为了求i的3次方,请选择一个表达式填入_D_,使程序可以正确执行。 #define CUBE(x) (x*x*x) main() int i=4; print(“n%d”, CUBE( );A.i*i*iB.x*x*xC.x D.i第55 题:已知int a10; 则对a数组元素的正确引用是_D_。A.a10B.a3.5C.a(5)D.a10-10第56 题:在C语言中,引用数组元素时,其数组下标的数据类型允许是_C_。A.整型常量 B.整型表达式C.整型常量或整型表达式D.任何
20、类型的表达式第57 题:已知char str=”abn012”; 则执行语句:printf(“%d”, strlen(str);的结果是_C_.A.3B.4C.6D.12第58 题:下面关于字符串的说明中,错误的是_A_。A.char str7=”FORTRAN”; B.char str=”FORTRAN”; C.char *str=”FORTRAN”; D.char str=F,O,R,T,R,A,N,0;第59 题:以下程序段的输出是_A_。static char a=“-12345”;int k=0, symbol, m;if(ak=+|ak=-) symbol=(ak+=+)?1:-1
21、;for(m=0; ak=0&ak=9; k+) m=m*10+ak-0;printf(“number=%dn”, symbol*m);A.number=-12345 B.number=12345 C.number=-10000 D.number=10000第60 题:已知char str110, str210=“books”; 则在程序中能够将字符串“books”赋给数组str1的正确语句是_B_。A.str1=“books”; B.strcpy(str1, str2); C.str1=str2 D.strcpy(str2, str1);第61 题:若有以下语句,则正确的描述是_B_。 st
22、atic char x=“12345”; static char y=1, 2, 3, 4, 5;A.x数组和y数组的长度相同 B.x数组长度大于y数组长度C.x数组长度小于y数组长度D.x数组等价于y数组第62 题:在下述对C语言字符数组的描述中错误的是_C_。A.字符数组可以存放字符串B.字符数组中的字符串可以进行整体输入/输出 C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D.字符数组的下标从0开始第63 题:要说明一个有10个int元素的数组,应当选择语句_A_。A.int a10;B.int a2,5;C.int a;D.int *a10;第64 题:已知char s5
23、, c; register char b; 则调用函数scanf的正确语句是_D_。A.scanf(“%s%c”, s, c);B.scanf(“%d%c”, &b, &c);C.scanf(“%d%c”, b, &c);D.scanf(“%s%c”, s, &c);第65 题:错误的说明语句是_D_。A.static char word=T, u, r, b, o, 0;B.static char word=“Turbo0”;C.static char word=“Turbo0”;D.static char word=Turbo0;第66 题:请选择下列程序的运行结果_A_。#include
24、 int d=1;fun(int p) int d=5; d+=p+; printf(“%d ”, d); main() int a=3; fun(a); d+=a+; printf(“%d”, d);A.8 4 B.9 6C.9 4D.8 5第67 题:请选择下列程序的运行结果_D_。#include try() static int x=3; x+; return(x); main() int i, x; for(i=0; i=2; i+) x=try(); printf(“%dn”, x);A.3B.4C.5D.6第68 题:请选择下列程序的运行结果_C_。#include fun(in
25、t *p) int a=10; *p=a; +a; main() int a=5; fun(&a); printf(“%dn”, a); A.5B.6C.10D.11第69 题:以下错误的描述为_C_。A.在函数之外定义的变量称为外部变量,外部变量是全局变量B.在一个函数中既可以使用本函数中的局部变量,又可以使用外部变量C.外部变量定义和外部变量声明的含义相同 D.若在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。第70 题:在一个C源程序文件中,若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要的存储类别是_D_。A.extern B.reg
26、ister C.auto D.static第71 题:C语言中,对于存储类型为_D_的变量,只有在使用它们时才占用内存单元。A.static和auto B.register和extern C.register和static D.auto和register第72 题:C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是_B_。A.地址传递 B.值传递 C.由实参传给形参,并由形参传回来给实参 D.由用户指定传递方式第73 题:以下描述错误的是_D_。A.不同函数中可以使用相同的变量名B.形式参数是局部变量 C.一个函数内部定义的变量只能在本函数范围有效D.在一个函数内部的复合语句中
27、定义的变量可以在本函数范围内有效第74 题:C语言中函数返回值的类型是由_D_决定的。A.return语句中的表达式类型 B.调用该函数的主调函数类型C.调用函数时临时D.定义函数时所指定的函数类型第75 题:已知int* p(); 这里的p是_C_。A.指向int类型的指针变量 B.int类型的指针数组C.一个函数,该函数的返回值是指向int类型的指针变量 D.一个指向函数的指针变量,该函数的返回值是int类型第76 题:以下叙述中错误的是_C_。A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容C.在C语言中,外
28、部变量的隐含类别是自动存储类别D.在C语言中,函数形参的存储类型是自动(auto)类型的变量第77 题:已知函数abc的定义为: void abc() 则函数定义中void的含义是_A_。A.执行函数abc后,函数没有返回值 B.执行函数abc后,函数不再返回C.执行函数abc后,可以返回任意类型 D.以上3个答案全是错误的第78 题:以下描述正确的是_C_。A.C语言程序总是从第一个定义的函数开始执行B.在C语言程序中,要调用的函数必须在main()函数中定义C.C语言程序总是从main()函数开始执行D.C语言程序中的main()函数必须放在程序的开始部分第79 题:C语言程序由函数组成,
29、它的_B_。A.主函数必须在其他函数之前,函数内可以嵌套定义函数B.主函数可以在其他函数之后,函数内不可以嵌套定义函数C.主函数必须在其他函数之前,函数内不可以嵌套定义函数D.主函数必须在其他函数之后,函数内可以嵌套定义函数第80 题:选择下面程序的运行结果_A_。#include main() int k=1; char c=A; do switch(c+) case A: k+; break; case B: k-; case C: k+=2; break; case D: k=k%2; continue; case E: k=k*2; break; default: k=k/3; k+;
30、 while(cF); printf(“k=%dn”, k);A.k=1B.k=15 C.k=12 D.以上结果都不对第81 题:阅读程序,写出程序的输出结果_D_。#include main() int x=10, y=10, i; float s; for(i=0; x8; y=+i) printf(“%d %d ”, x-, y); A.10 1 9 2 B.9 8 7 6C.10 9 9 0 D.10 10 9 1第82 题:若a、b、c、d、t均为int类型变量,则执行以下程序段后的结果为_C_。 #define MAX(A,B) (A)(B)?(A):(B) #define PRI
31、NT(Y) printf(“Y=%dn”, Y) a=1; b=2; c=3; d=4; t=MAX(a+b,c+d); PRINT(t);A.Y=3 B.存在语法错误C.Y=7 D.Y=0第83 题:阅读程序,写出程序的输出结果_B_。#include main() char i, j; for(i=0, j=9; ij; i+, j-) printf(“%c%c”, i, j); printf(“n”); A.01234567890B.0918273645 C.9876543210D.以上3个答案均不对第84 题:阅读程序,写出程序的输出结果_D_。#include main() int
32、i=0, j=0, k=0, m; for(m=0; m4; m+) switch(m) case 0: i=m+; case 1: j=m+; case 2: k=m+; case 3: m+; printf(“n%d, %d, %d, %d”, i, j, k, m); A.0, 0, 2, 4B.0, 1, 2, 3 C.0, 1, 2, 4D.0, 1, 2, 5第85 题:如果下列程序可以正常运行,则当从键盘输入字母A时,输出结果为_B_。#include main() char ch; ch=getchar(); switch(ch) case 65: printf(“%c”, A
33、); case 66: printf(“%c”, B); default: printf(“%s”, “other”); A.AB.ABotherC.AotherD.编译错误,无法运行第86 题:下列程序的运行结果是_C_。 #include main() int a=2, b=-1, c=2; if(ab)if(b0) c=0; else c+=1; printf(“%dn”, c); A.0B.1C.2D.3第87 题:若int x=3; 且有下面的程序片段,则输出结果为_C_。 do printf(“%d ”, x-=2); while(!(-x);A.1B.3 0C.1 -2D.死循环
34、第88 题:若int a=5; 则执行以下语句后,打印的结果为_A_。 do printf(“%2dn”, a-); while(!a);A.5B.不打印任何内容C.4D.陷入死循环第89 题:若int i, x; 则for(i=x=0; i9&x!=5; i+, x+)控制的循环体将执行_C_次。A.10B.9C.5D.6第90 题:定义int i=1; 则执行语句while(i+5); 后, i的值为_D_。A.3B.4C.5D.6第91 题:在while(x)语句中的x与下面条件表达式等价的是_D_。A.x=0 B.x=1C.x!=1 D.x!=0第92 题:下面的for语句_C_。 for(x=0, y=0; (y!=123)&(x4); x+) ;A.是无限循环B.循环次数不定C.循环执行4次D.循环执行3次第93 题