C 语言考试期末考试复习题及答案
一、 选择题
(1)一个 C 语言程序总是从( C )开始执行
A)书写顺序的第一个函数
B)书写顺序的第一条执行语句
C)主函数 main ( )
D)不确定
⑵ 设int x=3 , y=4, z=5,则下列表达式中的值为 0的是(D )
A)‘ x' &&' y' B) x||y+z&&y-z C) x<=y
D) !((x
(3) 执行以下程序段后, i 的值是 ( C )
int 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 ) | ||||
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 参数的个数为 ( B )
A) 8 B) 4
C) 5 D) 编译出错
(9)在说明一个结构体变量时系统分配给它的存储空间是( D )
A)该结构体中第一个成员变量所需存储空间 B)该结构体中最后一个成员变量所需
存储空间
C)该结构体中占用最大存储空间的成员变量所需存储空间 D)该结构体中所有成员变量所
需存储空间的总和
1.用C语言编写的代码程序(B )
A)可立即执行 B)是一个源程序 C)经过编译即可执行 D)经过编译解释才能执行
2.C 语言中用于结构化程序设计的三种基本结构是 ( A )
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 调用了函数 funB, 函数 funB 又调用了函数 funA , 则 ( B )
A) 称为函数的直接递归调用 B) 称为函数的间接递归调用
C)称为函数的循环调用 D)C 语言中不允许这样的递归调用
6.以下叙述中正确的是 ( A )
A)局部变量说明为static存储类,其生存期将得到延长
B)全局变量说明为static 存储类,其作用域将被扩大
C)任何存储类的变量在未赋初值时,其值都是不确定的
D)形参可以使用的存储类说明符与局部变量完全相同
7.若变量已正确定义,要求程序段完成求 5! 的计算,不能完成此操作的程序段是 ( 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++) 。 }
9.有以下函数定义: (c)
void fun(int n, double x) { }
若以下选项中的变量都已正确定义并赋值,则对函数
A) fun(int y,double m) 。 B ) k=fun(10,12.5) C
10.已定义c为字符型变量,则下列语句中正确的是
A) c='97' 。 B ) c="97" 。 C ) c=97。
11.以下能正确定义一维数组的选项是 (b)
A) int num[] 。 B) #define N 100 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: printf("%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 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)花括号"{"和丁只能作为函数体
的定界符
C)构成C程序的基本单位是函数,所有函数名都可以由用户命名 D)分号是C语句之间的
分隔符,不是语句的一部分
二) 阅读程序,写出程序运行结果
(1) #include
main()
{ char ch= ' A'。
ch=(ch>= 'A'&& ch<=' Z' )?(ch+32):ch 。 printf( “ %c” ,ch) 。
}
程序的运行结果是:
(2)#include
main( )
{ int sum=0,i=11 。
while (i<=10)
{
sum=sum+i 。
i++ 。
}
printf( “ %d” ,sum) 。
}
程序的运行结果是:
(3)#include
main()
{ char str[ ]= ” 1a2b3c ”。
int i 。
for(i=0 。 str[i]!= ' \0 '。 i++)
if (str[i]>= ' 0' && str[i]<= ' 9') printf( “ %c”,str[i]) 。
}
程序的运行结果是:
(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
void main()
{ int a[3][3]={{1,2,3},{4,5,6},{7,8,9}} 。
int j,s=1 。
for(j=0 。 j<=2 。 j++)
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( | “ x=%d\n” ,x) 。 } |
4^ 1=1. 行号: | 改为: |
⑵ 下段程序的功能是求 1+2+3+4+……+99+100的和。
1main()
2{ int j=1,sum=0 。
3while(j<=100)
4sum=sum+j 。
j++ 。
5printf( “ %d” ,sum) 。
}
行号: 改为:
(3) 下段程序的功能是当输入 x 的值为 90 时,输出“ right ”,否则输出“ error ”。
1main()
2{ int x 。
3if (x=90) printf( “ right ”) 。
4else printf( “ error ” ) 。
}
行号: 改为:
(4) 下面程序的功能是输出字符串 S
1main()
2{ char s[]= ” china ”。
3printf( “ s=%s\n” ,s[]) 。
}
行号: 改为:
⑸下面程序的功能是按照下面的格式输入 a和b的值,计算y=a2+b2并输出。
输入: 3 2 ?
输出: y=13
1main()
2{ int a,b 。
3int y 。
4scanf( “a=%d,b=%d” ,&a,&b) 。
5y=a*a+b*b 。
6printf( “ y=%d\n” ,y) 。
7}
行号: 改为:
Key: ( 1)行号: 3 改为: scanf( “ %d” ,&x) 。 ( 2 )行号: 4 改为: { sum=sum+j 。
j++ 。 }。 ( 3)行号: 3 改为: if (x= =90) printf( “ right ”)。 ( 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
main()
{ int a,b,c,__ ① 。
printf("enter a,b,c") 。 scanf("%d%d%d",&a,&b,&c) 。
② 。 ___③ 。 ④ 。 ___⑤ 。 printf("%d,%d,%d",a,b,c) 。
}
2.求出 200 以内的整数中,最大的可以被 17整除的数是哪个数。
# include
—①—
{int i 。
for ② 。___③ 。i--)
{if( ④ ) break。}
printf("%d\n",_ ⑤ )。
}
3.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。
main ()
{ int i,a[20],s un ,co unt 。
sum=co un t=0。
for(i=0 。 i<20。 i++) scanf("%d", _ ① )。
for(i=0 。__ ②__。i++)
{ if(a>0)
{ coun t++ 。
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= ③ 。
}
return _ ④ 。
}
main ()
{ printf("m=%d\n", _ ⑤ )。 }
5.以下程序将数组中的数据按逆序存放。
# include
#defi ne SIZE 12
main ()
{int a[SIZE],i,j,t 。
for(i=0 。i
i=0。j=_ ② 。
while(i
{t=a[i] 。 ③ 。 ④ 。i++。j_ ⑤ }
for(i=0 。i
prin tf("\n") 。
key : 1 ①__d__②__d=a ③ _a=b__④ b=c ⑤__c=d ① main()_ ②_i=200 ③
」__>0 ④ _i%17==0_® __i__
① a[i]_ ② i<20__ ③__i__ ④ __sum__ ⑤ count_ ① _1__ ②」++_ ③ _m_+i_ ④
_m_ ⑤_fun(10)_ ①_a[i] ②_SIZE_ ③a[i]=a[j] ④ a[j]=t ⑤j_--
三、程序设计题目
1.编写程序,打印下列图案
*
* *
* * *
* * * *
*****
2.某数列前两项分别为 1 和 2,其后每项为前两项之和,求此数列的第 10 个数。
3.一个 8 层的灯塔,每一层的灯数是上一层的 2 倍,一共有 765 盏灯,求灯塔底层的灯数。 (1) 从键盘输入一个华氏温度,要求输出摄氏温度,公式为
C=5*(F-32 ) /9
⑵编写一个函数求y=(a-b) x (a+b),主函数用以输入 a,b的值和输出y值。
(3) 编一程序:从键盘输入 10 个整数 , 计算并输出这 10个数的平均数。
(4) 通过键盘输入 3*4 矩阵,编写一个函数求所有元素中的最大值,其中主函数完成 3*4 矩
阵的输入和最大元素的输出。
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 。
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
main()
{ 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) 。
}
本文来源:https://www.2haoxitong.net/k/doc/abd68258122de2bd960590c69ec3d5bbfc0adac9.html
文档为doc格式