内容正文:
一、 选择题(共20题)
1. 若有宏定义如下:
#define X 5
#define Y X+1
#define ZY*X/2
则执行以下printf语句后,输出结果是( )
printf(“%d
”,Z);
A.7 B.12 C.12 D.8
2. 按照运行C语言的标准步骤:编辑-编译-连接-运行,则编译后生成的目标程序的文件格式为( )
A..c B..obj C..exe D..dll
3. 下列选项属于C语言提供的合法关键字的是( )
A.Int B.Double C.Float D.char
4. 以下程序段的运行结果是( )
int n=290;
char c;
c=n;
Printf("c=%d
",c);
A.c=290 B.c=34 C.c=137 D.c=68
5. 设有如下程序段:
int i=0,sum= 1 ;
do
{ sum+=i+ + ;}
while(i<6);
printf( " %d", sum);
该程序段的输出结果是( )
A.11 B.16 C.22 D.15
6. (2018年春季高考试题)若a是int型变量,表达式((a=3*5,a*2),a++,a+6)的值是( )
A.31 B.37 C.21 D.22
7. 下列表达式中值为真的是( )
A.a=0 B.b=3>4 C.b=3+4==5 D.(float)1/2
8. 执行下面语句后x的值为( )
int a=14, b=15, x;
char c='A';
x=((a&&b)&&(c<'a'));
A.TRUE B.FALSE C.0 D.1
9. (2020年春季高考试题)以下程序段的运行结果是( )
int a=5,b=4,c=2,d=1;
if(a>b>c)d=3:
else d--;
printf("%d
",d);
A.0 B.1 C.2 D.3
10. int a=2;while(a=0) a--;该循环共执行了______次。( )
A.0 B.1 C.2 D.3
11. 以下程序段给数组所有的元素输入数据,请选择正确的语句( )
#include
main( ){
int a[10],i=0;
while(i<10)scanf("%d",______ );
A.a+(i++) B.&a[i+1] C.a+i D.&a[++i]
12. 下列程序的输出结果是( )
#include
void main( )
{ int a[4][4] ={{1,3,5,},{2,4,6},{3,5,7}};
printf(" %d%d%d%d∖n" ,a[0][0] ,a[1][1] ,a[2][2] ,a[3][3]);
}
A.0650 B.1470 C.5430 D.输出值不定
13. 写出以下程序的执行结果( )
#include
main( ){
int i,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d,",x[i][i]);
printf("
");
A.1,5,9, B.1,4,7, C.3,5,7, D.3,6,9,
14. 有两个字符数组s1[10],s2[10],能正确输入的格式是( )
A.scanf(“%c%c”,s1,s2);
B.gets(s1,s2);
C.scanf(“%s%s”,s1,s2);
D.gets(“s1”,”s2”);
15. 若有语句:char s1[10],s2[10]="books";,则能将字符串books赋给数组s1的语句是( )
A.sl="books"; B.strcpy(s2, s1);
C.sl=s2; D.strcpy(s1,s2);
16. 在C语言的循环语句 for,while,do...while中,用于直接中断最内层循环的语句是( )
A.switch B.continue C.break D.if
17. 以下正确的函数定义形式是( )
A.double fun (int x,int y)
B.double fun (int x;int y)
C.double fun (int x,int y);
D.doubel fun (int x;int y);
18. 以下函数的类型是( )
func(double x)
{
printf("%f’
",x*x);}
A.与参数x的类型相同 B.void类型 C.int类型 D.无法确定
19. 有以下程序
int func(int a,int b)
{ return(a + b);}
main( )
{
int x=2,y=5,z=8,r;
r=func(func(x,y) ,z);
printf( " %d" ,r);
}
该程序的输出结果是( )
A.12 B.13 C.14 D.15
20. 被调函数通过______语句,将值返回给主调函数( )
A.if B.for C.while D.return
二、 程序分析题(共3题)
21. 写出以下程序的执行结果
#include
main( ){
int a[4][4]={{1.2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,s=0;
for(i=0;i<4;i++)s+=a[i][1];
printf("s=%d
",s);}
答案:
22. 下面程序的运行结果是______
#include
main( )
{ int a[] = {l,2,3,4} ,i,j ,s = 0;j = 1 ;
for(i=3 ;i<=0 ;i- -)
{ s = s+a[i];
j=j * 10;
}
printf("s= %d,j= %d" ,s,j);
}
23. 以下程序的运行结果是_________。
main()
{ int i, j, a[3][3];
for(i=0;i<3;i++)
{ for(j=0; j<3; j++)
{ if(i==3) a[i][j]=a[i-1][a[i-1][j]]+1;
else
a[i][j]=j;
printf("%4d",a[i][j]);}
printf("\t");}}
三、 综合应用题(共2题)
24. 利用C语言编程。一个炊事员上街采购,用500元钱买了 90只鸡,其中母鸡一只15元,公鸡一只10元,小鸡一只5元,正好把钱用完。问母鸡、公鸡、小鸡各买了多少只?请您编程帮助这个炊事员完成这个任务。
25. 编写程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩。
四、 简答题(共1题)
26. C语言循环结构有哪几种语句,有什么区别?
参考答案及解析
一、 选择题
1. 【答案】A
2. 【答案】B
3. 【答案】D
4. 【答案】B
5. 【答案】B
6. 【答案】D
7. 【答案】D
8. 【答案】D
【解析】[因为x后面是逻辑符号构成,所以它的值为1或0(若后面的式子逻辑和为真就是1,否则为0)。因为14与15都是非零的,非零的逻辑值均为1,所以(a&&b)是1。A的ascII码(ascII码就是电脑中字母转换为数字时的数值)是小于a的。所以(c<'a')是真,即是1。]
9. 【答案】A
10. 【答案】A
【解析】
[while(表达式)语句;循环语句先判断再执行,由于a=0为假,一次也不执行。]
11. 【答案】A
12. 【答案】B
13. 【答案】A
14. 【答案】C
【解析】(char y[]={ 'a', 'b', 'c', 'd', 'e', 'f', 'g', '\0'}; 等价于:char x[]="bcdefg";,所以C是正确的。)
15. 【答案】D
【解析】[字符串复制函数的用法。strcpy(S1,S2)]
16. 【答案】C
【解析】
(continue 结束本轮循环,break结束整个循环。)
17. 【答案】
18. 【答案】
19. 【答案】D
20. 【答案】
二、 程序分析题
21. 【答案】s=19
22. 【答案】s=0,j= 1
23. 【答案】c[i][j]=a[i][j]+b[i][j](使用两个二维数组a和b存放两个3*4阶矩阵的元素值,然后用两重for循环进 行相加求值产生二维数组c,最后显示c的各元素值。)
三、 综合应用题
24. 【答案】
# include
main( )
{int i,j,k;
for (i=0;i<=33;++i)
for (j=0;j<=50; ++j)
{k=90-i-j;
if (15 * i+10* j+5 * k==500)
printf(“母鸡有%d只,公鸡有%d只,小鸡有%d 只∖n”,i,j,k): }
25. 【答案】# include
main( )
{ int i,j;
float g,sum,ave;
for(i= 1 ;i<=6;i++)
{sum=0;
for(j= 1 ;j<=5 ;j++)
{scanf(" % f" , &g);
sum+=g;}
ave=sum/5 ;
printf("ave= %5.2f
" ,ave);}}
四、 简答题
26. 【答案】(1)C语言循环结构有While、do…While和for三种语句。
(2)While语句是“当型”循环,先判断表达式后执行循环体,循环次数可能为0; do∙∙∙ while语句是“直到型”循环,先执行循环体,后判断条件,至少执行一次循环体;for语句与While语句相同,也是先判断条件,后执行循环体,循环次数≥0;for语句一般用于循环次数比较明确的情况,而while和do,∙∙ while语句则用于循环次数难以判定的情况。
学科网(北京)股份有限公司
$$