热门搜索 :
考研考公
您的当前位置:首页正文

2022年南昌大学科学技术学院公共课《C语言》科目期末试卷A(有答案)

来源:伴沃教育
2022年南昌大学科学技术学院公共课《C语言》科目期末试卷A(有

答案)

一、填空题

1、设x=10100011,若要通过x*y使x的高4位取反,低4位不变,则y的二进制数是_______。

2、在C语言中,输入操作是由库函数________完成的,输出操作是由库函数________完成的。

3、在C语言源程序中,一个变量代表【 】。

4、若有定义语句:int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为_______

5、若有定义语句:inte=1,f=4,g=2;float m=10.5,n=4.0,k;,则执行表达式k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是_______。 6、下面程序段的运行结果是_______。

char s[80],*sp=\"HELLO!\"; sp=strcpy(s,sp); s[0]='h';puts(sp);

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

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

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

8、设有一输入函数scanf(\"%d”,k);它不能使float类型变量k得到正确数值的原因是_______未指明变量k的地址和_______格式控制符与变量类型不匹配。

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

union

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

printf(\"_______\",_______); 10、下面程序段的运行结果是_______。 int i=5;char c[6]=\"abcd\"; do{c[i]=c[i-1];}while(--i>0); puts(c);

二、选择题

11、下面不正确的字符串常量是( )

A.'abe' B.\"12'12\" C. \"o\" D.\"\" 12、下列4组选项中,不是C语言关键字的选项是。( ) A.define B.getc C.include D.while

IF char scanf go

Type printf case pow

13、阅读以下程序,当输入数据的形式为25,13,10<回车>,程序的输出结果

#include int main()

{int x,y,z;

scanf(\"%d%d%d”,8.x.&y,&z); printf(\"x+y+z=%d\\n\",x+y+z); return0; }

A.x+y+z=48 B.x+y+z=35 C.x+z=35 D.不确定值 14、以下C程序的运行结果是。(注:口表示空格)

#include int main() {int y=2456;

printf(\"y=%3o\\n\",y); printf(\"y=%8o\\n\",y); printf(\"y=%#8o\\n\",y); return 0; }

A.y=口口口2456 B.y=囗口□4630

y=口口口口口口口口2456 y=口口口口口口口04630 y= ########2456 y= ########4630 C.y=2456 D.y=4630

y=口口口口2456 y=口口口口4630 y=口口口02456 y=口口口04630

15、判断字符串a和b是否相等,应当使用( )。

A.if(a==B. B.if(a=B.C.if(strcpy(a,B.)D.if(strcmp(a,B.) 16、以下叙述正确的是

A.在C程序中,main函数必须位于程序的最前面 B.C程序的每行中只能写一条语句 C.C语言本身没有输入输出语句

D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误 17、与下面程序段等价的是( )。

for(n=100;n<=200;n++) {if(n%3==0)continue; printf(\"%4d\",n); }

A.for(n=100;(n%3)&&n<=200;n++)printf(\"%4d\",n); B.for(n=100;(n%3)|| n<=200;n++)printf(\"%4d\",n); C.for(n=100;n<=200;n++)if(n%3!=0)printf(\"%4d\",n); D.for(n=100;n<=200;n++){if(n%3)printf(\"%4d\",n);else continue;break;}

18、若用数组名作为函数调用的实参,则传递给形参的是( ) A.数组的首地址 B.数组第一个元素的值 C.数组中全部元素的值 D.数组元素的个数

19、若有以下定义,则数值不为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

20、若有函数max(a,B.,并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是( )

A.(*p)max(a,B.; B.*pmax(a,B.; C.(*p)(a,B.; D.*p(a,B.;

21、以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。

#include #include float f(float,float); int main()

{floatx,y,z,sum;

scanf(\"%f%1%f\",8.x,&y,8.z); sum=f(【】)+f(z+y,z-y); printf(\"sum=%fNn\",sum); return(0); }

float f(float a,float B. {float value; value=a/b;

return(value); }

A)x-y,x+y B)x+y,x-y C)z+y,z-y D)z-y,z+y

22、下面程序段的功能是输出两个字符串中对应相等的字符,请选择填空( )。

charx[]=\"programming\"; char y[]=\"Fortran\"; int i=0;

while(x[i]!='\\o'&&.y[i]!='\\o') if(x[i]==y[i])printf(\"%c\",【】); else i++;

A.x[i++] B.y[++i] C.x[i] D.y[i]

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

{char str[]=\"SSSWLIA\",c;int k; for(k=2;(c=str[k])!=\\o';k++) {switch(C.

{case'I':++k;break; case'L':continue;

default:putchar(C.;continue; putchar('*’);

}

return 0; }

A.SSW* B.SW* C.SW*A D.SW

24、以下程序的运行结果是( )。

#include int main() {int a,b,d=241; a=d/100%9;

b=(-1)8&.8&(-1); printf(\"%d,%d\",a,B.; return0; }

A.6,1 B.2,1 C.6,0 D.2,0 25、下面程序段的运行结果是( )。

for(y=1;y<10;)y=((x=3*y,x+1),x-1); printf(\"x=%d,y=%d\",x,y);

A.x=27,y=27 B.x=12,y=13 C.x=15,y=14 D.x=y=27

三、读程序填空

26、以下printf语句中*号的作用是_______,输出结果是_______。

#include

int main()

{inti=1;printf(\"##%*d\\n\",i,i); i++;

printf(\"##%*d\\n\",i,i); i++;

printf(\"##%*d\\n\",i,i); return 0; }

27、以下程序的输出结果是_______。

#include int main()

{int x=10;float pi=3.1416; printf(\"(1)%d\\n\ printf(\"(2)%6d\\n\ printf(\"(3)%f\\n\ printf(\"(4)%14fNn\ printf(\"(5)%e\\n\ printf(\"(6)%14e\\n\ printf(\"(7)%g\\n\ printf(\"(8)%12g\\n\ return 0;

}

28、下面程序的功能是:根据表4-3中给定的函数关系,对输入的每个x值计算出相应的y值。请填空。

函数关系

x y 0 x=a或x=-a -a- a sqrt(a*a-x*x) x # include # include int main() { int x,a; float y; scanf(\"%d%d\ if (______) y=0; else if (______) y=sqrt(a *a-x*x); else y=x; printf(\"%f\

29、若有以下程序段,且grade的值为C,则输出结果是_______。 switch(grade)

{case'A':printf(\"85~100\\n\"); case'B':printf(\"70~84n\");

case'C':printf(\"60~69\\n\"); case'D':printf(\"(60\\n\"); default:printf(\"error!\\n\"); }

30、有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,下面的程序统计卖完所需的天数。请填空。

#include int main()

{int day=0,x1=1020,x2;

while(_______){x2=_______;x1=x2;day++;} printf(\"day=%d\\n\",day); return 0; }

31、阅读下面程序,完成下列问题中的填空。问题(1)此程序在调用函数f后的运行结果是_______。(2)若将函数f中的for(j=i+1;j<4;j++)改为for(j=0;j<3一i;j++),则程序的运行结果是_______。

#include void f(int s[J[4]) {inti,j,k;

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

{k=s[i][j];s[i][j]=s[j][i];s[j][i]=k;} int main() {int s[4][4],i,j; for(i=0;i<4;i++) for(j=0:j<4;j++) s[i][j]=i-j; f(s); for(i=0;i<4;i++) {printf(\"\\n\"); for(j=0;j<4;j++) printf(\"%4d',s[i][j]); return(0); }

32、下面程序的功能是给一维数组a输入6个任意整数,假设为: 7 4 8 9 1 5

然后建立一个具有以下内容的方阵并打印。请填空。 5 7 4 8 9 1 1 5 7 4 8 9 9 1 5 7 4 8 8 9 1 5 7 4 4 8 9 1 5 7 7 4 8 9 1 5

#include int main()

{int a[6],i,j,k,m; for(i=0;i<6;i++) scanf(\"%d\",&.a[i]); for(i=5;i>=0;i--)

{k=a[5];for(_______;j>=0;j-一) a[j+1]=a[j]; _______;

for(m=0;m<6;m++)

printf(\"%d\",a[m]); printf(\"\\n\"); } return 0; }

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

#include #define N6 void fun(int*a) {int i,t; t=*(a+1);

for(i=0;iint main()

{int a[N]={11,66,33,77,55,99},i; printf(\"\\n\"); fun(a);

for(i=0;i四、编程题

34、编写程序实现功能:读入两个运算数(datal和data2)及一个运算符(op),计算表达式datal op data2的值,其中op可以为十、一、*、/四个符号中的任一种(用switch语句实现)。

35、从键盘输入一个字符串a,并在a串中的最大元素后边插入字符串b(b[]= \"ab\")。试编程。

参考答案

一、填空题

1、11110000

2、【1】scanf【2】printf 3、内存中的一个存储单元 4、5.500000 5、13.700000 6、hELLO! 7、2*x+4*y==90

8、【1】格式控制符与变量类型不匹配。

scanf 语句的正确形式应该是:scanf(\"%f\",8.k); 【2】未指明变量k的地址。 9、【1】%If【2】num.x 10、aabcd

二、选择题

11、A 12、A 13、D 14、D 15、D

16、C

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

三、读程序填空

26、【1】可以使同一输出语句中的输出宽度得以改变。 【2】##1

##囗2 ##囗囗3 27、(1)10 (2)口口口囗10 (3)56.100000

(4)口口口口口口3.141600 (5)5.68100e+02 (6)口口口3.14160e+00

(7)3.1416

(8)口口口口囗囗3.1416 (注:答案中的囗代表空格)

28、【1】x==a||x==-a【2】x>-a &&x【2】case 0:case 1:case 2:case 3:case 4:case5: 【3】case 9:case 10: 30、【1】x1【2】x1/2-2 31、【1】0 1 2 3

-1 0 1 2 -2 -1 0 1 -3 -2 -1 0 【2】 0 -1 -2 -3

1 0 -1 -2 2 1 0 -1 3 2 1 0

32、【1】j=4【2】a[0]=k 33、66 33 77 55 99 66

四、编程题

34、#include #include

int main()

{float datal,data2,data3; char op;

printf(\"\\ nType in your expression:\");

scanf(\"%f%c%f\

{ case'+': data3=datal+data2; break;

case'-': data3=datal-data2; break;

case'*': data3=datal* data2; break; case'/': i f(data2==0)

{printf(\"\\ nDivision by zero!\"); exit(1);} data3=datal/data2; break;

printf(\"This is %6.2f%c%6.2f=%6.2f\\n\ return 0; }

35、#include

#include int main()

{char a[80],b[]=\"ab\",max; int i=1,j;

printf(\"Input a string\\n\"); gets(a); puts(a);

max=a[0];while(a[i]!='\\o') {if(a[i]>max) {max=a[];j=i;} i++; }

for(i=strlen(a)+2;i>j;i--) a[i]=a[i-2]; a[i+1]='a'; a[i+2]='b'; puts(a); return 0; }

Top