1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。
C语言考试期末考试复习题及答案
一、 选择题
(1) 一个C语言程序总是从( C ) 开始执行
A) 书写顺序的第一个函数
B) 书写顺序的第一条执行语句
C) 主函数main( )
D) 不确定
(2) 设int x=3, y=4, z=5, 则下列表示式中的值为0的是 ( D )
A) ‘x’&&’y’ B) x||y+z&&y-z C) x<=y D) !((x 2、i=10;
switch(i+1)
{ case 10: i++; break;
case 11: ++i;
case 12: ++i; break;
default : i=i+1;
}
A) 11 B) 13 C) 12 D) 14
(4) 语句while(!e);中的条件!e等价于 ( A )
A) e==0 B)e!=1 C) e!=0 D) 运行时出错
(5) 用 int a[4]={1,2}; 对数组进行初始化后, 数组元素a[3]的值是 ( B 3、 )
A) 随机值 B) 0 C) 1 D) F
(6) 在执行char str[10]=”china\0”; strlen( str) 的结果是 ( A )
A)5 B) 6 D) 7 D 9
(7) 若有定义, char *p=”computer”; 则语句printf(”%c”,*(p+2))运行结果是 ( B )
A) 随机值 B) m C)o D) omputer
(8) 在以下函数调用语句中
fun1(x,10,(x,10),fun2(y,10,(y,10)));
函数fun1参 4、数的个数为 ( B )
A) 8 B) 4
C) 5 D) 编译出错
(9) 在说明一个结构体变量时系统分配给它的存储空间是( D )
A) 该结构体中第一个成员变量所需存储空间 B) 该结构体中最后一个成员变量所需存储空间
C) 该结构体中占用最大存储空间的成员变量所需存储空间D) 该结构体中所有成员变量所需存储空间的总和
1. 用C语言编写的代码程序( B )
A)可立即执行 B)是一个源程序 C)经过编译即可执行 D)经过编译解释才能执行
2. C语言中用于结构化程序设计的三种基本结构是( A 5、)
A) 顺序结构、 选择结构、 循环结构 B) if、 switch、 break C) for、 while、 do-while D) if、 for、 continue
3. 以下定义语句中正确的是( C )
A)char a='A'b='B'; float a=b=10.0;C)int a=10,*b=&a; D)float *a,b=&a;
4.下列选项中, 不能用作标识符的是( D )
A)_1234_ B)_1_2 C) int_2_ D)2_int_
5.在函数调用过程中, 如果函数funA 6、调用了函数 funB,函数funB又调用了函数funA, 则 ( B )
A)称为函数的直接递归调用 B)称为函数的间接递归调用
C)称为函数的循环调用 D)C语言中不允许这样的递归调用
6.以下叙述中正确的是 ( A )
A)局部变量说明为static存储类, 其生存期将得到延长
B)全局变量说明为static存储类, 其作用域将被扩大
C)任何存储类的变量在未赋初值时, 其值都是不确定的
D)形参能够使用的存储类说明符与局部变量完全相同
7.若变量已正确定义, 要求程序段完成求5!的计算, 不能完成此操作的程序段是( 7、 B)
A)for(i=1,p=1;i<=5;i++) p*=i;B)for(i=1;i<=5;i++){ p=1; p*=i;}
C)i=1;p=1;while(i<=5){p*=i; i++;}D)i=1;p=1;do{p*=i; i++; }while(i<=5);
8.有以下程序(a)
main()
{ char a='a',b;
printf("%c,",++a);
printf("%c\n",b=a++);}
程序运行后的输出结果是a)b,b B)b,c C)a,b D)a,c
9.有以下函数定义: 8、c)
void fun(int n, double x) { …… }
若以下选项中的变量都已正确定义并赋值, 则对函数fun的正确调用语句是
A) fun(int y,double m); B) k=fun(10,12.5) C) fun(x,n); D) void fun(n,x)
10.已定义c为字符型变量, 则下列语句中正确的是(c)
A) c='97'; B) c="97"; C) c=97; D) c="a";
11.以下能正确定义一维数组的选项是(b)
A) int num[]; B) #define N 100 9、 C) int num[0..100]; D) int N=100;
int num[N]; int num[N];
12.以下能正确定义数组并正确赋初值的语句是(d)
A) int N=5,b[N][N]; B) int a[1][2]={{1},{3}};C) int c[2][]= {{1,2},{3,4}}; D) int d[3][2]={{1,2},{34}};
13.有以下程序(a)
main()
{ int i;
for (i=0; i<3; i++)
switch (i)
{ case 1: pr 10、intf("%d ", i);
case 2: printf("%d ", i);
default : printf("%d ", i); }
}
执行后输出结果是
A) 011122 B) 012 C) 012020 D) 120
14.有以下程序(d)
main()
{ int p[7]={11,13,14,15,16,17,18}, i=0,k=0;
while(i<7 && p[i]%2) { k =k+ p[i]; i++; }
printf("%d\n", k);
}
执行后输出结果是
A) 58 11、 B) 56 C) 45 D) 24
15.以下叙述中正确的是(c)
A) C语言比其它语言高级 B) C语言能够不用编译就能被计算机识别执行
C) C语言以接近英语国家的自然语言和数学语言作为语言的表示形式
D) C语言出现的最晚, 具有其它语言的一切优点
16.下列叙述中正确的是(d)
A) C语言中既有逻辑类型也有集合类型B) C语言中没有逻辑类型但有集合类型
C) C语言中有逻辑类型但没有集合类型D) C语言中既没有逻辑类型也没有集合类型
17.以下叙述中正确的是(a)
A) C程序中注释部分能够出现在程序中任意合适的地方B 12、) 花括号"{"和"}"只能作为函数体的定界符
C) 构成C程序的基本单位是函数, 所有函数名都能够由用户命名D) 分号是C语句之间的分隔符, 不是语句的一部分
二) 阅读程序, 写出程序运行结果
(1) #include 13、11;
while (i<=10)
{
sum=sum+i;
i++;
}
printf(”%d”,sum);
}
程序的运行结果是:
(3) #include 14、
(4) main()
{ int a,b;
a=5;
b=8;
p(a,b);
p(a+b,a);
}
p(int x,int y)
{
y=x+y;
printf(”%d %d”,x,y);
}
程序的运行结果是:
(5) #include 15、
s=s*a[j][j];
printf("%d",s);
}
程序的运行结果是:
Key: (1) a (2) 0 (3) 123 (4) 5 13 13 18 (5) 45
三) 改错题( 每个程序只有一个错误, 填入错误语句所在的行号以及修改后的语句)
(1)下段程序的功能是先输入一个整数, 然后将输入的整数输出。
1 main()
2 {int x;
3 scanf(”%d”,x);
4 printf(” 16、x=%d\n”,x); }
行号: 改为:
(2)下段程序的功能是求1+2+3+4+……+99+100的和。
1 main()
2 { int j=1,sum=0;
3 while(j<=100)
4 sum=sum+j;
j++;
5 printf(”%d”,sum);
}
行号: 改为:
(3)下段程序的功能是当输入x的值为90时, 输出”right”, 否则输 17、出”error”。
1 main()
2 { int x;
3 if (x=90) printf(”right”);
4 else printf(”error”);
}
行号: 改为:
(4)下面程序的功能是输出字符串S
1 main()
2 { char s[]=”china”;
3 printf(”s=%s\n”,s[]);
}
行号: 改为:
(5)下面程序的功能是按照下面的格式输入a和b的值, 计算y=a2+b2 18、并输出。
输入: 3 2 ?
输出: y=13
1 main()
2 { int a,b;
3 int y;
4 scanf(”a=%d,b=%d”,&a,&b);
5 y=a*a+b*b;
6 printf(”y=%d\n”,y);
7 }
行号: 改为:
Key:( 1) 行号: 3 改为: scanf(”%d”,&x); ( 2) 行号: 4 改为: { sum=sum+j; j++;}; ( 3) 行号: 3 改为: if (x= =90) printf(”r 19、ight”); ( 4) 行号: 3 改为: printf(”s=%s\n”,s); ( 5) 行号: 4 改为: scanf(”%d %d”,&a,&b);
二、 填空题
1.以下程序输入3个整数值给a, b, c, 变量b中的值给a, 变量c中的值给b, 变量a中的值给c, 交换后输出a, b, c的值。
#include 20、⑤_____;
printf("%d,%d,%d",a,b,c);
}
2.求出200以内的整数中, 最大的能够被17整除的数是哪个数。
#include 21、i=0;i<20;i++) scanf("%d", __①___ );
for(i=0;__ ②__;i++)
{ if(a>0)
{ count++;
sum+= ___③___ ;
}
}
printf("sum=%d,count=%d\n",__④___,__⑤_____);
}
4.以下程序的功能是调用函数fun计算: m=1+2+3+4+…+9+10, 并输出结果。请填空。
int fun( int n)
{ int m=0,i;
for(i=___①___; i<=n; __②____)
{
m=___③____ 22、
}
return _④____;
}
main()
{ printf("m=%d\n", __⑤____); }
5.以下程序将数组中的数据按逆序存放。
#include 23、i++) printf("%3d",a[i]);
printf("\n");
key: 1①__d__②__d=a_____③_a=b__④b=c______⑤__c=d____①main()__②_i=200____③_i__>0____④_i%17==0_⑤__i__
①a[i]_ ②i<20__ ③__i__ ④__sum__ ⑤count_①_1__ ②_i++_ ③_m_+i_ ④_m__ ⑤_fun(10)_①_a[i] ②_SIZE_ ③a[i]=a[j] ④a[j]=t ⑤j_--
三、 程序设计题目
1. 编写程序, 打印下列图案
*
* *
* 24、 * *
* * * *
* * * * *
2.某数列前两项分别为1和2, 其后每项为前两项之和, 求此数列的第10个数。
3.一个8层的灯塔, 每一层的灯数是上一层的2倍, 一共有765盏灯, 求灯塔底层的灯数。
(1) 从键盘输入一个华氏温度, 要求输出摄氏温度, 公式为
C=5*( F-32) /9
(2) 编写一个函数求y=(a-b)×(a+b),主函数用以输入a,b的值和输出y值。
(3) 编一程序: 从键盘输入10个整数,计算并输出这10个数的平均数。
(4) 经过键盘输入3*4矩阵, 编写一个函数求所有元素中的最大值, 其中主函数完成3*4 25、矩阵的输入和最大元素的输出。
Key:
3.
( 1) main()
{ float c,f;
scanf(”%f”,&f);
c=5.0*(f-32)/9;
printf(”c=%f”,c);
}
( 2) int f(int a,int b)
{ return (a-b)*(a+b); }
main()
{int a,b;
26、 scanf(”%d,%d”,&a,&b);
printf(”y=%d”,f(a,b));
}
( 3) main()
{int a[10],j;
float ave=0;
for (j=0;j<10;j++)
{ scanf(”%d”,&a[j]);
ave=ave+a[j];
}
printf(”ave=%f”,ave/10);
}
( 4)
#include 27、 int max(int array[][4]);;
int k,j,a[3][4];
for (k=0;k<3;k++)
for (j=0;j<4;j++)
scanf(”%d”,&a[i][j]);
printf("the max is %d",max(a));
}
int max(int array[][4])
{ int k,j,max;
max=array[0][0];
for (k=0;k<3;k++)
for (j=0;j<4;j++)
if (array[k][j]>max) max=array[k][j];
return(max);
}






