当前位置:文档之家› C语言期末复习题

C语言期末复习题

C语言期末复习题work Information Technology Company.2020YEAR《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/2 B) (1/2)*(a+b)*h C) (a+b)*h*1/2 D) 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.500000 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,%d\n”,u,v,w);则输出结果是A)8,16,10 B)10,10,10C)8,8,10 D)8,10,106. 以下选项中不合法的用户标识符是A)_12B)abc7C)a-2D)AS_88_mj7. 若有以下定义和语句char c1='b',c2='e';printf("%d,%c\n",c2-c1,c2-'a'+"A");则输出结果是A)2,M B)3,EC)2,E D)输出项与对应的格式控制不一致,输出结果不确定8. 若有以下定义:char s[20]="programming",*ps=s;则不能代表字符o的表达式是A)ps+2 B)s[2]C)ps[2] D)ps+=2,*ps9.设变量a为int,f为float,i为double,则表达式10+‘a’+i*f 的数据类型是( )。

A) int型 B) float 型C) double型 D) 不确定10.设a为int, 不能正确表达数学关系: 10<a<15 的C语言表达式是( )。

A) 10<a<15B) a==11 || a==12 || a==13 || a==14C) 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,&b);s=a;if(s<b) s=b;s=s*s;printf("%d\n",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)25C)24 D)3014. 若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是A)1 B)2C)2.0D)2.515. 在C语言中,不合法的字符常量是A)\014B)\xab C)’D’D)”e”16. C语言中用于结构化程序设计的三种基本结构是A) if、switch、while B) for、while、do-whileC) if、while、continue D) 顺序结构、选择结构、循环结构17.已知a=1,b=2,c=3,d=4,则表达式 a<ba:c<da:d 的结果是A)4 B)3C) 1D)218.若执行下面程序时,从键盘输入"3,4",则输出是( )。

main(){ int a,b,s;scanf("%d,%d",&a,&b);s=a;if (a<b) s=b;elses=s*s;printf("%d\n",s);}A) 4B) 16 C) 18 D) 2019.若函数的类型和return语句中的表达式的类型不一致,则()。

A) 编译时出错B) 运行时出现不正确的结果C) 不会出错,且返回值的类型以return语句中表达式的类型为准D) 不会出错,且返回值的类型以函数类型为准20.在C语言程序中,以下叙述正确的是 ( )。

A) 函数的定义和函数的调用均可以嵌套B) 函数的定义可以嵌套,但函数的调用不能嵌套C) 函数的定义和函数的调用均不能嵌套D) 函数的定义不能嵌套,但函数的调用可以嵌套21.若用数组名作为函数调用的实参,则传递给形参的是 ( )。

A)数组的首地址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<=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 a[3][4];,并以f(a)语句调用函数f,则在定义f函数时,对形参数组array 错误的定义方式为( )。

A) f(int array[][6]) B) f(int array[3][])C) f(int array[][4]) D) f(int array[2][5])28.下列一维数组初始化语句中,正确的是( )。

A) int a[5]={0,2,0,3,5}; B) int a[5]=0;C) int a[5]={5*2}; D) int a[]=(0,2,0,3,7);29.现要定义一个二维字符型数组c[M][N] 来存放字符串"China", "Tianjin"和"Education", 则常量M和N的合理取值应为( )。

A) 3和9 B) 2和10 C) 4和9 D) 3和1030.若有说明 char c[]={'N','a','n','K','a','i'}; 则对其元素的非法引用是( )。

A) c[0] B) c[9-6] C) c[2*2] D) c[7]31. 在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) 48D)5433. 以下结构体变量的字节数是struct student{int num;char name[8];double score;union{ int class;char position[10];}category;}stu;A) 18 B) 30 C) 28 D) 3234. 若有代数式bc ae,则错误的表达式是A) a/b/c*e B) a*e/c/b C) a*e/b/c D) a*e/b*c35.要将字符串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 B) p指向a,而不再指向bC) p指向b,而b取a的值D) p指向a,a取b的值37.定义以下结构体类型struct s{int a;float f;}m[3];语句printf("%d",sizeof(m))的输出结果为( )。

A) 4 B) 12 C) 18D) 638. 下面程序的输出是main(){int x=32;printf("%d\n",x=x<<1);}A) 100 B) 160 C) 120D) 6439. 不正确的转义字符是A) “\018” B) “\’ ” C) “\xaa” D) “\\”40. 以下程序执行后sum的值是void main(){ int i , sum;for(i=1;i<6;i++)sum+=i;printf("%d\n",sum);}A)15 B)14 C) 不确定D)0二、程序填空题(每空1分)1.以下程序调用readrec函数读入数据,把3名学生的学号、姓名、四门成绩以及平均分放在一个结构体数组中,学生的学号、姓名和四门成绩由键盘输入,然后计算出平均分放在结构体对应的域中,调用writrec函数输出3名学生的记录。

请填空。

#include<stdio.h>#define N 3struct stud{ char num[5],name[10];int s[4];int ave;}st[N];writrec(struct stud *s){ int k,i;printf("num\tname\tmark1\tmark2\tmark3\tmark4\tave\n");for(k=0;k<3;k++,s++){ printf("%s\t%s\t",s->num,s->name);for(i=0;i<4;i++)printf("%d\t",s->s[i]);printf("%d\n",s->ave);}}readrec(struct stud *p){ int i,j,sum;for(j=0;j<N;j++,p++){ gets(p->num);gets(p->name);for(i=0;i<4;i++)scanf("%d",&p->s[i]);getchar();sum=0;for(i=0;i<4;i++)sum+=p->s[i] ;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;if(n%2!=0)s+=t;}printf(“1!+3!+5!+7!+…+21!=%e\n”,s);}3. 用数组来处理求Fibonacci数列(即:1,1,2,3,5,8,13……)问题,每行控制输出5个数据。

相关主题