您的当前位置:首页正文

2022年合肥幼儿师范高等专科学校公共课《C语言》科目期末试卷A(有答案)

2020-05-05 来源:步旅网
2022年合肥幼儿师范高等专科学校公共课《C语言》科目期末试卷

A(有答案)

一、填空题

1、一个C语言源程序由若干函数组成,其中至少应含有一个________ 2、下面程序段中循环体的执行次数是_______。 a=10;b=0;

do{b+=2;a-=2+b;}while(a>=0);

3、鸡兔共有30只,脚共有90只,下面程序段是计算鸡兔各有多少只。请填空。

for(x=0;x<=30;x++) {y=30一x;

if(_______)printf(\"%d,%d\\n\",x,y); }

4、已有定义int a;float b,x;char cl,c2;为使a=3、b=6.5、x=12.6、cl='a'、c2='A',正确的scanf函数调用语句是_______,数据输入的形式应为_______。

5、设有以下定义和语句,请在printf语句的_______中填上能够正确输出的变量及相应的格式说明。

union

{int n;doublex;}num; num.n=10; num.x=10.5;

printf(\"_______\",_______);

6、假设变量a、b均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为_______。

7、下面程序段的运行结果是_______。

char ch[]=\"600\";int a,s=0;

for(a=0;ch[a]>= '0'&&ch[a]<='9';a++) s=10*s+ch[a]-'o'; printf(\"%d\",s);

8、以下程序段通过移动指针变量m,给如图9-7所示连续动态存储单元赋值。请填空。(假设程序段中的所有变量均已正确说明。)

for(k=0;k<10;k++,m++)scanf(\"%d\",_______);

9、若想输出b数组的10个元素,则下面存在错误的程序行是_______。(每个程序行前面的数字代表行号。)

1 int main()

2 {int b[10]={1,3,5,7,9,2,4,6,8,10},k; 3 for(k=0;k<10;k++,b++) 4 printf(\"%4d\",*b); 5 return0;

6 }

10、设有char a,b;若要通过a&b运算屏蔽掉a中的其他位,只保留第2和第8位(右起为第1位),则b的二进制数是_______。

二、选择题

11、下面4个选项中,是不合法的转义字符的选项是( ) A.'\\\"' B.'\\1011 ' C.'\\0ll' D.'\\abe'

\\\\ '\\' '\\f' '\\0ll' \\xf' ' \\a' '\\]' 'xlf'

12、若有说明语句:charc='\\72';则变量c( )。 A.包含1个字符 B.包含2个字符

C.包含3个字符 D.说明不合法,c的值不确定 13、一个C语言程序由( )。

A.一个主程序和若干子程序组成 B.函数组成 C.若干过程组成 D.若干子程序组成 14、以下叙述不正确的是( )

A.一个C源程序可由一个或多个函数组成 B.一个C源程序必须包含一个main函数 C.C程序的基本组成单位是函数

D.在C程序中,注释说明只能位于一条语句的后面

15、若用数组名作为函数调用的实参,则传递给形参的是(

)A.数组的首地址 B.数组第一个元素的值 C.数组中全部元素的值 D.数组元素的个数

16、以下针对scanf函数的叙述中,正确的是( )。 A.输入项可以为一实型常量,如scanf(\"%f\",3.5);

B.只有格式控制,没有输入项,也能进行正确输入,如scanf(\"a=%d,b=%d\"); C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(\"%4.2f\",&f);

D.当输入数据时,必须指明变量的地址,如scanf(\"%f\",&f); 17、下面程序段的运行结果是( )。

a=1;b=2;c=2;

while(aA.if(a==B. B.if(a=B.C.if(strcpy(a,B.)D.if(strcmp(a,B.) 19、若有定义:inta[]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k;则下面程序段的输出结果是( )。

for(k=0;k<4;k++) q[k]=&a[k*3];

printf(\"%d\\n\",q[3][0]);

A.8 B.16 C.20 D.输出项不合法,结果不确定 20、若有以下定义,则数值不为3的表达式是( )。

int x[10]={0,1,2,3,4,5,6,7,8,9},*p1; A.x[3] B.p1=x+3,*p1++ C.pl=x+2,*(p1++) D.pl=x+2,*++pl 21、以下程序的输出是( )。

#include int main() {int x=1; if(x=2)

printf(\"OK\");

else if(x<2)printf(\"%d\\n\",x);

else printf(\"Quit\"); return 0; }

A.OK B.Quit C.1 D.无输出结果 22、对两个数组a和b进行如下初始化:

char a[]=\"ABCDEF\";charb[]={'A','B','C','D','E','F'};则以下叙述正确的是( )。

A.a与b数组完全相同 B.a与b长度相同 C.a和b中都存放字符串 D.a的长度比b长 23、下面程序段的运行结果是( )。

int a[6],i;

for(i=1;i<6;i++)

{a[i]=9*(i-2+4*(i>3))%5; printf(\"%3d\; }

A)-4 0 4 0 4 B)-4 0 4 0 3 C)-4 0 4 4 3 D)-4 0 4 4 0

24、下面程序的运行结果是( )。 #include int main()

{ int i; for(i=1;i<=5;i++)

switch(i%5)

{ case 0: printf(\"*\"); break; case 1: printf(\"#\"); break; default: printf(\"\\n\"); case 2: printf(\"&.\"); } return 0; }

A)#&8&&* B)#& C)# D)#&& &

&* & * &

*

25、以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'A',B’,C.;则符合程序段运行结果的选项是( )。

void move(char getone,char putone) {printf(\"%c——>%c\\n\",getone,putone); void hanoi(int n,char one,char two,char three) {if(n==1)move(one,three); else

{hanoi(n-1,one,three,two); move(one,three); hanoi(n-1,two,one,three); } }

A)A-->C B)A-->C C)A-->C D)A-->C A-->B A-->B A-->B A-->B C-->B C-->A C-->B C-->B B-->A A-->B A-->C A-->C C-->B B-->C B-->A A—->B A-->C A-->C B-->C B-->C A-->B A-->B A-->C A-->C

三、读程序填空

26、已有定义float d1=3.5,d2=-3.5;执行以下语句后的输出结果是_______。

printf(\"*d(1)=%e*d(2)=%.4e*d(3)=%10.4e*\\n\",dl,dl,d1); printf(\"*d(4)=%e*d(5)=%.6e*d(6)=%-12.5e*\\n\",d2,d2,d2); 27、以下程序的运行结果是_______。

#include int main() {int n=0; n+=(n=10); printf(\"%d\\n\",n); return 0; }

28、以下函数fun的功能是:将输入的大写字母,先转换为与其对应的小写字母,然后再转换成该小写字母后的第3个字母,返回后输出。例如,若输入的字母为E,输出的字母则为h;若输入的字母为Y,输出的字母则为b。请填空。

#include #include char fun(charc) {!c=_______:

if(c>=1a1&&c<='w')c=c+3; else if(c>='x'/&&c<='z')_______: return c; }

int main()

{char c; c=getchar(); c=fun(e); putchar(c); return(0); }

29、以下程序的运行结果是_______。

#include

int func(int array[][4],int m) {inti,j,k; k=0;

for(i=0;i<3;i++) for(j=0;j<4;j++)

if(array[i][j]int main()

{static int a[3][4]={{1,13,5,7},{2,4,26,8},{10,1,3,12}}; int i,j,m;

for(i=0;i<3;i++) { for(j=0;j<4;j++)

printf(\"%4d\",a[i][j]); printf(\"\\n\");m=10;

printf(\"\\nThe value is%d\\n\",func(a,m)); return(0); }

30、若a、b、c均已正确定义且a=0、b=2、c=3,则以下程序段的输出是_______。

switch(a)

{case 0:switch(b==2)

{case 1:printf(\"&”);break; case 2:printf(\"%”);break; }

case 1:switch(c) {case 1:printf(\"S\");

case 2:printf(”*”);break; default:printf(\"#”); } }

31、下面程序的运行结果是_______。

#include int main()

{char a[2][6]={\"Sun\",\"Moon\");int i,j,len[2];

for(i=0;i<2;i++) {for(j=0;j<6;j++) if(a[i][j]=='\\o') {1en[i]=j;break;}

printf(\"%6s:%d\\n\",a[i],len[i]); }

return 0;

}

32、下面程序的功能是用do-while语句求1~1000之间满足“用3除余2,用5除余3,用7除余2”的数,且一行只打印5个数。请填空。

#include int main() {inti=1,j=0;do {if(_______)

{printf(\"%4d\",i); j=j+1;

if(_______)printf(\\n\"); } i=i+1; }while(i<1000); return 0; }

33、以下程序的运行结果是_______。

#include #define N6

void fun(int*a,int*x) {int i;

for(i=0;i<3;i++)*(x+i)=0; for(i=0;i{if(*(a+i)<=100&&*(a+i)>=80)(if(*(a+i)<=79&&*(a+i)>=60)(if(*(a+i)<=59)(*(x+0))++ } }

int main()

{int a[N]={66,55,77,88,100,99},x[3],i; fun(a,x); for(i=0;i<3;i++) printf(\"%d\ return(0); }

四、编程题

34、用switch语句编程实现以下函数关系:

*(x+2))++;*(x+1))++; −1 (x<0) y={0 (x=0)

1 (x>0)

35、试利用结构体类型编制一个程序,实现输入一个学生的数学期中和期末成绩,然后计算并输出其平均成绩。

参考答案

一、填空题

1、主函数(或main函数) 2、3

3、2*x+4*y==90

4、【1】scanf(\"%d%f%f%c%c”,&a,&.b,8.c1,8.c2); 【2】3囗6.5囗12.6aA<回车> (注:答案中的囗代表空格) 5、【1】%If【2】num.x 6、9 7、600 8、m 9、第3行 10、10000010

二、选择题

11、B 12、A

13、B 14、D

15、A

16、D 17、A 18、D 19、C 20、B 21、A 22、D 23、C 24、B 25、C

三、读程序填空

26、*d(1)=3.50000e+00*d(2)=3.500e+00*d(3)=囗3.500e+00* *d(4)=一3.50000e+00*d(5)=-3.50000e+00*d(6)=-3.5000e+00囗x

(注:答案中的囗代表空格) 27、20

28、【1】tolower(c)或c=c+32【2】c=c-23 29、1 13 5 7 2 4 26 8 10 1 3 12 The value is 31

30、【1】×<110&&x>=100【2】(x<60)||(x>109)【3】m=0

31、Sun;3 Moon:4

32、【1】i%3==2&&i%5==3&&i%7==2【2】j%5==0 33、1 2 3

四、编程题

34、#include int main() {float x;int y; printf(\\n input x:\"); scanf(\"%f\",8.x); switch(x<0)

{case 1:y=-1;break; case 0:switch(x==0)

{case 1:y=0; break; default:y=1; } }

printf(\\n y=%d',y); return 0; }

35、#include int main()

{struct study int mid; int end; int average;

}math;

scanf(\"%d%d\",&math.mid,&.math.end); math.average=(math.mid+math.end)/2; printf(\"average=%d\\n\",math.average); return 0; }

因篇幅问题不能全部显示,请点此查看更多更全内容