您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页2022年三峡大学科技学院公共课《C语言》科目期末试卷B(有答案)

2022年三峡大学科技学院公共课《C语言》科目期末试卷B(有答案)

来源:爱go旅游网
2022年三峡大学科技学院公共课《C语言》科目期末试卷B(有答案)

一、填空题

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

union

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

printf(\"_______\",_______);

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

3、C语言源程序的基本单位是________

4、若有定义语句:int m=5,y=2;则执行表达式y+=y-=m*=y后的y值是_______

5、在C语言的赋值表达式中,赋值号左边必须是_______

6、设x为无符号整数。表达式x^(~(~0<7、函数swap(int x,inty)可完成对x和y值的交换。在运行调用函数中的如下语句后,a[0]和a[1]的值分别为_______,原因是_______。 a[o]=1;a[1]=2; swap(a[o],a[1]);

8、若有定义:inta[3][4]={{1,2},{0},{4,6,8,10}};,则初始化后,a[1][2]得到的初值是_______,a[2][1]得到的初值是_______。

9、假设M为已经声明的符号常量,则定义一个具有M×M个元素的双精度型数组a,且所有元素初值为0的形式是_______。 10、下面程序段的运行结果是_______。

char*s1=\"AbcdEf\", *s2=\"aB\"; int t;s1++;

t=(strcmp(s1,s2)>0); printf(\"%d\\n\",t);

二、选择题

11、若x、i、j和k都是int型变量,则执行表达式x=(i=4,j=16,k=32)后x的值为( )。

A.4 B.16 C.32 D.52

12、若有代数式𝑏𝑐,则不正确的C语言表达式是( )。 A.a/b/c*e*3 B.3*a*e/b/c C.3*a*e/b*c D.a*e/c/b*3 13、一个C程序的执行是从( )

A.本程序的main函数开始,到main函数结束

B.本程序的第一个函数开始,到本程序文件的最后一个函数结束 C.本程序的main函数开始,到本程序文件的最后一个函数结束 D.本程序的第一个函数开始,到本程序main函数结束 14、以下叙述正确的是

3𝑎𝑐

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

D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误 15、若有说明:inta[10];,则对a数组元素的正确引用是( )。 A.a[10] B.a[3.5] C.a(5) D.a[10-10]

16、设x、y和z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后,x、y和z的值是( )。

A.x=10 B.x=10 C.x=10 D.x=10

y=15 y=10 y=10 y=5 z=10 z=10 z=15 z=10

17、若有以下定义和语句,则对a数组元素的正确引用为( )。 int a[2][3],(*p)[3]; p=a;

A.(p+1)[0] B.*(*(p+2)+1) C.*(p[1]+1) D.p[1]+2

18、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( ) A.extern B.register C.auto D.static 19、以下for循环的执行次数是( )。

for(x=0,y=0;(y=123)&&(x<4);x++); A.是无限循环 B.循环次数不定 C.执行4次 D.执行3次 20、语句while(!E);中的表达式!E等价于( )。

A.E==0 B.E!=1 C.E!=0 D.E==1 21、以下程序( )。

#include int main()

{int a=5,b=0,c=0; if(a=b+C.printf(\"***\\n\"); else printf(\"$$$\\n\"); return 0; }

A.有语法错不能通过编译 B.可以通过编译但不能通过连接 C.输出*** D.输出$$$ 22、下面程序的运行结果是( )。

#include #include int main()

{char a[80]=\"AB',b[80]=\"LMNP\";inti=0; strcat(a,B.;

while(a[i++]!=‘\\o’)b[i]=a[i]; puts(B.; return 0; }

A.LB B.ABLMNP C.AB D.LBLMNP

23、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。请选择填空。( )

#include int main()

{char s[80],c1,c2='';int i=0,num=0; gets(s); while(s[i]!='\\o') { c1=s[i];

if(i==0)c2=''; else c2=s[i-1]; if(【】)num++; i++;

printf(\"There are%d words.\\n\",num); return 0; }

A.c1==′′&&c2=='' B.cl!= ''&&c2=='' C.c1==''&&c2!=''D.cl!=''&&c2!=''

24、以下程序的功能是计算函数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+y25、下面程序的运行结果是( )。

#include int main() {int num=0; while(num<=2) { num++;

printf(\"%d\\n\",num);

return 0; }

A)1 B) 1,2 C) 1,2,3 D)1,2, 3, 4

三、读程序填空

26、以下程序的输出结果为_______.

#include int main()

{printf(\"*%f,%4.3f*\\n\",3.14,3.1415); return0; }

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

#include int main() {int a=252;

printf(\"a=%oa=%#o\\n\",a,a); printf(\"a=%xa=%#x\\n\",a,a); return 0; }

28、函数yanghui能够按以下形式构成一个杨辉三角形。请填空。 1

1

1

1 2 1 1 3 2 1 1 4 3 2 1

# include # define N 1

void yanghui(int a[] [N]) { int i,j;

for(i=0;ifor(j=2; _______;j++) a[i][j]= _______+a[i-1][j]; }

29、以下程序的功能是根据输入的y(Y)与n(N),在屏幕上分别显示出This is YES.与This is NO.。请填空。

#include void YesNo(char ch) {switch(ch) {case'y':

case'Y':printf(\"\\nThis is YES.\\n\");_______; case'n': case'N':

printf(\"\\nThis is NO.\\n\"); }

int main() {char ch;

printf(\"\\nEnter a char'y','Y\"or'n','N':\"); ch=[2];

printf(\"ch:%c\ YesNo(ch); return(0); }

30、下面程序段的运行结果是_______。 for(a=1,i=-1;-1<=i<1;i++) {a++;printf(\"%2d\",a);} printf(\"%2d\",i);

31、下面程序用“两路合并法”把两个已按升序排列的数组合并成一个升序数组。请填空。

#include int main()

{int a[3]={5,9,19};

int b[5]={12,24,26,37,48}; intc[10],i=0,j=0,k=0; while(i<3&&.j<5) if(_______)

{c[k]=b[];k++;j++;} else

{c[k]=a[i];k++;i++;} while(_______) {c[k]=a[i];i++;k++;} while(_______) {c[k]=b[];k+十;j++;}

for(i=0;i32、以下程序的功能是:某邮局对邮寄包裹有如下规定,若包裹的长、宽、高任一尺寸超过1m或重量超过30kg,不予邮寄;对可以邮寄的包裹每件收手续费0.2元,再加上根据表4-5按不同重量weigh计算的邮资。请填空。

重量与邮资

重量/kg weigh<10 10 int main()

{ float len, weigh, hei, wid, mon,r;

scanf(\"%f %f %f %f\ if(len>1|| wid>1|| hei>1 || weigh>30)___________;

else if (weigh<10) r=0.8; else if (weigh<=20) r=0.75; else if (weigh<=30) ___________; if (r==-1) printf(\"error\\n\"); else

{___________;printf(\"%f\ return 0; }

33、下面程序的功能是将两个字符串s1和s2连接起来。请填空。

#include #include

void conj(char*p,char*P2); int main()

{char sl[80],s2[80]; gets(s1);gets(s2); conj(s1,s2); puts(s1); return(0); }

void conj(char*pl,char*p2) {char*p=pl;

while(*p1)_______;

while(*p2){*p1=_______;pl++;p2++;} *p1='\\0'; }

四、编程题

34、请定义枚举类型money,用枚举元素代表人民币的面值。包括1、2、5分;1、2、5角;1、2、5、10、50、100元。

35、设有一个unsignedlong型整数,现要分别将其前2个字节和后2个字节作为2个unsigned int型整数输出(设一个int型数据占2个字节),试编一函数partition实现上述要求。要求在主函数中输入该long型整数,在函数partition中输出结果。

参考答案

一、填空题

1、【1】%If【2】num.x 2、【1】scanf【2】printf 3、函数 4、-16 5、变量

6、【1】~0得到一个全1的数

【2】(~0<【4】~(~0<【2】单向值传递,不能返回交换后的值。 8、【1】0【2】6

9、double a[M][M]={0};

10、1

二、选择题

11、C 12、C

13、A 14、C

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

三、读程序填空

26、*3.140000,3.142* 27、a=374囗囗a=0374 a=fc囗囗a=0xfc

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

28、【1】i=1【2】j<=i-1【3】a[i-1][j-1] 29、【1】break【2】getchar()

30、-1

31、【1】a[i]>b[]【2】i<3【3】j<5

32、【1】r=-1【2】r=0.7【3】mon=wei*r+0.2 33、【1】p1++【2】*p2

四、编程题

34、Enum money

{fen1=1,fen2=2,fen5=5,jiaol=10,jiao2=20,jiao5=50, yuan1=100,yuan2=200,yuan5=500,yuanl0=1000, yuan50=5000,yuan100=10000 };

35、void partition(unsigned long int num) {union a

{unsigned int part[2]; unsigned long int w; }n,*p;

p=&n;n.w=num;

printf(\"long int=%lx\\n\",num);

printf(\"low-part num=%0x,high-part num=%0x\\n\", p->part[0],p->part[1]); int main()

{unsigned long intx;

x=0×23456789; partition(x); return 0; }

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

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务