c语言考试题及答案.doc

上传人:laozhun 文档编号:2384702 上传时间:2023-02-17 格式:DOC 页数:93 大小:155KB
返回 下载 相关 举报
c语言考试题及答案.doc_第1页
第1页 / 共93页
c语言考试题及答案.doc_第2页
第2页 / 共93页
c语言考试题及答案.doc_第3页
第3页 / 共93页
c语言考试题及答案.doc_第4页
第4页 / 共93页
c语言考试题及答案.doc_第5页
第5页 / 共93页
点击查看更多>>
资源描述

《c语言考试题及答案.doc》由会员分享,可在线阅读,更多相关《c语言考试题及答案.doc(93页珍藏版)》请在三一办公上搜索。

1、一、选择题(1) 在C语言中,如果下面的变量都是int类型,则输出的结果是sum=pad=5; pad=sum + + ,pad + + , + + pad;printf(%dn,pad);A) 7 B) 6 C) 5 D) 4(2) 以下程序的输出结果是# include main() int i=010 , j = 10;printf(%d,%dn,+ +i , j - -); A) 11,10 B) 9,10 C) 010,9 D) 10,9(3) 已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是# include main() char c1=A, c2=Y;prin

2、tf(%d,%dn,c1,c2); A) 因输出格式不合法,输出错误信息 B)65,90 C)A,Y D)65,89(4) 指针s所指字符串的长度为char *s=NameAddressn;A) 19 B) 15 C) 18 D) 说明不合法(5) 设有说明int(*ptr)m;其中的标识符ptr是A)M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向具有M个整型元素的一维数组的指针 D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量(6) 语句while(!E);中的条件!E等价于A)E = = 0 B)E!=1 C)E!=0 D)E(7) 以下程序的输出结果是# i

3、nclude main() printf(%dn,NULL); A) 不确定的(因变量无定义) B)0 C)-1 D)1(8) 以下函数调用语句中含有的实参个数为。func(exp1,exp2),(exp3,exp4,exp5);A) 1 B) 2 C) 4 D) 5(9) 设有以下语句:char a=3,b=6,c;c=ab2;则c的二进制值是A) 00011011 B)00010100 C)00011100 D)00011000(10) 下面的程序中第几行有错误(每行程序前面的数字是行号)。1 #include 2 main()3 4 float a3=0,0;5 int i;6 for(

4、i=0;i3;i + + ) scanf(%d,&ai);7 for(i=1;i3;i + + ) a0=a0+ai;8 printf(%fn,a0);9 A) 没有 B)第4行 C)第6行 D)第8行(11) 设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值是A)3 B)0 C)9 D)-12(12) 以下的for循环for(x=0,y=0; (y!=123)&(x4); x + + );A) 是无限循环 B)循环次数不定 C)执行4次 D)执行3次(13) 设有语句char a=72;则变量aA)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法(14)

5、 以下程序的输出结果是# include # include main() int a=1,b=4,c=2;float x=10.5 , y=4.0 , z;z=(a+b)/c+sqrt(double)y)*1.2/c+x;pritnf(%fn,z); A) 14.000000 B) 015.400000 C) 13.700000 D) 14.900000(15) sizeof(double)是A)一种函数调用 B)一个双精度型表达式C)一个整型表达式 D)一个不合法的表达式(16) C语言中A)不能使用do-while语句构成的循环 B)do-while语句构成的循环必须用break语句才能

6、退出C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环(17) 以下程序的输出结果是# include # include main() char str12=s,t,r,i,n,g;printf(%dn,strlen(str); A) 6 B) 7 C) 11 D) 12(18) 以下程序的输出结果是# include main() int a=2,c=5;printf(a=%d,b=%dn,a,c); A) a=%2,b=%5 B) a=2,b=5 C) a=%d,b=%d D) a

7、=%d,b=%d(19) 以下程序的输出结果是# includemain() int a ,b,d=241;a=d/100%9;b=(-1)&(-1);printf(%d,%dn,a,b); A) 6,1 B) 2,1 C) 6,0 D) 2,0(20) 以下程序的输出结果是# include main() int i; for ( i=1;i=5;i + + ) if ( i%2 ) printf(*);else continue; printf(#);printf($n); A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$(21) 以下for语句构成的循环执行

8、了多少次# include # define N 2# define M N+1# define NUM (M+1)*M/2main() int i , n=0;for ( i=1;i=NUM;i + + );n + + ; printf(%d,n); printf(n); A) 5 B) 6 C) 8 D) 9(22) 设有以下语句,则不是对a数组元素的正确引用的选项是(其中0i10)int a10=0,1,2,3,4,5,6,7,8,9, *p=a;A) ap-a B) *(&ai) C) pi D) *(*(a+i)(23) 有以下程序:# include # define N 6mai

9、n() char cN; int i=0;for ( ;iN ; ci=getchar () , i + + );for ( i=0 ; iN ; putchar(ci) , i + + ); 输入以下三行,每行输入都是在第一列上 开始,代表一个回车符:abcdef程序的输出结果是A) abcdef B) a C) a D) a b b b c cd cdef d e f(24) 以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空。# include findmax ( s , t , k )int *s , t , *k; int p; for(p=0,*k=p;p

10、 s*k )_; main() int a10 , i , k ;for ( i=0 ; i10 ; i + + ) scanf(%d,&ai);findmax ( a,10,&k );printf ( %d,%dn , k , ak ); A) k=p B) *k=p-s C) k=p-s D) *k=p(25) 有以下程序:#includeunion pw int i; char ch2; a;main() a.ch0=13; a.ch1=0; printf(%dn,a.i); 程序的输出结果是(注意: ch0在低字节,ch1在高字节。)A) 13 B) 14 C) 208 D) 209(

11、26) 有以下程序:# includemain() int c;while(c=getchar()!=n) switch(c-2) case 0:case 1: putchar(c+4);case 2: putchar(c+4);break;case 3: putchar(c+3);case 4: putchar(c+2);break; printf(n); 从第一列开始输入以下数据,代表一个回车符。2743程序的输出结果是A) 668977 B) 668966 C) 6677877 D) 6688766(27) 以下程序的输出结果为main() char *alpha6=ABCD,IJKL,

12、MNOP,QRST,UVWX;char *p; int i;p=alpha;for(i=0;i4;i + + ) printf(%s,pi); printf(n); A) ABCDEFGHIJKL B) ABCD C) ABCDEFGHIJKLMNOP D) AEIM(28) 以下程序的输出结果是# include# define FUDGE(y) 2.84+y# define PR(a) printf(%d,(int)(a)# define PRINT1(a) PR(a);putchar(n)main()int x=2; PRINT1(FUDGE(5)*x); A) 11 B) 12 C)

13、13 D) 15(29) 以下程序的输出结果是# includemain() int i=1,j=3;printf(%d,i + + ); int i=0; i+=j*2; printf(%d,%d,i,j); printf(%d,%dn,i,j); A) 1,6,3,1,3 B) 1,6,3,2,3 C) 1,6,3,6,3 D) 1,7,3,2,3(30) 以下程序的输出结果是# include main() int k=4,m=1,p;p=func(k,m); printf(%d,p); p=func(k,m); printf(%dn,p);func(a,b)int a,b; stati

14、c int m=0,i=2;i+=m+1; m=i+a+b; return(m); A) 8,17 B) 8,16 C) 8,20 D) 8,8(31) 设有以下语句:char str412=aaa,bbbb,ccccc,dddddd,*strp4;int i; for(i=0;i4;i + + )strpi=stri;不是对字符串的正确引用的选项是(其中0kn B) p-n + + C) (*p).n + + D) + + p-n(35) 以下四个程序中,哪一个不能对两个整型变量的值进行交换A)# include main() int a=10,b=20; swap(&a,&b); prin

15、tf(%d %dn,a,b);swap(p,q)int *p,*q;int *t; t=(int )malloc(sizeof(int);t=p;*p=*q;*q=*t; B) # include main()int a=10,b=20; swap(&a,&b);printf(%d %dn,a,b);swap(p,q)int p,q;int *t;t=*p;*p=*q;*q=t;C) # include main() int *a,*b;*a=10,*b=20;swap(a,b);printf(%d %dn,*a,*b);swap(p,q)int *p,*q;int t;t=*p;*p=*q;

16、*q=t;D) # includemain()int a=10,b=20;int x=&a,y=&b;swap(x,y);printf(%d %dn,a,b);swap(p,q)int *p,*q;int t;t=*p;*p=*q;*q=t;二、填空题(1) 以下C语言程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给出。#include main(argc,argv)int argc; char *argv; FILE *f1,*f2; char ch;if(argc 【1】 ) printf(Parameters missing!n); exit(0); if( (f1=fo

17、pen(argv1,r) = = NULL)|(f2=fopen(argv2,w) = = NULL) printf(Can not open file!n); exit(0);while( 【2】 )fputc(fgetc(f1),f2);fclose(f1); fclose(f2); (12) 以下程序中的trap函数是一个用梯形法求定积分的通用函数。梯形法求定积分的公式为:n-1 a-bs=(f(a)+f(b)/2+ f(a+i*h)*h , h=|-|i=1 n其中,n为积分小区间数。以下程序调用trap函数求定积分,被积函数是:f(x)=x*x+3*x+2,且n=1000,a=0,b

18、=4。#include 3include double trap(fun,a,b)double (*fun)(),a,b; double t,h;int i,n=1000;t=0.5*(*fun)(a)+(*fun)(b); h=fabs(a-b)/(double)(n);for(i=1;i=n-1;i + + ) t=t+ 【3】 ;t=t*h; return(t); double mypoly(x)double x; return(x*x+3.0*x+2.0); main() double y,(*pf)(); pf= 【4】 ;y=trap(pf,0.0,4.0); printf(%fn

19、,y); (13) 以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。#include main() int i,a10,*p=a,sum=0;printf(Enter 10 num:n);for(i=0;i10;i + + ) scanf(%d,&ai);for(i=0;i10;i + + )if(isprime(*(p+ 【5】 ) = = 1) printf(%d,*(a+i); sum+=*(a+i); printf(nThe sum=%dn,sum); isprime(x)int x; int i; for(i=2

20、;i=x/2;i + + )if(x%i = = 0) return (0); 【6】 ; (14) 以下程序调用invert函数按逆序重新放置a数组中元素的值。a数组中的值在main函数中读入。#include #define N 10invert(s,i,j)int *s,i,j; int t; if(ij) t=*(s+i); *(s+j)=(s+j);*(s+j)=t; invert(s, 【7】 ,j-1);main() int aN,i;for(i=0;iN;i + + ) scanf(%d,a+ 【8】 );invert(a,0,N-1);for(i=0;inext = = NU

21、LL).#includestruct list int data;struct list *next;【9】 creatlist() struct list *p,*q,*ph; int a;ph=(struct list *) malloc(sizeof(struct list);p=q=ph; printf(Input an integer number,enter -1 to end:n);scanf(%d,&a):while(a!=-1) p=(struct list *)malloc(sizeof(struct list);p-data=a; q-next=p; 【10】 =p; s

22、canf(%d,&a); p-next=0; return(ph); main() struct list *head; head=creatlist();参考答案选择题:(1)C (2)B (3)D (4)B (5)C (6)A (7)B (8)B (9)A (10)C(11)D (12)C (13)A (14)C (15)C (16)D (17)A (18)D (19)B (20)A(21)C (22)D (23)C (24)D (25)A (26)A (27)C (28)B (29)B (30)A(31)A (32)C (33)A (34)D (35)C 填空题:(1)3(2)!feof

23、(f1)或feof(f1)=0(3)(*fun)(a+i*h)(4) mypoly(5)I(6)return 1 或 return (1)(7)i+1(8) I(9) struct list *(10) q一、选择题(1) 请选出可用作C语言用户标识符的一组标识符A) void B) a3_b3 C) For D) 2adefine _123 -abc DOWORD IF Case sizeof(2) 设 int a=12,则执行完语句 a+=a-=a*a后,a的值是A) 552 B) 264 C) 144 D) -264(3) C语言程序的基本单位是A) 程序行 B) 语句 C) 函数 D)

24、 字符(4) 请选出合法的C语言赋值语句A) a=b=58 B) i+; C) a=58,b=58 D) k=int(a+b);(5) 执行下面程序片段的结果是int x=23;do printf(%2d,x-);while(!x);A) 打印出321 B) 打印出23 C) 不打印任何内容 D) 陷入死循环(6) 请选出以下语句的输出结果printf(%dn,strlen(t065xffn);A) 5 B) 14 C) 8 D) 输出项不合法,无正常输出(7) 设有如下的函数ggg(x)float x; printf(n%d,x*x);则函数的类型A) 与参数x的类型相同 B) 是void

25、C) 是int D) 无法确定(8) 设有如下枚举类型定义:enum language Basic=3,Assembly,Ada=100,COBOL,Fortran;枚举量Fortran的值为A) 4 B) 7 C) 102 D) 103(9) 若有以下说明和语句,请选出哪个是对c数组元素的正确引用int c45, (*cp)5;cp=c;A) cp+1 B) *(cp+3) C) *(cp+1)+3 D) *(*cp+2)(10) 标准函数 fgets(s, n, f) 的功能是A) 从文件f中读取长度为n的字符串存入指针s所指的内存B) 从文件f中读取长度不超过n-1的字符串存入指针s所指

26、的内存C) 从文件f中读取n个字符串存入指针s所指的内存D) 从文件f中读取长度为n-1的字符串存入指针s所指的内存(11) 设有如下一段程序:int *var,ab;ab=100var=&ab;ab=*var+10;执行上面的程序后,ab的值为A) 120 B) 110 C) 100 D) 90(12) 以下程序段给数组所有的元素输入数据,请选择正确答案填入。#includemain() int a10,i=0;while(i10) scanf(%d,_ );A) a+(i+) B) &ai+1 C) a+i D) &a+i(13) 设有如下的程序段:char str =Hello;char

27、 *ptr;ptr=str;执行上面的程序段后,*(ptr+5)的值为A) o B) 0 C) 不确定的值 D) o的地址(14) 在宏定义 #define PI 3.14159中,用宏名PI代替一个A) 单精度数 B) 双精度数 C) 常量 D) 字符串(15) 字符(char)型数据在微机内存中的存储形式是A) 反码 B) 补码 C) EBCDIC码 D) ASCII码(16) 执行下面的程序段int x=35;char z=A;int b;B=(x&15)&(za);后,B的值为A) 0 B) 1 C) 2 D) 3(17) C语言规定,程序中各函数之间A) 既允许直接递归调用也允许间接

28、递归调用B) 不允许直接递归调用也不允许间接递归调用C) 允许直接递归调用不允许间接递归调用D) 不允许直接递归调用允许间接递归调用(18) 假设在程序中a,b,c均被定义成整型,并且已赋大于1的值,则下列能正确表示代数式 的表达式是A) 1/a*b*c B) 1/(a*b*c) C) 1/a/b/(float)c D) 1.0/a/b/c(19) 若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是A) pb=&x B) pb=x; C) *pb=&x; D) *pb=*x(20) 设有static char str =Beijing;则执行printf(%dn, strlen

29、(strcpy(str,China);后的输出结果为A) 5 B) 7 C) 12 D) 14(21) 设有如下程序:#includemain() int *k, *j, i=100;j=&i; k=&j;printf(%dn, *k);上面程序的输出结果是A) 运行错误 B) 100 C) i的地址 D) j的地址 (22) 设 a=5, b=6, c=7, d=8, m=2, n=2, 执行(m=ab)&(n=cd)后n的值为A) 1 B) 2 C) 3 D) 4(23) 下面函数的功能是sss(s, t)char *s, *t; while(*s)&(*t)&(*t+= *s+);ret

30、urn(*s-*t);A) 求字符串的长度 B) 比较两个字符串的大小C) 将字符串s复制到字符串t中 D) 将字符串s接续到字符串t中(24) 请选出以下程序的输出结果#includesub(x,y,z)int x, y, *z; *z=y-x; main() int a, b, c;sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);printf(%d,%d,%dn, a,b,c);A) 5,2,3 B) -5,-12,-7 C) -5,-12,-17 D) 5,-2,-7(25) 下面程序的输出结果是#includemain() int i=2,p;p=f(i,

31、i+1);printf(%d,p);int f(a,b)int a,b; int c;if(ab) c=1;elseif(a=b) c=0;else c=-1;return(c);A) -1 B) 0 C) 1 D) 2(26) 请选出以下程序段的输出结果#include#define MIN(x,y) (x)(y)? (x):(y)main() int i,j,k;i=10; j=15;k=10*MIN(i,j);printf(%dn,k);A) 15 B) 100 C) 10 D) 150(27) 请选出以下程序段的输出结果#includemain() char sl10, s210, s

32、310, s410;scanf(%s%s,s1,s2); gets(s3); gets(s4);puts(s1); puts(s2); puts(s3); puts(s4);输入数据如下:(此处代表回车符)aaaa bbbbcccc ddddA) aaaa B) aaaa C) aaaa D) aaaa bbbb bbbb bbbb bbbb cccc cccc cccc dddd dddd cccc dddd dddd eeee(28) 请选出以下程序的输出结果#includefun(s, n1, n2)int *s, n1, n2; int i, j, t;i=n1; j=n2;while

33、(ij) t= *(s+i); *(s+i)= *(s+j); *(s+j)=t;i+; j-;main() int a10=1,2,3,4,5,6,7,8,9,0,i, *p=a;fun(p,0,3); fun(p,4,9); fun(p,0,9);for(i=0; i10; i+) printf(%d, *(a+i);printf(n);A) 0 9 8 7 6 5 4 3 2 1 B) 4 3 2 1 0 9 8 7 6 5C) 5 6 7 8 9 0 1 2 3 4 D) 0 9 8 7 6 5 1 2 3 4(29) 请选出以下程序的输出结果#includemain() int a

34、= 1,2,3,4 ,i;int x=0;for(i=0; ix );printf(%dn, (+p)-x);printf(%dn, +( *p-y);A) 10 B) 50 C) 51 D) 60 20 60 60 70 20 21 21 31二、填空题(1) 设有如下程序段:int i=0, sum=1;do sum+=i+;while(i6);printf(%dn, sum);上述程序段的输出结果是 【1】 。(2) 阅读下列程序:#includemain() int i, j, row, column,m;static int array33=100,200,300,28,72,-30

35、,-850,2,6;m=array00;for (i=0; i3; i+)for (j=0; j3; i+)if (arrayijm) m=arrayij; row=i; column=j;printf(%d,%d,%dn,m,row,column);上述程序的输出结果是 【2】 。(3) 设a、b、c为整型数, 且a=2、b=3、c=4, 则执行完以下语句:a*=16+(b+)-(+c);后,a的值是 【3】 。(4) 下面程序的输出结果是 【4】 。#includemain() int a=3, b=2, c=1;c-=+b;b*=a+c; int b=5, c=12;c/=b*2;a-=

36、c;printf( %d,%d,%d,a,b,c);a+=-c;printf( %d,%d,%d,a,b,c);(5) 设有如下程序:#includemain(argc,argv)int argc; char *argv ; while( -argc0) printf(%s,argvargc);printf(n);假定上述程序经编译和连接后生成可执行文件PROG.EXE,如果在DOS提示符下键入PROG ABCD EFGH IJKL ,则输出结果为 【5】 。(6) 阅读下列程序:#include#define MAX_COUNT 4void fun();main() int count;fo

37、r (count=1; count=MAX_COUNT; count+) fun();void fun() static int i;i+=2; printf(%d,i);上述程序的输出结果是 【6】 。(7) 设有下列程序:#include#includemain() int i;char str10, temp10;gets(temp);for (i=0; i4; i+) gets(str);if (strcmp(temp,str)0) strcpy(temp,str);printf(%sn,temp);上述程序运行后,如果从键盘上输入(在此代表回车符):C+BASICQuickCAdaP

38、ascal则程序的输出结果是 【7】 。(8) 设有如下程序:#include main(argc,argv)int argc; char *argv ; FILE *fp;void fc();int i=1;while( -argc0)if(fp=fopen(argvi+,r)=NULL) printf(Cannot open file! n);exit(1);else fc(fp); fclose(fp); void fc(ifp)FILE *ifp; char c;while(c=getc(ifp)!=#) putchar(c-32);上述程序经编译、连接后生成可执行文件名为cpy.ex

39、e。假定磁盘上有三个文本文件,其文件名和内容分别为:文件名 内容a aaaa#b bbbb#c cccc#如果在DOS下键入cpy a b c则程序输出 【8】 。(9) 若输入3个整数3,2,1,则下面程序的输出结果是【9】 。#includevoid sub( n,uu)int n, uu ; int t;t=uun-; t+=3*uun;n=n+;if(t=10) uun+=t/10; uun=t%10;else uun=t;main( ) int i, n, aa10=0,0,0,0,0,0scanf( %d%d%d,&n,&aa0,&aa1);for(i=1; in; i+) sub(i,aa);for(i=0; i=n; i+) printf(%d,aai);printf(n);(10) 若有以下定义:double w10;则w数组元素下标的上限为 【10】 ,下限为 【11】 。(11) 以下程序统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。#include #include main( ) int num26,i; char c;for(i=0; i26; i+) numi=0;while( 【12】 !=#) /*统计从终端输入的大写字母个数*/if(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号