C语言题库(含参考答案).doc_第1页
C语言题库(含参考答案).doc_第2页
C语言题库(含参考答案).doc_第3页
C语言题库(含参考答案).doc_第4页
C语言题库(含参考答案).doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计试题库1. 以下选项中,非法的字符常量是 C 。A)n B)t C)“n” D)x0a2. 在C语言中,合法的八进制常量是 B 。A)32B)016C)0X2d D)-1003. 在C语言中,合法的长整型常量是 B 。A)3276893 B)27LC)3.14D)655354. 十进制整数200的十六进制表示为 D 。5. 下列叙述中正确的是 A)C语言编译时不检查语法 B)C语言的子程序有过程和函数两种 C)C语言的函数可以嵌套定义 D)C语言所有函数都是外部函数6. 设x,y,t均为int型变量,则执行语句:x=y=2;t=+x|+y;后,y的值为 C 。/*运算符*/A)4 B)3 C)2 D)17. 设x,y,z均为int型变量,则执行语句:x=8,y=6;z=+x&+y;后y的值为 B 。A)8B)7 C)6 D)不定值8. 能正确表示关系xyz的C语言表达式为 A 。 A)(x=y)&(y=z) B)(x=y)AND(y=z)C)(x=y=z) D)(x=y)&(y=10 or a=10 & a=10 | a=0 | a=1010. 以下合法的赋值语句是 A 。A)x=y=100; B)d-; C)x+y; D)c=int(a+b);(无值)11. 设x、y、z被定义为int型变量,要从键盘给它们输入数据,正确的输入语句是 B 。 A)INPUT x、y、z; B)scanf(“%d%d%d”,&x,&y,&z); C)scanf(“%d%d%d”,x,y,z); D)read(“%d%d%d”,&x,&y,&z);12. 设x、y均为int型变量,且x=6,y=3,则语句printf(”%d,%dn”,x+,+y);的输出结果是 C 。A)6,3 B)7,3 C)6,4 D)7,413. 以下程序的输出结果是 B 。#includemain( ) int i=010,j=10; printf(“%d,%d”,+i,j-);A)11,10 B)9,10 C)010,9 D)10,914. 若有定义:int a , b=5,*p=&a; 则能完成“a=b”赋值功能的语句是 D 。 A)a=*p;B)a=&b;C)a=*p;D)*p=*&b;15. 表达式x=14/3*4的值为 C 。A)0B)1C)16 D)1716. 表达式x=7%(5/2)的值为 B 。A)0B)1C)2D)317. 函数调用语句“func(x1,x2+x3,(x4,x5);”中含有的实参个数是 A 。A)3B)4C)5D)有语法错误18. 以下程序的输出结果是 C 。main() int a=4; printf(”%dn”,(a-=a+=a*a); A)-6 B)12 C)0 D)-1219. 设t为int型变量,进入下面的循环之前,t的值为0(或3、或未初始化)while(t=1) /*循环条件的判断*/ 则以下叙述中正确的是 B 。 A)循环控制表达式的值为0 B)循环控制表达式的值为1C)循环控制表达式不合法 D)以上说法都不对20. 当调用一个函数时,如果实参是一个数组名,则向函数传递的是 B 。/*参数传递*/ A)数组的长度 B)数组的首地址 C)数组每一个元素的地址 D)数组每个元素中的值21. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是 B 。 A)地址传递 B)单向值传递 C)由实参传递给形参,再由形参传回实参 D)传递方式由用户指定22. 以下函数值的类型是 A 。fun(float x) float y; y=3*x-4;return y;A)int B)不确定 C)void D)float23. 以下程序的输出结果是 D 。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(”%dn”,r);A)12 B)13 C)14 D)1524. 设有以下函数:int f(int a) int b=0; static int c=3; b+; c+; return (a+b+c); 如果在下面的程序中调用该函数,则输出结果是 B 。main() int a=2,j,val; for(j=0;j3;j+)val=f(a);printf(”%dn”,val); A)7 B)9 C)11 D)1325. 以下程序执行后sum的值为 C 。 A)15 B)14 C)不确定 D)0main() int i,sum; for(i=1;i6;i+)sum+=i; printf(”%dn”,sum);26. 以下程序的输出结果是 C 。 A)非法 B)a2的地址 C)8 D)7main() char a10=9,8,7,6,5,4,3,2,1,0,*p=a+1;printf(”%d”,*p); 27. 以下程序的输出结果是 D 。 A)15 B)13 C)11 D)7main() int a=1,3,5,7,9,11,13,15,17,19,*p;p=a;printf(”%dn”,*p+6);28. 以下程序的输出结果是 10 。 main() int arr=30,25,20,15,10,5,*p=arr; p+; printf(”%dn”,*(p+3); 29. 以下定义中,错误的是 B 。A)int a =0,1,2,3; B)int n=5,an;C)char s20=”test”; D)char *a5; 30. 若有定义:float x5=0,2,4;,则数组x在内存中所占字节数是 D 。A)3 B)6 C)10 D)2031. 以下程序的输出结果是 C 。main() int k,a10; for(k=0;k10;k+)ak=10-k; printf(”%d%d%d”,a2,a5,a8); A)258 B)741 C)852 D)36932. 以下数组定义中不正确的是 D 。A)int a23; B)int a3=0,1,2,3;C)int a =0,1,2,3,4,5,6,7,8,9; D)int d3 =1,2,3,4,5,6,7,8,9;33. 以下程序的输出结果是 6,20 main() char st20=”hello.0t”; printf(”%d,%dn”,strlen(st),sizeof(st); 34. 以下选项中,不能正确赋值的是 A 。A)char s10; s=”China”; B)char s =t,e,s,t;C)char s20=”Hello.”; D)char *s4=”China”;35. 以下只有在使用时才为该类型变量分配内存的存储类说明是 B 。 A)auto 和static B)auto 和register C)register 和static D)extern 和register36. 当执行下面的程序时,如果输入123,则输出结果是 1236789 。#include “stdio.h”#include “string.h”main() char ss10;gets(ss);strcat(ss,”6789”);printf(”%sn”,ss);37. 以下程序的输出结果是 B 。 A)1 B)2 C)3 D)4 long fun(int n)/递归函数 long s; if(n= = 1 | n= =2 )s=2; else s=n-fun(n-1); return s;main() printf(”%dn”,fun(5);38. 有如下程序段int *p,a=10,b=2;p=&a;a=*p+b;执行该程序段以后,a的值为 A 。A)12B)11C)10D)编译出错39. 以下函数返回指针a所指向的数组中最小元素值所在的下标。int fun(int *a , int n) int i,j=0 , p;p=j;for(i=j;in;i+) if(aiap) ;return (p);在下划线处应填入的是 D 。A)i=pB)ap=aiC)p=jD)p=i40. 有如下程序#define N 2#define M N+1#define NUM 2*M+1main( ) int j; for(j=1;j=NUM;j+)printf(“%dn”,j);该程序中的for循环执行的次数是 B 。A)5B)6C)7D)841. 有如下定义:struct person char name9; int age;struct person class10=“John”,17,”Paul”,19,”Mary”,18,”Adam”,16;根据上述定义,能输出字母M的语句是 D 。A)printf(“%cn”,); B)printf(“%cn”,1);C)printf(“%cn”,1); D)printf(“%cn”,0); 42. C编译系统为一个结构体变量所分配的存储空间是 D 。A)该结构体中第一个成员所需的存储空间B)该结构体中最后一个成员所需的存储空间C)该结构体中占用最大存储空间的成员所需的存储空间D)该结构体中所有成员所需存储空间的总和43. 在下面的程序段中,要使指针变量p指向一个存储整型变量的动态存储单元,应填入 D 。int *p;p= malloc(sizeof(int);A)int B)int * C)(*int) D)(int*)44. 以下程序的运行结果是 D 。#include “stdio.h”int a =2,4,6,8;main() int i;int *p=a;for(i=0;ii0=0x39;s-i1=0x38;printf(”%cn”,s-c0);A)8 B)9 C)38 D)3946. 设有函数定义如下:void fun( ) *ptr=(double*)malloc(10*sizeof(double);ptr是函数fun的形参,要求通过ptr将动态分配的存储单元首地址传回主调函数,则形参ptr的正确定义应该是 C 。A)double*ptrB)float*ptr C)double*ptr D)float*ptr47. 若有定义:int a=10,b=9,c=8;在顺序执行下列语句后,变量b中的值是 3 。c=(a-=(b-5);c=(a%11)+(b=3);48. 要使以下程序输出10个整数,请填入一个整数。for(j=0;j= 18 ;printf(”%dn”,j+=2));49. 若输入字符串:abcde,则以下while循环体将执行 0 次。while(ch=getchar()=e)printf(”*”);50. 以下程序的输出结果是 246 。/*静态局部变量的作用*/void fun() static int a=0; a+=2; printf(”%d”,a); main() int c; for(c=1;c4;c+)fun(); printf(”n”); 51. 以下程序的输出结果是 21 。 main() int a=1,b=2; a=a+b; b=a-b; a=a-b; printf(”%d%dn”,a,b); 52. 以下程序的输出结果是 Hello 。 main() char b=”Hello,you”; b5=0; printf(”%sn”,b); 53. 以下程序段的输出结果是 pass warn 。 int n=c; switch(n+) default: printf(”error”); break; case a: case A:case b:case B:printf(”good”);break; case c: case C:printf(”pass”); case d: case D:printf(”warn”); 54. 若变量n中的值是24,则prnt函数共输出 5 行,最后一行有 4 个数。void prnt(int n,int a) int i; for(i=1;i=n;i+) printf(”%6d”,ai); if (!(i%5)printf(”n”); printf(”n”); 55. 以下程序中,主函数调用了LineMax函数,实现在M行N列的二维数组中,找出每一行上的最大值。请填空。 #define M 3 #define N 4 void LineMax(int xM N) int i,j,p; for(i=0;iM;i+) p=0; for(j=1;jN;j+) if (xip2); printf(”%dn”,j); 57. 设有以下程序:main() int n1,n2; scanf(”%d”,&n2); while(n2!=0) n1=n2%10; n2=n2/10; printf(”%d”,n1); 程序运行后,如果从键盘上输入1298,则输出结果为 8921 。58. 以下函数的功能是:求x的y次方,请填空。double fun(double x ,int y) int i; double z; for(i=1,z=x;iy;i+)z=z* x ; return z; 59. 设有以下程序: main() int a,b,k=4,m=6,*p1=&k,*p2=&m; a=p1=&m; b=(*p1)/(*p2)+7; printf(”a=%dn”,a); printf(”b=%dn”,b);执行该程序后,a的值为 0 ,b的值为 7 。60. 若已定义:int a10;,以下fun函数的功能是:在第一个循环中给10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。void fun(void) int i; for(i=1;i=10;i+) ai-1 =ai; for(i=0;i(y)?(x): (y)main( ) int a=5,b=2,c=3,d=2,t; t=MAX(a+b,c+d)*10; printf(“%dn”,t);63. 要使指针p指向一个double类型的动态存储单元,请填空。p= (double*) malloc(sizeof(double);64. 设有以下结构类型和变量定义,则变量a在内存中所占的字节数是 22 。struct stud char num6; 6 int s4; 8 double ave; 8 a,*p;65. 以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。strcen(char a ,char b ) int num=0,n=0; while (*(a+num)!= 0 ) num+; while (bn) *(a+num)=bn; num+; n+ ; *(a+num)=0; return (num); 66. 以下程序段打开文件后,先利用fseek函数将文件位置指针定位于文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件的长度,请填空。FILE *myf;long fl;myf= fopen (“test.t”,”rb”);fseek(myf,0,SEEK_END);fl=ftell(myf);fclose(myf);printf(“%ldn”,fl);67. 以下程序的输出结果是 C 。int a,b;void fun(void) a=20; b=30;main( ) int a=4,b=9; fun( ); printf(“%d%dn”,a,b); A)3020B)2030C)49 D)9468. 以下程序的输出结果是 C 。union myun struct int x,y,z; u; int k; char t2; a;main( )a.k=3;a.u.x=4; a.u.y=5; a.u.z=6;printf(“%dn”,a.t1);A)3B)4C)0D)无法确定69. 以下程序的运行结果是 C 。#include “stdio.h”main( ) char x=050;printf(“%dn”,x=x1);A)60B)70C)80D)9070. 下列程序在执行时如果输入为3,则程序的输出结果是 x=3 。#include “stdio.h”main( ) int x; scanf(“%d”,&x); switch (x) case 1:case 2: printf(“x3”); break;default: printf(“x unknown”);71. 下列程序求两个正整数m与n的最大公约数和最小公倍数,请填空。#include main( ) int r,m,n,gcd,lcm; printf(“请输入两个正整数给m和n:”); scanf(“%d%d”,&m,&n); lcm=m*n; while ( m%n )/*在此循环里进行辗转相除*/ r=m%n; m=n; n=r; gcd=n; lcm/=gcd; printf(“gcd=%dnlcm=%dn”,gcd,lcm); 72. 语句for(a=0,b=0;b!=100&a4;a+) scanf(“%d”,&b);中循环体最少可执行 1 次,最多可执行 4 次。73. 下面的程序用于求f(k,n)=1k+2k+nk,其中k,n用键盘输入,函数power(m,n)求mn,函数sum_power(k,n)求f(k,n)。请填空。#include long power(int m,int n) int j; long p=1; for(j=1;j=n;j+) p=p*m ;return (p);long sum_power(int k,int n) int j; long sum=0; for(j=1;j=n;j+) sum+= power(j,k) ; return (sum); main( ) int k,n; scanf(“%d%d”,&k,&n); printf(“f(%d,%d)=%ldn”,k,n,sum_power(k,n); 74. 下列程序的输出结果是 75 。 #include #define X 5 #define Y X+1 #define Z Y*X/2 main( ) int a; a=Y; printf(“%d%dn”,Z,-a); 75. 下列程序的输出结果是 357 。main( ) int k; int a33=1,2,3,4,5,6,7,8,9; for(k=0;k3;k+) printf(“%d”,ak2-k);76. 以下函数将字符串s中各元素的位置颠倒过来。请填空。void reverse(char s ) int ch,i,j; for(i=0,j=strlen(s)-1; i next ;return(n);78. 以下程序的功能是将无符号八进制数字字符构成的字符串转换成十进制整数。例如,输入的字符串为:556,则输出十进制整数366。请填空。#includemain( ) char *p,s6; int n; p=s; gets(p);n=*p-0;while( *+p !=0)n=n*8+*p-0;printf(“%dn”,n);2003年云南省计算机等级考试题一、选择题1. 下面说法中错误的是_ D _。A.共用体变量的地址和它各成员的地址都是同一地址 B.共用体内的成员可以是结构变量,反之亦然C.在任一时刻,共用体变量的各成员只有一个有效 D.函数可以返回一个共用体变量2. 下面叙述中错误的是_A_。A. 主函数中定义的变量在整个程序中都有效 B.在其它函数中定义的变量在主函数中不能使用B. 形式参数也是局部变量 D.复合语句中定义的变量只在该复合语句中有效3. 下列说法中正确的是_A_。 A.带参数的宏定义中的参数是没有类型的 B.宏展开将占用程序的运行时间 C.宏定义命令是C语言中的一种特殊语句 D.使用include命令包含的头文件必须以“.h为后缀4. 完成将文件指针fp重新指向文件的开头位置的函数是_ D_ 。 A.feof(fp) B.ferror(fp) C.fseek(fp) D.rewind(fp)5. C语言的switch语句中case后_B_。 A.只能为常量 B.只能为常量或常量表达式 C.可为常量或表达式或有确定值的变量及表达式 D.可为任何类型的数据或表达式6. C语言函数的隐含存储类别是_ _D_ 。 A.static B.auto C.register D.extern7. 下面叙述中错误的是_ C_ 。 A.函数的形式参数,在函数未被调用时就不被分配存储空间 B.若函数的定义出现在主调函数之前,则可以不必再加说明 C.若一个函数没有return语句,则什么值也不会返回 D.一般来说,函数的形参和实参的类型应该一致8. 整型变量x=1,y=3,经下列计算后,x的值不等于6的是_D_ 。 A. X=(x=1+2,x*2) B. X=y2?6:5 C. X=9-(-y)-(-y) D. X=y*4.8/29. 下列变量中合法的是 C 。 A. B.C.Tom B. 3a6b C. _6a7b D. $ABC10. 下面叙述中正确的是 B 。 A.调用函数时的实参只能是有确定值的变量 B.return( )语句的括号内可以是常量、变量或有确定值的表达式 C.C语言中,函数调用时实参变量和形参变量间的参数传递方式都不是值传递 D.实参和形参若类型不匹配,编译时将报错11. 有宏定义:#define E 2.718则编译预处理时将E替换成一个_A_。 A.单精度常量 B.单精度变量 C.双精度变量 D.字符串12. 系统的标准输出文件是_ D _。 A.键盘 B.硬盘 C.内存 D.显示器13. 任何一个C语言的可执行程序都是从 B 开始执行的。 A.程序中的第一个函数 B.main( )函数的入口处 C.程序中的第一条语句 D.编译预处理语句14. C语言的if语句中,用作判断的表达式为 A 。 A.任意表达式 B.逻辑表达式 C.关系表达式 D.算术表达式15. 对于定义,char *aa2=abcd,ABCD,选项中说法正确的是 C 。 A.aa数组元素的值分别是abcd和ABCD B.aa是指针变量,它指向含有两个数组元素的字符型一维数组 C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D.aa数组的两个元素中各自存放了字符a和A的地址16. 以下程序的执行结果是_B_。 main() int x = 0, s = 0; while( !x != 0 ) s += +x; printf( %d ,s ); A.0 B.1 C.语法错误 D.无限循环17. 若有下面的说明和定义,则sizeof(struct aa)的值是_D_。 struct aa int r1; double r2; float r3; union uu char u15; long u22; ua; mya; A.30 B.29 C.24 D.2218. 以下程序的执行结果是_B_。 main() int a = 1, b = 10; do b -= a; a+; while( b- 1 ); printf( a=%d,b=%d n ,a,b ); A.a=3,b=11 B.a=2,b=8 C.a=1,b=-1 D.a=4,b=919. 以下程序的执行结果是_B_。 main() int x = 2, y = -1, z = 2; if( xy ) if( y0 ) z = 0;else z += 1; printf( %d,z ); A.3 B.2 C.1 D.020. 以下程序的输出结果是_ B_ 。 main() int y=30; prt(&y); prt(int *x) printf(%d,%dn,*x,+*x); A.30,30 B.31,31 C.30,31 D.31,3221. 以下程序的执行结果是_B_。 #define MOD( x , y )x%y main() int z, a=15, b=100; z=MOD( b, a ); printf(%d ,z+ ); A.11 B.10 C.6 D.宏定义不合法22. 循环语句 for(a=0,b=0;a3 & b!=3;a+,b+=2) a+;的特点是: C 。 A.是无限循环 B.循环次数不定 C.循环2次 D.循环4次23. 执行下列程序段后,m的值是_D_。 int w=2,x=3,y=4,z=5,m; m=(wx)?w:x; m=(my)?m:y; m=(mz)?m:z; A.4 B.3 C.5 D.224. 设有以下说明和定义,则输出语句printf(%d,sizeof(struct date)+sizeof(max);的执行结果是_B_。 typedef union long i; int k5; char c; DATE; struct date int cat; DATE cow; double dog; too; DATE max; A.26 B.30 C.18 D.825. 以下程序的执行结果是_D_。 main() static int x =0,1,2,3,4,5,6,7,8,9 ; int s, i, *p; s=0; p=&x0; for( i=1;idata.a D) p.data.a28. 以下程序的执行结果是_C_。/*变量的作用范围*/ void num() extern x, y; int a = 15, b = 10; x = a - b; y = a + b; int x , y ; main() int a = 7, b = 5; x = a + b;y = a - b; num();printf( %d , %d ,x,y);A.12 , 2 B.不确定 C.5 , 25 D.1 , 1229. 下面叙述中正确的是 B 。/*变量的作用范围*/ A.全局变量在定义它的文件中的任何地方都是有效的 B.全局变量在程序的全部执行过程中一直占用内存单元 C.同一文件中的变量不能重名D.使用全局变量有利于程序的模块化和可读性的提高30. 下列说法中正确的是 B 。 A.在程序中定义一个结构体类型,将为此类型分配存储空间 B.结构体类型的成员名可与结构体以外的变量名相同 C.结构体类型必须有名称D.结构体内的成员不可以是结构体变量31. 程序段int x=20; dox/=2; while(x-) ;中的循环执行 A 次。/*循环控制*/ A.4 B.3 C.5 D.不确定32. 单精度变量x=3.0,y=4.0,下列表达式中的y的值为9.0的是 B 。 A. y/=x*27/4 B. y+=x+2.0 C. y-=x+8.0 D. y*=x-3.033. C程序的基本结构单位是 C 。A.文件 B.语句 C.函数 D.表达式34. 下面说法中错误的是 C 。 A.结构体变量的地址和结构体变量的成员的地址均可以被引用 B.两个相同类型的结构体变量可以相互整体赋值 C.可以对结构体变量进行整体输入输出D.被定义为指向某结构体类型的变量的指针不能直接指向结构体中的某一成员35. 以下程序的输出结果是 B 。 #define MUL(x,y) (x)*(y) main() int a=3,b=4,c; c=MUL(a+,+b); printf(%dn,c); A.12 B.15 C.20 D.3036. 有这样的定义float*p4;则下面的叙述中正确的是 D 。 A.此定义不正确,形如char*p4;的定义才是正确的 B.此定义正确,p是指向一维实型数组的指针变量,而不是指向单个实型变量的指针变量 C.此定义不正确,C语言中不允许类似的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论