您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页2022年江西机电职业技术学院公共课《C语言》科目期末试卷B(有答案)

2022年江西机电职业技术学院公共课《C语言》科目期末试卷B(有答案)

来源:爱玩科技网
2022年江西机电职业技术学院公共课《C语言》科目期末试卷B(有

答案)

一、填空题

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

union

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

printf(\"_______\",_______); 2、下面程序段的运行结果是_______。 x=2;

do{printf(\"*\");x--;)while(!x==0); 3、执行下面程序段后,k的值是_______。 k=1;n=263;

do{k*=n%10;n/=10;} while(n);

4、若x和n均是int型变量,且x和n的初值均为5,则执行表达式x+=n++后x的值为_______,n的值为_______。

5、C语言所提供的基本数据类型包括:单精度型、双精度型、_______、_______和_______。

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

int i,x[10]={2,3,0,3,0,2,3,2,1,3},y[4]={0}; for(i=0;i<10;i++)y[x[i]]++; printf(\"%d\\n\",y[3]);

7、测试char型变量a第6位是否为1的表达式是_______(设最右位是第1位)。 8、在C语言源程序中,一个变量代表【 】。

9、C语言源程序文件的后缀是 ;经过编译后,生成文件的后缀是 ;经过连接后,生成文件的后缀是 10、若有以下定义和语句: int*p[3],a[6],i; for(i=0;i<3;i++) p[i]=8&a[2*i];

则*p[0]引用的是a数组元素_______,*(p[1]+1)引用的是a数组元素_______。

二、选择题

11、在C语言中,char型数据在内存中的存储形式是( )。 A.补码B.反码C.原码D.ASCII码

12、设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是( )。

A.n=(n*100+0.5)/100.0 B.m=n*100+0.5,n=m/100.0 C.n=n*100+0.5/100.0 D.n=(n/100+0.5)*100.0

13、以下叙述正确的是

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

D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误 14、C语言规定:在一个源程序中,main函数的位置( ) A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后

15、若有说明:char*language[]={\"FORTRAN\",\"BASIC\",\"PASCAL\",JAVA\",\"C\;则以下不正确的叙述是( )

A.language+2表示字符串”PASCAL”的首地址 B.*language[2]的值是字母P

C.language是一个字符型指针数组,它包含5个元素,每个元素都是一个指向字符串变量的指针

D.language是一个字符型指针数组,它包含5个元素,其初值分别是:\"FORTRAN\",\"BASIC\",\"PASCAL\",\"JAVA\",\"C\"

16、阅读以下程序,当输入数据的形式为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.不确定值 17、以下正确的描述是( )。

A.continue语句的作用是结束整个循环的执行 B.只能在循环体内和switch语句体内使用break语句 C.在循环体内使用break 语句或continue语句的作用相同 D.从多层循环嵌套中退出时,只能使用goto语句

18、以下程序有语法性错误,有关错误原因的正确说法是( )。

#include int main() {int G=5,k; void prt_char(); -----

k=prt_char(G); ---

}

A.语句void prt_char();有错,它是函数调用语句,不能用void说明 B.变量名不能使用大写字母

C.函数说明和函数调用语句之间有矛盾 D.函数名不能使用下划线

19、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为。(假设a[0][0]位于数组的第一个位置上)( )

A.i*m+j B.j*m+i C.i*m+j-1 D.i*m+j+1

20、下面程序段(每行代码前面的数字表示行号)( )。

1 int a[3]={3*0}; 2 int i;

3 for(i=0;i<3;i++)scanf(\"%d\",&a[i]); 4 for(i=1;i<3;i++)a[o]=a[o]+a[i]; 5 printf(\"%d\\n\",a[o]);

A.第1行有错误 B.第5行有错误 C.第3行有错误 D.没有错误 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、下面程序段的运行结果是( )。

int a[6][6],i,j; for(i=1;i<6;i++)

for(j=1:j<6;j++) a[i][j]=(i/j)*(j/i); for(i=1;i<6;i++) {for(j=1;j<6;j++) printf(\"%2d\",a[i][j]); printf(\"\\n\") }

A)11111 B)00001 C)10000 D)10001 11111 00010 01000 01010 11111 00100 00100 00100

11111 01000 00010 01010

11111 10000 00001 10001

23、下面程序的功能是将字符串s中所有的字符c删除。请选择填空(#include int main() {char s[80];inti,j; gets(s);

for(i=j=0;s[i]!= '\\o';i++) if(s[i]!='c)[ ]; s[j]='\\o'; puts(s);

)。

return 0; }

A)s[j++]=s[i] B)s[++j]=s[i] C)s[j]=s[];j++ D)s[j]=s[i]

24、折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。函数binary的作用是应用折半查找法从存有10个有序整数的a数组中对关键字m进行查找,若找到,返回其下标值;反之,返回-1。请选择填空。

int binary(int a[10],int m) {int low=0,high=9,mid; while(low<=high) {mid=(low+high)/2; if(ma[mid])【】; else return(miD.; return(一1); }

A.high=mid-1 B.low=mid+1 C.high=mid+1 D.low=mid-1

25、若运行以下程序时,从键盘输入3.62.4<回车>,则下面程序的运行结果是( )

# include # include int main()

{ float x,y,z;

scanf(\"%f%f\ z=x/y; while(1)

if(fabs(z)>1.0){x=y;y=z;z=x/y;} else break; printf(\"%f\\n\ return 0; }

A)1.500000 B)1.600000 C)2.000000 D)2.400000

三、读程序填空

26、已有定义int d=-2;执行以下语句后的输出结果是_______。

printf(\"*d(1)=%d*d(2)=%3d*d(3)=%-3d*\\n\",d,d,d); printf(\"*d(4)=%x*d(5)=%6x*d(6)=%-6x*\\n\",d,d,d); 27、若要求下列程序的输出结果为8.00,则[]中应填入的是_______。

#include int main() {int k=2,m=5; float s,x=1.2,y=[]; s=2/3+k*y/x+m/2; printf(\"%4.2f\\n\",s);

return 0; }

28、若运行以下程序时输入:35/<回车>,则程序的运行结果是_______。

#include int main() {float x,y; char o; double r;

scanf(\"%f%f%c\",&x,&y,&o); switch(o)

{case'+':r=x+y;break; case'-':r=x-y;break; case'*':r=x*y;break; case'/':r=x/y;break; printf(\"%f\",r); return 0; }

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

函数关系

x 𝑥<0 0<𝑥≤10 y 0 x 10<𝑥≤20 20<𝑥≤40 # include int main() { int x,c,m; float y; scanf(\"%d\ if(______) c=-1; else c=(______); switch(c)

{ case-1:y=0; break; case 0:y=x; break; case 1:y=10; break; case 2:

case3: y=-0.5*x+20; break; default:y=-2;

if(______) printf(\"y=%f\ else printf(\"error\\n\"); return 0; }

10 -0.5x+20 30、以下程序的功能是用二分法求方程2x3-4x2+3x-6=0的根,并要求绝对误差不超过0.001。请填空。 #include

float f(float x)

{return(2*x*x*x*x-4*x*x+3*x-6);} int main()

{float m=-100,n=90,r; r=(m+n)/2; while(f(r)*f(n)!=0) {if(_______) m=r; Else n=r: if(_______) break: r =(m+n)/2; }

printf(\"The fang cheng jie is %6.3f\\n\ return(0); }

31、以下程序段的功能是求数组num中小于零的数据之和。请填空。

int num[20]={10,20,1,一20,203,一21,2,一2,一2,11,一21, 22,12,一2,一234,一90,22,90,一45,20};

int sum=0,i;

for(i=0;i<=19;i++) if(_______) sum=_______;

printf(\"sum=%6d\",sum);

32、当运行以下程序时,从键盘输入“12345-1<回车>”,则下面程序的运行结果是_______。

#include int main() {int k=0,n; do

{scanf(\"%d\",&n);k+=n; }while(n!=-1);

printf(\"k=%d n=%d\\n\",k,n); 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))++

*(x+2))++; *(x+1))++; } }

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、已有变量定义和函数调用语句int x=57;isprime(x);函数isprime()用来判断一个整型数a是否为素数;若是素数,则函数返回1,否则返回0。请编写isprime函数。

int isprime(int a) { }

35、编写程序,统计d输入的命令行中第二个参数所包含的英文字符个数。

一、填空题

1、【1】%If【2】num.x 2、** 3、36

4、【1】10【2】6

5、【1】整型【2】字符型【3】枚举型

6、4

7、a &040或a&0×20或a&32 8、内存中的一个存储单元 9、【1】.c【2】.obj【3】.exe 10、【1】a[0]【2】a[3]

二、选择题

11、D 12、B

13、C 14、C

15、D 16、D 17、B

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

三、读程序填空

26、*d(1)=-2*d(2)=囗-2*d(3)=-2囗**d(4)=fffe*d(5)=囗囗fffe*d(6)=fffe囗* (注:答案中的囗代表空格) 27、3.6 28、8.# 29、**1** **3**

30、【1】f(r)*f(n)<0【2】n-m<0.001 31、【1】num[i]<0【2】num[i]+sum 32、k=14 n=-1 33、1 2 3

四、编程题

34、int isprime(int a) {int i;

for(i=2;i35、#include #include

int main(int argc,char*argv[]) {char*str; int num=0; if(argc==2)

{str=argv[1]; while(*str)

if(isalpha(*str++))num++; printf(\"\\nThe count is:%d.\\n\",num); }

return 0; }

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

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

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

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