C语言期末复习题Word版_第1页
C语言期末复习题Word版_第2页
C语言期末复习题Word版_第3页
C语言期末复习题Word版_第4页
C语言期末复习题Word版_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、C程序设计复习题一、单项选择题(请从4个备选答案中选择最适合的一项,每小题1分,共20分)1.算法具有5个特性,以下选项中不属于算法特性的是( )。A) 有穷性B) 简洁性C) 有效性D) 确定性2.设有定义:float a=2,b=4,h=3;,其中a为梯形的上底,b为梯形的下底,h为梯形的高,以下C语言表达式不能计算出梯形面积的( )A) (a+b)*h/2B) (1/2)*(a+b)*hC) (a+b)*h*1/2D) h/2*(a+b)3.经int a=7; float x=2.5, y=4.7;说明后,表达式 x+a%3*(int)(x+y)%2/4 的值是( )。A) 2.5000

2、00 B) 2.750000 C) 3.500000 D) 0.0000004.若t为double类型,表达式t=1,t+5, +t的值是 A)1 B)6.0C)7.0 D)2.05. 若有以下定义和语句: int u=010,v=0x10,w=10; printf(“%d,%d,%dn”,u,v,w); 则输出结果是 A)8,16,10 B)10,10,10 C)8,8,10 D)8,10,106. 以下选项中不合法的用户标识符是A)_12B)abc7C)a-2D)AS_88_mj7. 若有以下定义和语句 char c1='b',c2='e' printf(&

3、quot;%d,%cn",c2-c1,c2-'a'+"A"); 则输出结果是 A)2,M B)3,E C)2,E D)输出项与对应的格式控制不一致,输出结果不确定 8. 若有以下定义: char s20="programming",*ps=s; 则不能代表字符o的表达式是 A)ps+2 B)s2 C)ps2 D)ps+=2,*ps9.设变量a为int,f为float,i为double,则表达式10+a+i*f 的数据类型是( )。A) int型 B) float 型 C) double型 D) 不确定10.设a为int, 不能正

4、确表达数学关系: 10<a<15 的C语言表达式是( )。A) 10<a<15 B) a=11 | a=12 | a=13 | a=14 C) a>10 && a<15 D) !(a<=10) && !(a>=15)11.语句for(x=0,y=0;(y!=123)&&(x<4);x+);循环( )。A) 是无限循环 B) 循环次数不定 C) 执行4次 D) 执行3次12. 下面的程序 main( ) int a,b,s; scanf("%d%d",&a,&

5、b); s=a; if(s<b) s=b; s=s*s; printf("%dn",s); 运行时,若从键盘输入3和2,则输出( )。A) 14 B) 16 C) 18 D) 913. 若ij已定义为int类型,则以下程序段中内循环体的总的执行次数是 for (i=5;i;i-) for(j=0;j<4;j+). A)20 B)25 C)24 D)30 14. 若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是 A)1 B)2 C)2.0 D)2.515. 在C语言中,不合法的字符常量是A)014B)xabC)DD)”e”16. C语言中用

6、于结构化程序设计的三种基本结构是 A) if、switch、while B) for、while、do-while C) if、while、continue D) 顺序结构、选择结构、循环结构17已知a=1,b=2,c=3,d=4,则表达式 a<b?a:c<d?a:d 的结果是A)4 B)3C) 1 D)218.若执行下面程序时,从键盘输入"3,4",则输出是( )。 main() int a,b,s; scanf("%d,%d",&a,&b); s=a; if (a<b) s=b; elses=s*s; printf(

7、"%dn",s);A) 4 B) 16 C) 18 D) 20 19.若函数的类型和return语句中的表达式的类型不一致,则( )。A) 编译时出错B) 运行时出现不正确的结果C) 不会出错,且返回值的类型以return语句中表达式的类型为准D) 不会出错,且返回值的类型以函数类型为准20.在C语言程序中,以下叙述正确的是 ( )。 A) 函数的定义和函数的调用均可以嵌套B) 函数的定义可以嵌套,但函数的调用不能嵌套C) 函数的定义和函数的调用均不能嵌套D) 函数的定义不能嵌套,但函数的调用可以嵌套 21.若用数组名作为函数调用的实参,则传递给形参的是 ( )。 A) 数

8、组的首地址 B) 数组的第一个元素的值 C) 数组中全部元素的值 D) 数组元素的个数22. 在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( )。A) 外部(extern) B) 寄存器(register) C) 自动(atuo) D) 静态(static)23在下面一组运算符中,优先级最高的运算符是 A) <= B) = C) % D) &&24. 有如下函数调用语句func(rec1,rec2+rec3,rec4);该函数调用语句中,含有的实参个数是A)3B)4C)5D)有语法错25. 表示关系X<=Y&

9、lt;=Z的c语言表达式为A) (X<=Y)&&(Y<=Z) B) (X<=Y)AND(Y<=Z)C) (X<=Y<=Z) D) (X<=Y)&(Y<=Z)26. C语言中,若未说明函数的类型,则系统默认该函数的类型是( )。 A) float型 B) int型 C) long型 D) double型27.若定义数组int a34;,并以f(a)语句调用函数f,则在定义f函数时,对形参数组array 错误的定义方式为( )。A) f(int array6) B) f(int array3)C) f(int array4)

10、D) f(int array25)28.下列一维数组初始化语句中,正确的是( )。A) int a5=0,2,0,3,5; B) int a5=0; C) int a5=5*2; D) int a=(0,2,0,3,7); 29.现要定义一个二维字符型数组 cMN 来存放字符串 "China", "Tianjin"和"Education", 则常量M和N的合理取值应为( )。A) 3和9 B) 2和10 C) 4和9 D) 3和10 30.若有说明 char c='N','a','n',

11、'K','a','i' 则对其元素的非法引用是( )。A) c0 B) c9-6 C) c2*2 D) c731. 在C语言中,运算对象必须是整型的运算符是A) * B) % C) / D) !32. 设有以下宏定义: #define N 3#define Y(n) ( (N+1)*n)则执行语句:z=2 * (N+Y(5+1);后,z的值为 A)出错 B) 42 C) 48 D)5433. 以下结构体变量的字节数是struct studentint num;char name8;double score;union int class; cha

12、r position10; category;stu; A) 18 B) 30 C) 28 D) 3234. 若有代数式,则错误的表达式是A) a/b/c*e B) a*e/c/b C) a*e/b/c D) a*e/b*c 35.要将字符串str2连接到字符串str1后,应使用的函数是( )。A) strcpy(str1,str2); B) strcat(str2,str1); C) strcat(str1,str2); D) strcmp(str2,str1); 36.若定义 int a=8,b,*p=&b;则赋值语句p=&a执行后,结果为 ( )。 A) p同时指向a和b

13、 B) p指向a,而不再指向b C) p指向b,而b取a的值 D) p指向a,a取b的值37.定义以下结构体类型 struct s int a; float f; m3;语句printf("%d",sizeof(m)的输出结果为( )。A) 4 B) 12 C) 18 D) 638. 下面程序的输出是 main() int x=32; printf("%dn",x=x<<1); A) 100 B) 160 C) 120 D) 64 39. 不正确的转义字符是 A) “018” B) “ ” C) “xaa” D) “”40. 以下程序执行后s

14、um的值是 void main()int i , sum;for(i=1;i<6;i+) sum+=i;printf("%dn",sum);A)15 B)14 C) 不确定 D)0二、程序填空题(每空1分)1以下程序调用readrec函数读入数据,把3名学生的学号、姓名、四门成绩以及平均分放在一个结构体数组中,学生的学号、姓名和四门成绩由键盘输入,然后计算出平均分放在结构体对应的域中,调用writrec函数输出3名学生的记录。请填空。#include<stdio.h>#define N 3struct studchar num5,name10;int s4

15、;int ave; stN;writrec(struct stud *s)int k,i;printf("numtnametmark1tmark2tmark3tmark4taven");for(k=0;k<3;k+,s+)printf("%st%st",s->num,s->name);for(i=0;i<4;i+)printf("%dt",s->si);printf("%dn",s->ave);readrec(struct stud *p)int i,j,sum;for(j=0;

16、j<N;j+,p+)gets(p->num);gets(p->name);for(i=0;i<4;i+)scanf("%d",&p->si);getchar();sum=0;for(i=0;i<4;i+)sum+=p->si ;p->ave=sum/4;main()readrec(st);writrec(st);2求1!+3!+5!+7!+21!之和#include <stdio.h>void main()float s,t;int n;s=0;t=1;for(n=1;n<=21;n+) t=t*n;

17、 if(n%2!=0)s+=t; printf(“1!+3!+5!+7!+21!=%en”,s);3. 用数组来处理求Fibonacci数列(即:1,1,2,3,5,8,13)问题,每行控制输出5个数据。#include<stdio.h>void main()int i;int f20=1,1;for(i=2;i<20;i+) fi=fi-1+fi-2; for(i=0;i<20;i+) if(i%5=0) printf(“n”);printf(“%12d”,fi); printf(“n”); 4以下程序调用readrec函数读入数据,把3名学生的学号、姓名、四门成绩以

18、及平均分放在一个结构体数组中,学生的学号、姓名和四门成绩由键盘输入,然后计算出平均分放在结构体对应的域中,调用writrec函数输出3名学生的记录。请填空。#include<stdio.h>struct studchar num5,name10;int s4;int ave; ;writrec(struct stud *s)int k,i;for(k=0;k<3;k+,s+)printf("num:%sname:%sn",s->num,s->name);for(i=0;i<4;i+)printf("mark:%5d",

19、s->si);printf("ave:%5dn",s->ave);readrec(struct stud *rec)int i,sum;gets(rec->num);gets(rec->name);for(i=0;i<4;i+)scanf("%d",&rec->si);getchar();sum=0;for(i=0;i<4;i+)sum+=rec->si ;rec->ave=sum/4;main()struct stud st30;int k;for(k=0;k<3;k+)readrec

20、(&stk);writrec(st);5下面程序把文件file1.dat中的内容复制到一个名为file2.dat的新文件中,请填空。#include<stdio.h>FILE *fp1,*fp2;main()char ch;if(fp1=fopen(“file1.dat”,”r”)=NULL) exit(0);if(fp2=fopen(“file2.dat”,”w”)=NULL) exit(0);while(fp1!=EOF)ch=fgetc(fp1);fputc(ch,fp2);fclose(fp1);fclose(fp2);三、读程序写运行结果(每小题2分,共30分)1

21、下面程序运行后,输出结果是 #include<stdio.h> main() int a=4,b=7;printf(“%dn”,(a=a+1,b+a,b+1); 2下面程序运行后,输出结果是 #include<stdio.h>float fun(int x,int y)return(x+y); main()int a=2,b=5,c=8;printf(“%3.0fn”,fun(int)fun(a+c,b),a-c); 3下面程序运行后,输出结果是#include<stdio.h>main()intk=017,g=111; printf("%dn&q

22、uot;,+k); printf("%xn",g+);4下面程序运行后,输出结果是#include<stdio.h> main() int m=7,n=4;float a=38.4,b=6.4,x;x=m/2+n*a/b+1/2;printf(“%fn”,x);5下面程序运行后,输出结果是#include<stdio.h> main()int a=9;a + = a - = a + a;printf(“%dn”,a);6. 以下程序运行后的输出结果是#include<stdio.h>void main() int i,n=0,0,0,0,

23、0; for (i=1;i<=4;i+) ni=ni-1*2+1; printf ("%d ",ni); 7. 下面程序运行后,输出结果是 #include <stdio.h> void main( ) char s="after", c; int i, j=0; for (i=1; i<5; i+ ) if (sj<si) c=sj; sj=si; si=c; printf("%s", s); 8. 以下程序执行后的输出结果是 #include <stdio.h>void main( )ch

24、ar *s= "one", "two", "three",*p; p=s1; printf ("%c,%sn",*(p+1),s0);9.以下程序运行后的输出结果是 #include <stdio.h>#define N 20fun(int a,int n,int m) int i; for(i=m;i>=n;i-) ai+1=ai;void main() int i,aN=1,2,3,4,5,6,7,8,9,10; fun(a,2,9); for(i=0;i<5;i+) printf(&q

25、uot;%d",ai);10.写出下列程序结果#include <stdio.h>int m=1;int fun(int m)int n=1;static int i=1;n+;i+;return m+n+i;void main()int i;for(i=1;i<3;i+)printf("%4d",fun(m+);printf("n");11已知字母a的ASCII码是为十进制的97,下面程序的输出是main()char c1,c2;c1=a+6-2;c2=a+6-3;printf(“%c,%dn”,c2,c1);12下列语句的

26、输出结果是 char a=31; printf(“%d,%o,%x,%un”,a,a,a,a);13下面程序运行后,输出结果是#include<stdio.h>void main()int j,x=0; for(j=0;j<=3;j+) if(j%2)continue; x+; printf("%dn",x);14下面程序运行后,输出结果是void main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;

27、b+; break; case 3: a+;b+; printf(“na=%d,b=%d”,a,b); 15下面程序运行后,输出结果是#include<stdio.h>#define MAX(a,b,c) (a)>(b)? (a)>(c)? (a): (c): (b)>(c)? (b): (c)void main()int x,y,z;x=1,y=2,z=3;printf("%dn",MAX(x+y,y,y+x);16有以下程序程序的执行结果是 #include <stdio.h>char fun(char x,char y)if(

28、x<y) return x; return y;void main( )char a='9',b='8',c='7'printf("%cn",fun(fun(a,b),fun(b,c) );17.以下程序执行后输出结果是#include <stdio.h>void main()int p7=11,13,14,15,16,17,18,i=0,k=0;while (i<7&&pi%2)k=k+pi;i+;printf ("%dn",k);18定义以下结构体数组 struc

29、t int num; char name10; s3=1,"china",3,"USA",4,"England"语句printf("n%d,%s",s0.num,)的输出结果为。19以下程序执行后输出结果是 #include<stdio.h>float fun(int x,int y)return(x-y); main()int a=2,b=5,c=8;printf(“%3.0fn”,fun(int)fun(a+c,b),a-c); 20下面程序运行后,输出结果是#include<s

30、tdio.h>main()intk=015,g=112; printf("%dt",+k); printf("%xn",g+);21下面程序运行后,输出结果是#include<stdio.h>int f(int n)if(n=1)return 1; else return f(n-1)+1;void main()int i,j=0; for(i=1;i<3;i+) j+=f(i); printf(“%dn”,j);22. 下面程序运行后,输出结果是#include<stdio.h>void main() unsigne

31、d char a,b,c;a=0x3; b=a|0x8; c=b<<1;printf(“%d%dn”,b,c);23. 以下程序的输出结果是#include<stdio.h>void main()int a=12,b=12;printf("%d %dn",-a,+b);24下面程序运行后,输出结果是#include<stdio.h> void main()int a=7;a + = a - = a + a;printf(“%dn”,a);25已知字母a的ASCII码是为十进制的97,下面程序的输出是#include<stdio.h&

32、gt;void main()char c1,c2;c1=b+6-2;c2=c+6-3;printf(“%c,%dn”,c2,c1);26下列语句的输出结果是#include<stdio.h>void main()char a=25; printf(“%d,%o,%x,%un”,a,a,a,a); 27下面程序运行后,输出结果是#include<stdio.h>void main()int j,x=0; for(j=0;j<=4;j+) if(j%2)continue; x+; printf("%dn",x);28下面程序运行后,输出结果是#in

33、clude<stdio.h>#define MAX(a,b,c) (a)>(b)? (a)>(c)? (a): (c): (b)>(c)? (b): (c)void main()int x,y,z;x=3,y=2,z=1;printf("%dn",MAX(x+y,y,y+x);29. 在执行以下程序时,如果从键盘上输入:ABCdef<回车>,则输出为#include<stdio.h>void main( )char ch;while(ch=getchar( )!='n') if(ch>='A

34、' && ch<='Z')ch=ch+32; else if(ch>='a' && ch<'z')ch=ch-32; printf("%c",ch);printf("n");30. 以下程序运行后#include<stdio.h>void main() int i;for(i=0;i<3;i+)switch(i) case 1: printf("%d",i); case 2: printf("%d&qu

35、ot;,i); default: printf("%d",i);四、程序改错题(每错2分)1下面程序中函数fun的功能是:根据整型形参m,计算如下公式的值:#include<stdio.h>double fun(int m);void main()int m;printf("input a number:");scanf("%d",&m);printf("%fn",fun(m);double fun(int m)int i,t;double y;/ 改为:double y=0;t=1;for(i

36、=1;i<m;i+)/改为: for(i=1;i<=m;i+)t=t+i;/改为: t=t*i;y+=1/t;/改为:y+=1.0/t;return y;2. 函数int fun(float s, int n),它的功能是:求高于平均分的人数,并作为函数值返回。数组s中存放n位学生的成绩。数组s的值由主函数从键盘读入#include <stdio.h>#define N 10int fun (float s, int n)float sum=0,pj;int num, i;/改为: int num=0, i;for(i=0;i<n;i+);/改为:for(i=0;

37、i<n;i+)sum+=si;pj=sum/n;for(i=0;i<n;i+)if(si>pj)num+;return num;void main()int i;float sN, x; printf("nPlease enter marks of student:"); for(i=0;i<N;i+)scanf("%f", x);/改为: scanf("%f", &x);*(s+i)=x; printf("number of student:%dn", fun(sN);/ 改为:p

38、rintf("number of student: %dn", fun(s,N);3根据从键盘输入的整数m计算如下公式的值。#include<stdio.h>double fun(n) double x;x=1.0/(i*(i+1); /改为:x=1.0/(n*(n+1);return(x);main()double t; /改为:double t=1.0;int m,i;scanf("%d",&m);for(i=1;i<=m;i+);/改为:for(i=1;i<=m;i+)t=t+fun(i); /改为:t=t-fun(

39、i);printf("t=%fn",t);4. 函数int fun(float s, int n),它的功能是:求低于60分的人数,并作为函数值返回。数组s中存放n位学生的成绩。数组s的值由主函数从键盘读入#include <stdio.h>#define N 10int fun (float s, int n) int num, i;/改为: int num=0, i; for(i=0;i<n;i+) if(si<=60)num+;/改为:if(si<60)num+; return num;void main()int i;float sN,x; printf("nPlease enter marks of student:"); for(i=0;i<N;i+)scanf("%f", x);/改为: scanf("%f", &x);*(s+i)=x; printf("number of student:%dn", fun(sN);/ 改为:printf("number of student: %dn", fun(s, N);五、编程题:(每

温馨提示

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

评论

0/150

提交评论