2022年东南大学公共课《C语言》科目期末试卷A(有答案)
一、填空题
1、请读程序段: int a=-1; a=a|0377;
printf(\"%d,%o\\n\",a,a);以上程序段的输出结果是_______。 2、结构化程序由________、________ 、________ 3种基本结构组成。 3、一个C语言源程序由若干函数组成,其中至少应含有一个________ 4、C语言中的标识符可分为关键字、_______和_______3类。
5、若有定义语句:int m=5,y=2;则执行表达式y+=y-=m*=y后的y值是_______
6、若有定义:int a[]={2,4,6,8,10,12,14,16,18,20,22,24},*q[3],k;则下面程序段的输出是_______。
for(k=0;k<3;k++)q[k]=8.a[k*4];printf(\"%d\\n\",q[2][3]); 7、下面程序段中循环体的执行次数是_______。 a=10;b=0;
do{b+=2;a-=2+b;}while(a>=0);
8、设有以下定义和语句,请在printf语句的_______中填上能够正确输出的变量及相应的格式说明。
union
{int n;doublex;}num;
num.n=10; num.x=10.5;
printf(\"_______\",_______);
9、若有以下定义和语句,为使变量c1得到字符’A',变量c2得到字符’B’,正确的输入形式是_______。
char cl,c2;
scanf(\"%4c%4c\",&cl,8&c2); 10、字符串\"ab\\n\\\\012\\\\\\\"”的长度是_______。
二、选择题
11、在C语言中,char型数据在内存中的存储形式是( )。 A.补码B.反码C.原码D.ASCII码
12、以下表达式值为3的是( )
A.16-13%10 B.2+3/2 C.14/3-2 D.(2+6)/(12-9)
13、根据以下定义语句和数据的输入方式,scanf语句的正确形式应为。 已有定义:float fl,f2; 数据的输入方式:4.52<回车>
3.5<回车>
A.scanf(\"%f,%f\",&f1,&f2); B.scanf(\"%f%f\",&fl,&f2);
C.scanf(\"%3.2f%2.1f\",&f1,&f2);D.scanf(\"%3.2f%2.1f\",&fl,&f2); 14、已知ch是字符型变量,下面不正确的赋值语句是( )
A.ch='a+b'; B.ch='\\o'; C.ch='7'+'9'; D.ch=5+9; 15、以下对二维数组a的正确说明是( )。
A.inta[3][];B.float a(3,4);C.double a[ ][4];D.float a(3)(4); 16、一个C语言程序由( )。
A.一个主程序和若干子程序组成 B.函数组成 C.若干过程组成 D.若干子程序组成 17、下列程序段不是死循环的是( )。 A) inti=100;
while(1)
{i=i%100+1;if(i>100)break; B.for(;;);
C.int k=0;do{++k;}while(k>=0); D.int s=36;while(s);--s;
18、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( ) A.extern B.register C.auto D.static
19、若有说明:char*language[]={\"FORTRAN\",\"BASIC\",\"PASCAL\", \"JAVA\",\"C\");则表达式*language[1]>*language[3]比较的是( )。 A.字符F和字符P B.字符串BASIC和字符串JAVA C.字符B和字符J D.字符串FORTRAN和字符串PASCAL
20、若有以下定义和语句,则对a数组元素地址的正确引用为( )。 int a[2][3],(*p)[3];
p=a;
A.*(p+2) B.p[2] C.p[1]+1 D.(p+1)+2
21、以下程序的运行结果是( )。 #include void fun(int x){if(x/2>0)fun(x/2-2); printf(\"%d”,x); }
int main() { fun(20); printf(\"\\n\"); return(0); }
A.2082-1 B.2820 C.8 D.-12820 22、下面程序的运行结果是( )。
#include int main(){char ch[7]={\"12ab56\; int i,s=0; for(i=0;ch[i]>= '0'&&ch[i]<='9';i+=2) s=10*s+ch[i]-'o'; printf(\"%d\\n\",s);
return0; }
A.1 B.1256 C.12ab56 D.15 23、当运行以下程序时,从键盘输入:
aa bb<回车> ccdd<回车>
则下面程序的运行结果是( )。 #include int main(){char al[5],a2[5],a3[5],a4[5]; scanf(\"%s%s\",al,a2); gets(a3);gets(a4); puts(a1);puts(a2); puts(a3);puts(a4); return 0; }
A)aa B)aa C)aa D)aa bb bb bb bb cc
cc cc dd dd
cc dd dd ee 24、以下程序的输出是( )。
#include int main() {int x=1; if(x=2)printf(\"OK\");
else if(x<2)printf(\"%d\\n\",x);
else printf(\"Quit\"); return 0; }
A.OK B.Quit C.1 D.无输出结果 25、下面程序段的运行结果是( )。
for(x=3;x<6;x++)printf((x%2)?(\"**%d”):(“##%d\\n”),x);
A)**3 B)##3 C)##3 D)**3##4 ##4 **4 **4##5 **5 **5 ##5
三、读程序填空
26、已知字母A的ASCII码值为65。以下程序的输出结果是_______。
#include int main() {char a,b;a='A'+'4'-'3'; b='A'+'6'-2';
printf(\"a=%d,b=%c\\n\",a,b); return0; }
27、已有定义int d=-2;执行以下语句后的输出结果是_______。
printf(\"*d(1)=%d*d(2)=%3d*d(3)=%-3d*\\n\",d,d,d); printf(\"*d(4)=%o*d(5)=%7o*d(6)=% 7o*\\n\",d,d,d);
28、若a、b、c均已正确定义且a=0、b=2、c=3,则以下程序段的输出是_______。
switch(a)
{case 0:switch(b==2)
{case 1:printf(\"&”);break; case 2:printf(\"%”);break; }
case 1:switch(c) {case 1:printf(\"S\");
case 2:printf(”*”);break; default:printf(\"#”); } }
29、以下程序的功能是:输入一个小写字母,将字母循环后移5个位置后输出。例如’a’变成’f’,w’变成b’。请填空。
#include int main() {char c; c=getchar();if(c>='a'8&&.c<='u')【l】: else if(c>='v√8&8.c<='z)_______; putchar(c); return 0; }
30、下面程序的运行结果是_______。
#include int main() {int y=2,a=1; while(y--!=-1){do{a*=y;a++;}while(y-一);} printf(\"%d,%d\",a,y); return 0; }
31、下面程序的功能是_______,运行结果是_______。
#include long fib(int g) {switch(g) {case 0:return 0; case 1:case 2:return1; }return(fib(g-1)+fib(g-2)); int main() {long k; k=fib(7);
printf(\"k=%d\\n\ return(0); }
32、下面程序的运行结果是_______。
#include int main(){int i=0;char a[]=\"abm\",b[]=\"aqid\",c[10]; while(a[i]!='\\o'&&b[i]!='\\o') {if(a[i]>=b[i])c[i]=a[i]-32; else c[i]=b[i]-32; ++i;
} c[i]= '\\o'; puts(c); return 0; }
33、以下程序的运行结果是_______。
#include void swap(int*pl,int*p2) {int p;
p=*p1;*pl=*p2;*p2=p; }
int main() {int a=5,b=7, *ptrl,*ptr2; ptr1=&a;ptr2=&b; swap(ptr1,ptr2);
printf(\"*ptrl=%d,*ptr2=%d\\n\",*ptrl,*ptr2); printf(\"a=%d,b=%d\\n\",a,b); return(0);
}
四、编程题
34、编写程序实现功能:输入一个复数,输出其共扼复数。例如,输入2+3i<回车>时,输出2-3i;输入2-3i<回车>时,输出2+3i。
35、以下函数fun的功能是从3个红球(x)、5个白球(y)、6个黑球(z)中任意取出8个,且其中必须要有红球和白球。请编写函数,输出所有方案。 #includeint fun(int x,int y,int z) {int i,j,k,sum=0;
(请在此处编写函数) }
int main()
{int sum,x=3,y=5,z=6; sum=fun(x,y,z);
printf(\"sum=%4d\\n\",sum); return(0); }
参
一、填空题
1、-1,177777
2、【1】顺序结构【2】选择结构【3】循环结构 3、主函数(或main函数)
4、【1】用户标识符【2】预定义标识符 5、-16 6、24 7、3
8、【1】%If【2】num.x 9、A囗囗囗B囗囗囗<回车>
10、9
二、选择题
11、D 12、B 13、B 14、A 15、C
16、B
17、C
18、D 19、C 20、C 21、D 22、A 23、A 24、A 25、D
三、读程序填空
26、a=66,b=E
27、*d(1)=-2*d(2)=囗-2*d(3)=-2囗**d(4)=177776*d(5)=囗177776*d(6)=177776囗* (注:答案中的囗代表空格)
28、【1】×<110&&x>=100【2】(x<60)||(x>109)【3】m=0 29、【1】c=c+5【2】c=c-21 30、m=1
31、【1】计算斐波拉契级数第7项的值。 【2】k=13 32、#&*8&%
33、*ptrl=7,*ptr2=5,a=7,b=5
四、编程题
34、#include int main() { int a,b; char symbol;printf(\"Please enter:\");
scanf(\"%d%c% di\\n\ printf(\"Original value:%d%c% di\\n\ if(symbol=='-') symbol='+'; else symbol='-';
printf(\"New value:%d%c% di\\n\ return 0; }
35、for(i=1;i<=x;i++)
{for(j=1;j<=y;j++) {k=8-i-j;if(k>=0&&k<=z) {sum=sum+1;
printf(\"%4d%4d%4d\\n\",i,j,k); } } }
return sum;