您的当前位置:首页正文

2022年合肥学院公共课《C语言》科目期末试卷A(有答案)

2021-10-01 来源:东饰资讯网
2022年合肥学院公共课《C语言》科目期末试卷A(有答案)

一、填空题

1、请读程序段: int a=1,b=2;

if(a&b)printf(\"***\\n\"); else printf(\"$$ $\\n\"); 以上程序段的输出结果是_______。

2、C语言源程序文件的后缀是 ;经过编译后,生成文件的后缀是 ;经过连接后,生成文件的后缀是

3、一个C语言源程序由若干函数组成,其中至少应含有一个________

4、假设变量a、b均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为_______。

5、若a、b和c均是int型变量,则执行表达式a=(b=4)+(c=2)后a的值为_______,b的值为_______,c的值为_______。

6、以下程序段通过移动指针变量m,给如图9-7所示连续动态存储单元赋值。请填空。(假设程序段中的所有变量均已正确说明。)

for(k=0;k<10;k++,m++)scanf(\"%d\",_______);

7、鸡兔共有30只,脚共有90只,下面程序段是计算鸡兔各有多少只。请填空。

for(x=0;x<=30;x++) {y=30一x;

if(_______)printf(\"%d,%d\\n\",x,y); }

8、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空。

a+=_______;b=a-_______;a-=_______;

9、为建立如图10-5所示的存储结构(即每个结点两个域,data是数据域,next是指向结点的指针域),请将定义补充完整。

struct s{char data; _______ }node;

10、下面程序段的运行结果是_______。 int i=5;char c[6]=\"abcd\"; do{c[i]=c[i-1];}while(--i>0); puts(c);

二、选择题

11、下列4组选项中,不是C语言关键字的选项是。( ) A.define B.getc C.include D.while

IF char scanf go

Type printf case pow

12、以下表达式值为3的是( )

A.16-13%10 B.2+3/2 C.14/3-2 D.(2+6)/(12-9) 13、设有如下程序:

#include int main()

{char ch1='A',ch2='a';

printf(\"%c\\n\",(chl,ch2)); return 0; }

则以下叙述中正确的是( )。 A.程序的输出结果为大写字母A B.程序的输出结果为小写字母a C.运行时产生错误信息

D.格式说明符的个数少于输出项的个数,编译出错

14、根据以下定义语句和数据的输入方式,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);

15、若有说明:inta[3][4];,则对a数组元素的正确引用是( )。 A.a[3][4] B.a[1,3] C.a[i+1][0] D.a(2)(1) 16、以下叙述不正确的是( )

A.一个C源程序可由一个或多个函数组成 B.一个C源程序必须包含一个main函数 C.C程序的基本组成单位是函数

D.在C程序中,注释说明只能位于一条语句的后面 17、以下for循环的执行次数是( )。

for(x=0,y=0;(y=123)&&(x<4);x++); A.是无限循环 B.循环次数不定 C.执行4次 D.执行3次

18、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( ) A.extern B.register C.auto D.static 19、若有说明语句,则以下不正确的叙述是( )。

char a[]=\"It is mine\";char*p=\"It is mine\"; A.a+1表示的是字符t所在存储单元的地址 B.p指向另外的字符串时,字符串的长度不受限制 C.p变量中存放的地址值可以改变 D.a中只能存放10个字符

20、若有说明:char*language[]={\"FORTRAN\",\"BASIC\",\"PASCAL\", \"JAVA\",\"C\");则表达式*language[1]>*language[3]比较的是( )。 A.字符F和字符P B.字符串BASIC和字符串JAVA

C.字符B和字符J D.字符串FORTRAN和字符串PASCAL 21、以下程序的运行结果是( )。

#include int fun(int a,int B. {if(a>B.return(a+B.; else return(a-B.; int main()

{int x=3,y=8,z=6,r; r=fun(fun(x,y),2*z); printf(\"%d\\n\",r); return(0); }

A.-16 B.-17 C.17 D.16 22、下面程序段的运行结果是( )。 charc[5]={'a',b',\\o','c','\\o'); printf(\"%s\",C.;

A.'a''b' B.ab C.ab口c D.ab口(其中口表示1个空格)

23、下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并到字符串c中。请选择填空。

#include #include int main()

{char a[]=\"acegikm\",b[]=\"bdfhjlnpq\"; charc[80],*p; int i=0,j=0,k=0;

while(a[i]!=\\o'&&b[j]!='\\o') {if(a[i]k++;

}

c[k]='\\o';

if(a[i]== '\\0')p=b+j; else p=a+i; strcat(c,p); puts(C.; return 0; }

A.c[k]=a[i];i++;B.c[k]=a[j];i++;C.c[k]=a[i];j++;D.c[k]=a[j];j++; 24、以下程序( )。

#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.输出$$$

25、下面程序的功能是将从键盘输入的偶数写成两个素数之和。请选择填空(#include #include int main() {int a,b,c,d; scanf(\"%d\",&.A.; for(b=3;b<=a/2;b+=2) {for(c=2;c<=sqrt(B.;c++)

if(b%c==0)break; if(c>sqrt(B.)d=【】; else break;

for(c=2;c<=sqrt(D.;c++)

if(d%c==0)break;

if(c>sqrt(D.)printf(\"%d=%d+%d\\n\",a,b,D.; }

return 0;

}

A.a+b B.a-b C.a*b D.a/b

三、读程序填空

26、以下程序的输出结果是_______。

#include int main() {int a=325;

double x=3.1415926;

printf(\"a=%+06dx=%+e\\n\",a,x); return 0; }

27、有以下程序:

#include int main() {int k=0; char c1='a', c2='b';

scanf(\"%d%c%c”,&k,&c1,&c2); printf(\"%d,%c,%c\\n\",k,c1,c2); return 0; }

若运行时从键盘输入:55AB<回车>,则输出结果是_______。 28、以下程序的运行结果是_______。

#include int main() {int a=-10,b=-3; printf(\"%d,\",一a%b); printf(\"%d,\",(a-b,a+b)); printf(\"%d\\n\",a-b?a-b:a+b); return 0;

}

29、以下程序的运行结果是_______。

#include int main() {intx,y=-2,z=0; if((z=y)<0)x=4; else if(y==0)x=5; else x=6;

printf(\"\%d\%d\\n\",x,z); if(z=(y==0))x=5; x=4;

printf(\"\%d\%d\\n\",x,z);

if(x=z=y)x=4;

printf(\"\%d\%d\\n\",x,z); return 0; }

30、下面程序的功能是用公式:

𝜋

=+22+32+⋯𝑛2 6121111

求𝜋的近似值,直到最后一项的值小于10-6为止。请填空。

# include # include int main() { long i=1; ____pi=0;

while(i*i<=10e+6) { pi=______;i++;} pi=sqrt(6.0* pi);

printf(\"pi=%10.61f\\n\ return 0; }

31、以下程序的运行结果是输出如下图形。请填空。

# include void a(int i) { intj,k;

for(j=0;j<=7-i;j++) printf(\"\");

for(k=0;k<_______;k++) printf(\"x\"); printf(\"\\n\"); }

int main() {int i;

for(i=0;i<3;i++)_______; for(i=3;i>=0;i--)_______; return(0); }

32、下面程序段的功能是将字符串a中下标值为偶数的元素由小到大排序,其他元素不变。请填空。

char a[]=\"labchmfye\",t;int i,j; for(i=0;i<7;i+=2) for(j=i+2;j<9;_______) if(_______)

{t=a[i];a[i]=a[j];a[j]=t;j++;} puts(a);

33、下面程序的功能是比较两个字符串(即字符数组)是否相等,若相等则返回1,否则返回0。请填空。 #include int f(char s[],chart[]) {int i=0;

while(_______&&_______)

i++;

return(_______); }

int main() {char a[6],b[7]; int i;

scanf(\"%s%s\",a,b); i=f(a,b); printf(\"%d\",i);

return(0); }

四、编程题

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

int isprime(int a) { }

35、编写程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串,请用指针完成。

参考答案

一、填空题

1、$$$

2、【1】.c【2】.obj【3】.exe 3、主函数(或main函数) 4、9

5、【1】6【2】4【3】2 6、m

7、2*x+4*y==90 8、【1】b【2】b【3】b 9、structs*next; 10、aabcd

二、选择题

11、A 12、B 13、B 14、B 15、C

16、D

17、C

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

三、读程序填空

26、a=+00325囗囗囗x=+3.14159e+00 (注:答案中的囗代表空格) 27、55,,A 28、1,-13,-7

29、4 -2 4 0 4 -2

30、【1】double【2】pi+1.0/(i*i) 31、【1】2*i+1【2】a(i)【3】a(i) 32、【1】j++【2】a[i]>a[j]

33、【1】s[i]==t 【2】s[i]!='\\o'【3】(s[i]== '\\0'&&t[i]== '\\o')?1:0

四、编程题

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

for(i=2;i35、#include int main()

{static char x[]=\"computer\"; char*p;

for(p=x;p

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