2022年南通大学杏林学院公共课《C语言》科目期末试卷A(有答案)一、填空题1、请读程序段:int a=1,b=2;if(a&b)printf("***\n");else printf("$$ $\n");以上程序段的输出结果是_______。
2、C语言源程序文件的后缀是;经过编译后,生成文件的后缀是;经过连接后,生成文件的后缀是3、在C语言中,输入操作是由库函数________完成的,输出操作是由库函数________完成的。
4、C语言所提供的基本数据类型包括:单精度型、双精度型、_______、_______和_______。
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、下面程序段的运行结果是_______。
chara[]="12345",*p;int s=0;for(p=a;*p!=\0';p++)s=10*s+*p-'o';printf("%d\n",s);7、执行下面程序段后,k的值是_______。
k=1;n=263;do{k*=n%10;n/=10;} while(n);8、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。
请填空。
a+=_______;b=a-_______;a-=_______;9、设有一输入函数scanf("%d”,k);它不能使float类型变量k得到正确数值的原因是_______未指明变量k的地址和_______格式控制符与变量类型不匹配。
10、设有以下宏定义:#define WIDTH80#define LENGTH(WIDTH+40)则执行赋值语句:k=LENGTH*20;(k为int型变量)后,k的值是_______。
二、选择题11、表达式18/4*sqrt(4.0)/8值的数据类型为()A.intB.floatC.doubleD.不确定12、若有代数式|x3+log10x|,则正确的C语言表达式是()A.fabs(x*3+log(x))B.abs(pow(x,3)+log(x))C.abs(pow(x,3.0)+log(x))D.yfabs(pow(x,3.0)+log(x))13、若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是()A.scanf("%d%lx,%le",&x,&y,&z);B.scanf("%2d*%d%1f",&x,&y,&z);C.scanf("%x%*d%o”,&x,&y);D.scanf("%x%0%6.2f",&x,&y,&z);14、设有以下程序:#include<stdio.h>int main(){char cl,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);。
putchar(c2);printf("%c%c\n",c5,c6);return0;}若运行时从键盘输入数据:abc<回车>defg<回车>,则输出结果是()。
A.abcdB.abdeC.abefD.abfg15、对以下定义语句的正确理解是()。
int a[10]={6,7,8,9,10};A.将6,7,8,9,10依次赋给a[1]~a[5]B.将6,7,8,9,10个初值依次赋给a[o]~a[4]C.将6,7,8,9,10个初值依次赋给a[6]~a[10]D.因为数组长度与初值的个数不相同,所以此初始化语句不正确16、以下叙述正确的是A.在C程序中,main函数必须位于程序的最前面B.C程序的每行中只能写一条语句C.C语言本身没有输入输出语句D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误17、若有如下语句:int x=3;do {printf("%d\n",x-=2);}while(!(--x));上面程序段( )。
A.输出1B.输出1和-2C.输出3和0D.是死循环18、若用数组名作为函数调用的实参,则传递给形参的是()A.数组的首地址B.数组第一个元素的值C.数组中全部元素的值D.数组元素的个数19、执行下列程序后编译将出现错误,错误是()。
#include <stdio.h>int main(){char a,b,c,*d;a=\V;b='\xbe';c=\0xab";d="\0127";printf("%c%c%c%c\n",a,b,c,*D.;return(0);}A.只有a=\';语句不正确B.b='\xbc';语句不正确C.d="\0127";语句不正确D.a='\V;和c=\0xab";语句都不正确20、若有语句:charsl[]="string",s2[8]=",*s3,*s4="string2";则对库函数strcpy的错误调用是()A.strcpy(s1,"string2");B.strcpy(s4,"string1");C.strcpy(s3,"string1");D.strcpy(s1,s2);21、以下程序的正确运行结果是()。
#include <stdio.h>#define MAX10void sub2(),sub1(),sub3(int*A.;int a[MAX],i;int main(){printf("\n");subl();sub3(a);sub2();sub3(a);return(O);void sub2( ){int a[MAX],i,max;max=5;for(i=0;i<max;i++)a[i]=i;}void subl(){for(i=0;i<MAX;i++) a[i]=i+i;void sub3(int a[]){int i; for(i=0;i<MAX;i++)printf("%d",a[i]);printf("\n");}A)0 2 4 6 8 10 12 14 16 180 1 2 3 4B)0 1 2 3 40 2 4 6 8 10 12 1416 18C)0 1 2 3 4 5 6 7 8 90 1 2 3 4D)0 2 4 6 8 10 12 14 16 180 2 4 6 8 10 12 14 16 18 22、当运行以下程序时,从键盘输入:ab<回车>C<回车>def<回车>则下面程序的运行结果是()。
#include <stdio.h>#defineN6int main(){charc[N];int i=0;for(;i<N;c[i]=getchar(),i++);for(i=0;i<N;i++)putchar(c[i]);return 0;}A.abcdefB.aC.bD.abb c cc d def23、下面程序的功能是将字符串s中所有的字符c删除。
请选择填空()。
#include<stdio.h>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、以下程序()。
#include<stdio.h>int main(){int a=5,b=0,c=0;if(a=b+C.printf("***\n");else printf("$$$\n");return 0;}A.有语法错不能通过编译B.可以通过编译但不能通过连接C.输出***D.输出$$$25、下面程序段的运行结果是()。
x=y=0;while(x<15)y++,x+=++y;printf("%d,%d',y,x);A.20,7B.6,12C.20,8D.8,20三、读程序填空26、以下程序的输出结果是_______。
#include <stdio.h>int main(){int a=325;double x=3.1415926;printf("a=%+06dx=%+e\n",a,x);return 0;}27、以下程序的运行结果是_______。
#include <stdio.h>int main(){int m=177;printf("%o\n",m);return 0;}28、以下程序的输出结果是_______。
#include<stdio.h>int main(){intx,y;x=5;switch(x){case1:case2:case3:case 4:printf("x<5\n");case 5:printf("x=5\n",x);default:printf("The value of x is unknown.\n");}return0;}29、以下程序a对应的数学表达式是_______;程序b对应的数学表达式是_______。
程序a 程序b# include<stdio.h> # include<stdio.h>int main() int main(){ int a,b; { int a,b;scanf("%d",&a); scanf("%d",&a);if(a<0) b=-1; b=0;else if(a==0) if(a!=0)b=0; if(a>0) b=1;else b=1; else b=-1;printf("a=%d,b=%d\n",a,b); printf("a=%d,b=%d\n",a,b);return 0; return0;} }30、用0~9之间不同的3个数构成一个3位数,下面程序将统计出共有多少种方法。