C语言.docx
《C语言.docx》由会员分享,可在线阅读,更多相关《C语言.docx(12页珍藏版)》请在冰点文库上搜索。
![C语言.docx](https://file1.bingdoc.com/fileroot1/2023-5/15/720c2488-463d-4d4e-98d3-62006732bfdc/720c2488-463d-4d4e-98d3-62006732bfdc1.gif)
C语言
西北农林科技大学本科课程考试试题(卷)
2012—2013学年第1学期《C语言程序设计》课程A卷
专业班级:
命题教师:
审题教师:
学生姓名:
学号:
考试成绩:
一、填空题(每空1分,共10分)得分:
分
1、一个C源程序中至少应包含一个_______函数。
2、a是整型变量,则执行表达式a=25/3%3后a的值为________
3、intm=5,y=2;则表达式y+=y-=m*=y的值为_________
4、执行下列语句:
inta=1,b=2;a=a+b;b=a-b;a=a-b;printf("%d,%d\n",a,b);的输出结果分别是__________
5、条件表达式的格式为表达式1?
表达式2:
表达式3,若表达式2和表达式3的类型不同,此时条件表达式的值的类型为二者中较___的类型
6、当运行以下程序时,从键盘键入right?
(代表回车),则下面程序的运行结果是________
#include
intmain()
{charc;
while((c=getchar())!
='?
')putchar(++c)
}
7、C语言中的数组必须先________,然后使用。
8、如果需要从被调用函数返回一个函数值,被调用函数必须包含________语句。
9、已知:
floatf1=3.2,f2,*pf1=&f1;f2=f1,则*f2的值为________
10、以下程序输出结果为________________
voidfun(char*a,char*b)
{a=b;(*a)++;}
intmain()
{charc1="A",c2="a",*p1,*p2;
p1=&c1;p2=&c2;fun(p1,p2);
printf(“&c&c\n”,c1,c2);return0;}
二、选择题(每小题1分,共30分)得分:
分
1、下列说法中正确的是。
(A)C语言程序总是从第一个定义的函数开始执行。
(B)在C语言程序中要调用的函数必须在main()函数中定义
(C)C语言程序总是从main()函数开始执行
(D)C语言程序中的main()函数必须在程序的开始部分
2、设有语句inta=3,则执行语句a+=a-=a*a以后变量a的值是:
。
(A)3(B)0(C)9(D)-12
3、在C语言中,要求运算数必须是整数的运算符是。
(A)%(B)/(C)<(D)1
4、以下程序的输出结果是。
intmain()
{inti=010,j=10;
printf(“%d,%d\n”,++i,j--);return0;
}
(A)11、10(B)9、10(C)010,9(D)10,9
5、若有如下定义变量:
intK=7,X=12;则能使值为3的表达式是。
(A)X%=(K%=5)(B)X%=(K-K%5)
(C)X%=K-K%5(D)(X%=K)-(K%=5)
6、以下程序段的输出结果是。
intfun(){staticintn;
n++;returnn;}
intmain()
{inti,a;
for(i=0;i<5;i++)a=fun();
printf(“%d\n”,a);
}
(A)1(B)0(C)6(D)5
7、在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为________。
(A)a<>0(B)!
a(C)a=0(D)a
8、有以下程序
intmain()
{
inta=15,b=21,m=0;
switch(a%3)
{case0:
m++;break;
case1:
m++;
switch(b%2)
{default:
m++;
case0:
m++;break;
}
}
printf(“%d\n”,m);return0;
}
程序运行后的输出结果是________。
(A)1(B)2(C)3(D)4
9、以下程序的输出结果是________。
intmain()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;
printf("%d\n",d);return0;
}
(A)1(B)0(C)非0的数(D)-1
10、表达式“0?
(0?
3:
2):
(10?
1:
0)”的值为。
(A)3(B)2(C)1(D)0
11、若执行以下程序时从键盘上输入3和4,则输出结果是:
。
intmain()
{inta,b,s;
scanf(“%d%d”,&a,&b);s=a;
if(a
s*=s;
printf(“%d/n”,s);return0;
}
(A)14(B)16(C)18(D)20
12、把下面数学表达式,表示成C语言表达式。
-5≤x<10
(A)-5≤x<10(B)x≥-5&&x<10
(C)x>=-5&&x<10(D)-5=13、已知grade=’B’,则下列程序段的运行结果为。
switch(grade)
{case‘A’:
printf(“85~100\n”);break;
case’B’:
printf(“70~84”);
case’C’:
printf(“60~69\n”);break;
default:
printf(“error\n”);}
(A)70~84(B)60~69
(C)85~100(D)70~8460~69
14、若已定义a=8,b=2则表达式a||b&&(a-b*4)的运行结果是()
(A)8(B)1(C)0(D)2
15、对以下for循环,叙述正确的是。
for(x=0,y=0;(y!
=123)&&(x<4);x++,y++);
(A)是无限循环(B)循环次数不定(C)执行了4次(D)执行了3次
16、下列程序段的执行结果是输出。
x=3;
do
{printf(″%2d″,x--);}
while(!
x);
(A)321(B)3(C)21(D)210
17、执行下列程序后,i的值是。
inti,x;
for(i=1,x=1;i<20;i++)
{
if(x>=10)break;
if(x%2==1)
{x+=5;continue;}
x-=3;
}
(A)4(B)5(C)6(D)7
18、以下程序段输出结果是。
intmain()
{intk,j,s;
for(k=2;k<6;k++,k++)
{s=1;
for(j=k;j<6;j++)
s+=j;
}
printf(“%d\n”,s);return0;
}
(A)9(B)1(3)11(4)10
19、以下程序段的输出结果是。
intx=3
do
{
printf(“%3d”,x-=2);
}
while(!
(--x));
(A)1(B)30(3)1-2(4)死循环
20、以下正确的是。
(A)do-while语句构成的循环不能用其它语句构成的循环来代替
(B)do-while语句构成的循环只能用break语句退出
(C)用do-while语句构成循环时,只有在while后的表达式非零时结束循环
(D)用do-while语句构成循环时,只有在while后的表达式为零时结束循环
21、以下程序的输出结果是。
voidmain()
{
intx,i;
for(i=1;i<=100;i++)
{x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)printf(“%d”,x);}
printf(“\n”);}
(A)3981(B)4284(C)2668(D)2870
22、以下程序的输出结果是。
intmain()
{intnum=0;
while(num<=2)
{num++;printf("%d\n",num);}
return0;}
(A)1(B)1(C)1(D)l
222
33
4
23、以下程序的输出结果是。
intmain()
{inta,b;
for(a=1,b=1;a<=100;a++)
{
if(b>=10)break;
if(b%3==1)
{b+=3;continue;}
}
printf("%d\n",a);return0;}
(A)101(B)6(C)5(D)4
24、假设int型变量占两个字节的存储单元,若有以下定义,则数组x在
内存中所占字节数为
intx[10]={0,2,4};
(A)3(B)6(C)10(D)20
25、以下一维数组a的正确定义是。
(A)inta(10);(B)intn=10,a[n];
(C)intn;scanf(“%d”,&n);inta[n];(D)#defineSIZE10
inta[SIZE];
26、在定义inta[5][4];之后,对a的正确引用是。
(A)a[2][4](B)a[5][0](C)a[0][0](D)a[0,0]
27、下列程序的执行结果是。
intmain()
{intI,k=5,a[10],p[3];
for(I=0;I<10;I++)a[I]=I;
for(I=0;I<3;I++)p[I]=a[I*(I+1)];
for(I=0;I<3;I++)k+=p[I]*2;
printf(“%d\n”,k);return0;}
(A)20(B)21(C)22(D)23
28、有以下程序
intmain()
{intp[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);return0;
}
执行后输出结果是。
(A)58(B)56(C)45(D)24
29、以下程序的输出结果是。
intmain()
{inti,a[10];
for(i=9;i>=0;i--)
a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);return0;}
(A)258(B)741(C)852(D)369
30、以下不能正确定义二维数组的选项是。
(A)inta[2][2]={{1},{2}};
(B)inta[][2]={1,2,3,4};
(C)inta[2][2]={{1},{2,3}};
(D)inta[2][]={1,2},{3,4}};
三、判断题(共10分,每小题分标在小题后)得分:
分
1.在C程序中,语句之间必须要用分号“;”分隔。
()
2.在C程序中所用的变量必须先定义后使用。
()
3.C程序中的注释部分可有可无,通常可以省略。
()
4.在C程序中,APH和aph是两个不同的变量。
()
5.在C程序中,无论是整数还是实数,都能准确无误的表示。
()
6.在C程序中,赋值运算符的优先级最低。
()
7.若a和b是同类型变量,在执行了赋值语句a=b;后b中的值将放入a中,b中的值将丢失。
()
8.当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值。
()
9.break语句只能用在循环语句中。
()
10.continue语句只能用于循环语句中。
()
四、程序分析题(共10分)得分:
分
1、写出该程序的功能
intmain()
{
int i,j,k;
printf("\n");
for(i=1;i<5;i++)
for(j=1;j<5;j++)
for (k=1;k<5;k++)
{
if (i!
=k&&i!
=j&&j!
=k)
printf("%d,%d,%d\n",i,j,k);
}
return0;}
2、以下程序用“辗转相除法”来求出两个正整数的最大公约数。
请填空。
若两个数分别放在m和n中,求最大公约数的算法如下:
(1)将两数中最大的那个放在m中,小的放在n中。
(2)求出m被n除后的余数r。
(3)若余数为0则执行步骤(7);否则执行步骤(4)。
(4)把除数作为新的被除数;把余数作为新的除数。
(5)求出新的余数r。
(6)重复步骤(3)到(5)。
(7)输出n,n即为最大公约数。
intmain()
{intr,m,n;
printf(“Enterm,n:
”);
scanf(“%d%d”,__________);
printf(“m=%dn=%d\n”,m,n);
if(m__________;
r=__________;
while________
{m=__________;n=____________;r=______________;}
printf(“H.C.F=%d\n,n);
return0;
}
五、程序设计题(可以自己研究)得分:
分
1、在歌手大奖赛中有10名评委打分,分数采用百分制,歌手的最后得分是:
从10位评委的评分中,去掉一个最高分去掉一个最低分,统计其总分,并除以8,试编程计算一个歌手的最后得分。
2、设有一个3位数,将它的百、十、个位3个单一数,各自求立方,然后加起来,正好等于这个3位数。
如:
153=13+53+33.。
写一个函数,找出所有满足条件的数。
3、现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0选择尽量少的喷水装置,把整个草坪的全部湿润。
输入:
第一行m表示有m组测试数据
一组测试数据的第一行有一个整数数n,n表示共有n个喷水装置,随后的一行,有n个实数ri,ri表示该喷水装置能覆盖的圆的半径。
输出:
输出所用装置的个数