2022年南京邮电大学公共课《C语言》科目期末试卷A(有答案)一、填空题1、请读程序段:int a=-1;a=a|0377;printf("%d,%o\n",a,a);以上程序段的输出结果是_______。
2、C语言的源程序必须通过【】和【】后,才能被计算机执行。
3、结构化程序由________、________ 、________ 3种基本结构组成。
4、C语言中的标识符可分为关键字、_______和_______3类。
5、若采用十进制数的表示形式,则077为_______,0111为_______,0xab为_______。
6、设main函数的说明为:int main(int argc,char*argv[]),且有命令行为:FILE1123<回车>,则argc的值是_______,argv[1]的值是_______。
7、下面add函数的功能是求两个参数的和,并将和值返回调用函数。
函数中错误的部分是_______,改正后为_______。
void add(float a,float b){float c;c=a+b;return c;}8、假设变量a、b和c均为整型,以下语句借助中间变量t把a、b和c中的值进行交换,即把b中的值给a,把c中的值给b,把a中的值给c。
例如:交换前,a=10、b=20、c=30;交换后,a=20、b=30、c=10。
请填空。
_______;a=b;b=c;_______;9、设有如下结构体说明:struct ST{int a;float b;struct ST*c;doublex[3];}st1;请填空,完成以下对数组s的定义,使其每个元素均为上述结构体类型。
_______10、下面程序段的运行结果是_______。
char ch[]="600";int a,s=0;for(a=0;ch[a]>= '0'&&ch[a]<='9';a++)s=10*s+ch[a]-'o';printf("%d",s);二、选择题11、在C语言中,char型数据在内存中的存储形式是()。
A.补码B.反码C.原码D.ASCII码12、若x、i、j和k都是int型变量,则执行表达式x=(i=4,j=16,k=32)后x的值为( )。
A.4B.16C.32D.5213、设有说明:double y=0.5,z=1.5;int x=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));14、以下程序的运行结果是()。
#include <stdio.h>int main(){int m=5,n=10;printf("%d,%d\n",m++,--n):return 0;}A.5,9B.6,9C.5,10D.6,1015、在C语言中,引用数组元素时,其数组下标的数据类型不允许是()。
A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式16、一个C语言程序由( )。
A.一个主程序和若干子程序组成B.函数组成C.若干过程组成D.若干子程序组成17、设有以下程序段:int x=0,s=0;while(!x!=0)s+=++x;printf("%d”,s);则()A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次18、C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是()A.地址传递B.单向值传递C.由实参传给形参,再由形参传回给实参D.由用户指定传递方式19、若有函数max(a,B.,并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是()A.(*p)max(a,B.; B.*pmax(a,B.;C.(*p)(a,B.;D.*p(a,B.;20、若需要建立如图9-3所示的存储结构,且已有说明float*p,m=3.14;则正确的赋值语句是()A)p=m; B)p=&m; C)*p=m; D)*p=&m;21、以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'A',B’,C.;则符合程序段运行结果的选项是()。
void move(char getone,char putone){printf("%c——>%c\n",getone,putone);void hanoi(int n,char one,char two,char three){if(n==1)move(one,three);else{hanoi(n-1,one,three,two);move(one,three);hanoi(n-1,two,one,three);}}A)A-->C B)A-->C C)A-->C D)A-->CA-->B A-->B A-->B A-->BC-->B C-->A C-->B C-->BB-->A A-->B A-->C A-->CC-->B B-->C B-->A A—->BA-->C A-->C B-->C B-->CA-->B A-->B A-->C A-->C22、下面程序的运行结果是()。
#include <stdio.h>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*AD.SW23、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。
请选择填空。
( )#include<stdio.h>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、当a=1、b=3、c=5、d=4时,执行以下程序段后x的值是()。
if(a<B.if(c<D.x=l;elseif(a<C.if(b<D.x=2;else x=3;else x=6;else x=7;A.1B.2C.3D.625、下面程序的功能是从键盘输入若干学号,然后输出学号中百位数字是3的学号(输入0时结束循环),请选择填空( ) 。
#include<stdio.h>int main(){ long int num;scanf("%1d",&.num);do{if(【1】)printf("%1d",num);scanf("% ld",8. num);} while(! num==0);return 0;}A) num%100/10==3 B) num/100%10==3C) num%10/10==3 D) num/10%10==3三、读程序填空26、以下程序的输出结果是_______。
#include <stdio.h>int main(){int x=10;float pi=3.1416;printf("(1)%d\n",x);printf("(2)%6d\n",x);printf("(3)%f\n",56.1);printf("(4)%14fNn", pi);printf("(5)%e\n",568.1);printf("(6)%14e\n", pi);printf("(7)%g\n", pi);printf("(8)%12g\n", pi):return 0;}27、以下程序的输出结果是_______。
#include<stdio.h>int main(){float a=123.456;double b=8765.4567;printf("(1)%f\n",a);printf("(2)%14.3f\n",a);printf("(3)%6.4f\n",a);printf("(4)%lf\n",b);printf("(5)%14.3lf\n",b);printf("(6)%8.4lf\n",b);printf("(7)%.4f\n",b);return 0;}28、以下程序的功能是:计算y年m1月d1日与同年的m2月d2日之间的天数(m2>=m1),并打印计算结果。
若ml=m2且d1=d2则算1天。
在闰年时,2月有29天。
闰年的年号由以下方式确定:该年号能被4整除但不能被100整除,或者该年号能被400整除则是闰年。
例如:输入1997,2,27,3,10<回车>时,输出为12。
表明从1997年2月27日到3月10日共有12天。
请填空。
#include<stdio.h>int main(){int y,ml,d1,m2,d2;int i,d;scanf("%d,%d,%d,%d,%d",&y,&m1,&d1,&m2,&d2);y=(y%4==0_______y%100!=0_______y%400==0)?1:0;d=0-d1;for(i=ml;i<m2;i++)switch(i){case 1:case 3:case 5:case 7:case 8:case 10:case 12:d+=31;break;case 2:d=d+28+y; break;case 4:case 6:case 9:case 11:_______;printf("%d",d+d2+1);return 0;}29、根据以下给出的嵌套if语句,填写对应的switch语句,使它完成相同的功能。