
南京航空航天大学金城学院教务处
三维打印技术-担保书模板
2023年3月17日发(作者:优序融资理论)2022年南京航空航天大学金城学院公共课《C语言》科目期末试卷
B(有答案)
一、填空题
1、执行以下程序时,若从第一列开始输入数据,为使变量a=3、b=7、x=8.5、
y=71.82、c1='A'、c2='a',正确的数据输入形式是_______。
#include
intmain()
{inta,b;
floatx,y;
charcl,c2;
scanf("a=%db=%d",&.a,&.b);
scanf("x=%fy=%",8.x,8.y);
scanf("c1=%cc2=%c”,,8.c2);
printf("a=%d,b=%d,x=%f,y=%f,cl=%c,c2=%c",a,b,x,y,
cl,c2);
return0;
}
2、一个C语言源程序由若干函数组成,其中至少应含有一个________
3、结构化程序由________、________、________3种基本结构组成。
4、C语言所提供的基本数据类型包括:单精度型、双精度型、_______、_______和
_______。
5、若有定义语句:ints=6;则表达式s%2+(s+1)%2的值为_______
6、请读程序段:
inta=-1;
a=a|0377;
printf("%d,%on",a,a);以上程序段的输出结果是_______。
7、函数swap(intx,inty)可完成对x和y值的交换。在运行调用函数中的如下语
句后,a[0]和a[1]的值分别为_______,原因是_______。
a[o]=1;a[1]=2;
swap(a[o],a[1]);
8、下面程序段的运行结果是_______。
inti=5;charc[6]="abcd";
do{c[i]=c[i-1];}while(--i>0);
puts(c);
9、假设M为已经声明的符号常量,则定义一个具有M×M个元素的双精度型数
组a,且所有元素初值为0的形式是_______。
10、当运行以下程序时,从键盘输入
book
book囗(囗表示空格),则下面程序段的运行结果是_______。
charal[80],a2[80],*sl=al,*s2=a2;
gets(s1);gets(s2);
if(!strcmp(sl,s2))
printf("x");
elseprintf("#");
printf("%d",strlen(strcat(sl,s2))
}
二、选择题
11、下面4个选项中,是合法转义字符的选项是()。
A.’"B.''C.'018'D.'o'
'''017''f''10l'
'n''"'xab''xlf'
12、下面4个选项中,是正确的八进制数或十六进制数的选项是()。
13、以下叙述不正确的是()
A.一个C源程序可由一个或多个函数组成
B.一个C源程序必须包含一个main函数
C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
14、一个C语言程序由()。
A.一个主程序和若干子程序组成B.函数组成
C.若干过程组成D.若干子程序组成
15、以下能对二维数组a进行正确初始化的语句是()。
[2][]={{1,0,1},{5,2,3}};
[][3]={{1,2,3},{4,5,6}};
[2][4]={1,2,3},{4,5},{6}};
[][3]={{1,0,1,0},{},{1,1}};
16、设有说明:doubley=0.5,z=1.5;intx=10;则能够正确使用C语言库函数
的赋值语句是()。
A.z=exp(y)+fabs(x);B.y=log10(y)+pow(y);
C.z=sqrt(y-z);D.x=(int)(atan2((double)x,y)+exp(y-
0.2));
17、若有说明:char*language[]={"FORTRAN","BASIC","PASCAL",JAVA",
"C");则language[2]的值是()。
A.一个字符B.一个地址C.一个字符串D.一个不定值
18、C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是()
A.地址传递B.单向值传递
C.由实参传给形参,再由形参传回给实参D.由用户指定传递方式
19、下列程序段不是死循环的是()。
A)inti=100;
while(1)
{i=i%100+1;if(i>100)break;
(;;);
=0;do{++k;}while(k>=0);
=36;while(s);--s;
20、若i为整型变量,则以下循环执行次数是()。
for(i=2;i==0;)printf("%d",i--);
A.无限次B.0次C.1次D.2次
21、以下程序的输出是()。
#include
intmain()
{inta=100,x=10,y=20,okl=5,ok2=0;
if(x if(y!=10) if(!ok1) a=1; else if(ok2)a=10; a=-1; printf("%dn",A.; return0; } A.1B.0C.-1D.值不确定 22、下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并 到字符串c中。请选择填空。 #include #include intmain() {chara[]="acegikm",b[]="bdfhjlnpq"; charc[80],*p; inti=0,j=0,k=0; while(a[i]!=o'&&b[j]!='o') {if(a[i] else{【】} k++; } c[k]='o'; if(a[i]=='0')p=b+j; elsep=a+i; strcat(c,p); puts(C.; return0; } A.c[k]=a[i];i++;B.c[k]=a[j];i++;C.c[k]=a[i];j++;D.c[k]=a[j];j++; 23、当运行以下程序时,从键盘输入: ab C def 则下面程序的运行结果是()。 #include #defineN6 intmain() {charc[N]; inti=0; for(;i for(i=0;i putchar(c[i]); return0; } bcc cdd e f 24、以下程序的运行结果是()。 #include intf(intx,inty) {return(y-x)*x;} intmain() {inta=3,b=4,c=5,d; d=f(f(a,C.,f(a,B.+f(c,B.); printf("%dn",D.; return(0); } A.-48B.58C.-58D.47 25、假设等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小 于100的最大n,请选择填空。() #include intmain() {inta=1,g=2,n=0,sum=0; do {【1】; ++n;a*=g; }while(sum<100); n-=1; printf("%dn",n); return0; } +++==a+aD.a+=sum 三、读程序填空 26、以下程序的运行结果是_______。 #include intmain() {intm=177; printf("%on",m); return0; } 27、以下printf语句中的负号的作用是_______,该程序的输出结果是_______。 #include intmain() {intx=12; doublea=3.1415926; printf("%6d##n",x); printf("%一6d##n",x); printf("%14.101f##n",a); printf("%-14.101f##n",a); return0; } 28、以下程序运行结果是_______。 #include intmain() {inta=1,b=2,c=3; ++a;c+=++b; {intb=4,c; c=b*3; a+=c; printf("first:%d,%d,%dn",a,b,c); a+=c; printf("second:%d,%d,%dn",a,b,c); printf("third:%d,%d,%dn",a,b,c); return(0); } 29、函数del的作用是删除已按升序排列的数组a中的指定元素x。已有调用语句 n=del(a,n,x);其中实参n为删除前数组元素的个数,赋值号左边的n为删除 后数组元素的个数。请填空。 intdel(inta[],intn,intx) {intp,i;p=0; while(x>=a[p]&&p for(i=p-1;i n=n一1; returnn; } 30、下面程序的功能是从键盘输入的10个整数中,找出第一个能被7整除的数。若 找到,打印此数;若未找到,打印notexist。请填空。 #include intmain() {inti,a; for(i=1;i<=10;i++) {scanf("%d",&a); if(a%7==0)_______; } if(_______)printf("%dn",a); elseprintf("notexistn"); return0; } 31、当运行以下程序时,从键盘输入: BOOK CUT GAME PAGE 则下面程序的运行结果是_______。 #include #include intmain() {inti; charstr[10],temp[10]="Control"; for(i=0;i<4;i++) {gets(str); if(strcmp(temp,str)<0)strcpy(temp,str); } puts(temp); return0; } 32、以下程序的运行结果是_______。 #include intmain() {intx=1,y,z; x*=3+2; printf("%dt",x); x*=y=z=5; printf("%dt',x); x=y==z; printf("%dn",x); return0; } 33、若从键盘输入:2,则下面程序的运行结果是_______。 #include intmain() {char*b[]={"English","Physics","Maths","Pascal","Chemistry","End", "Error"};intnum; printf("Enteraintegerthatshouldbebetween0to9n"); scanf("%d”,&.num); if(num>=0&&num<=9) if(num>=1&&num<=5) printf("Thechosenclassis:%s.n",b[num-1]); else printf("Noclassischosen.%s!!n",b[5]); else printf("Yourinputis:%s!!n",b[6]); return(0); } 四、编程题 34、设有一个数列,包含10个数,已按升序排好。现要求编写程序,把从指定位 置开始的n个数按逆序重新排列并输出新的完整数列。进行逆序处理时要求使用指 针方法。试编程。(例如:原数列为2、4、6、8、10、12、14、16、18、20, 若要求把从第4个数开始的5个数按逆序重新排列,则得到新数列为2、4、6、16、 14、12、10、8、18、20。) 35、以下程序的功能是应用弦截法求方程x3-5x2+16x-80=0的根,其中f函数 可根据指定的x的值求出方程的值;函数xpoint可根据x1和x2求出f(x1)和f(x2) 的连线与x轴的交点;函数root用来求区间(x1,x2)的实根。请编写root函数。 #include #include floatroot(floatxl,float×2) { }floatf(floatx)/*略*/ { } floatxpoint(floatx1,floatx2)/*路*/ { } intmain() {floatxl,x2,fl,f2,x; do {printf(“inputxl,x2:n"); scanf("%f%,8&x1,8.x2); printf("xl=%5.2f,x2=%5.2fn",xl,x2); f1=f(x1); f2=f(×2); }while(fl*f2>=0); x=root(x1,x2); printf("Arootofequationis%8.4f",x); return(0); } 参考答案 一、填空题 1、a=3囗b=7x=8.5囗y=71.82c1=ADc2=a (注:答案中的囗代表空格) 2、主函数(或main函数) 3、【1】顺序结构【2】选择结构【3】循环结构 4、【1】整型【2】字符型【3】枚举型 5、1 6、-1,177777 【1】7、a[0]=1a[1]=2 【2】单向值传递,不能返回交换后的值。 8、aabcd 9、doublea[M][M]={0}; 10、#9 二、选择题 11、A 12、C 13、D 14、B 15、B 16、D 17、B 18、B 19、C 20、B 21、C 22、D 23、D 24、A 25、B 三、读程序填空 26、261 27、【1】输出数据左对齐 【2】囗囗囗012 ##12口囗囗囗 ##囗囗3.141592600 ##3.141592600囗囗 ##(注:答案中的囗代表空格) 28、first:14,4,12 second:26,4,12 third:26,3,6 29、【1】p=p+1【2】a[i]=a[i+1] 30、【1】break【2】i<=10 31、PAGE 32、5.251 33、Thechosenclassis:Physics. 四、编程题 34、#include intmain() {intb[10],position,num,k,*q1,*q2,temp; printf("Input10sortednumbersn"); for(k=0;k<10;k++) scanf("%d",&.b[k]); printf("nlnputtheposition:n"); scanf("%d",&position); printf("Inputthenumberofdatathatbesortedagain:n"); scanf("%d",&num); printf("Theoldarraybis:n"); for(k=0;k<10;k++) printf("%4d",b[k]); printf("n"); q1=&b[position-1]; q2=&b[position-2+num]; for(;q1<&b[position-1]+num/2;q1++,q2--) {temp=*q1;*q1=*q2;*q2=temp;} printf("Thenewarraybis:n"); for(k=0;k<10;k++) printf("%4d",b[k]); return(0); } 35、floatroot(floatx1,floatx2) {inti;floatx,y,y1; y1=f(x1); do {x=xpoint(x1,x2); y=f(x); if(y*y1>0){y1=y;x1=x;} Elsex2=x; }while(fabs(y)>=0.0001); return(x); }