admin 管理员组

文章数量: 1086019


2024年12月31日发(作者:illustrate名词形式)

学习中心/函授站

_

姓 名

学 号

西安电子科技大学网络与继续教育学院

2019学年上学期

《高级语言程序设计(C)》期末考试试题

(综合大作业)

题号

题分

得分

考试说明:

1、大作业试题于2019年4月25日公布,2019年4月26日至2019年5月12日在

线上传大作业答卷(最多上传10张图片);

2、考试必须独立完成,如发现抄袭、雷同均按零分计;

3、答案须用《西安电子科技大学网络与继续教育学院综合大作业答题纸》手写完

成,要求字迹工整、卷面干净。

一、 选择题(本题共20道小题,共40分。)

1. 设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是

A)把x和y按从大到小排列 B)把x和y按从小到大排列

C)无确定结果 D)交换x和y中的值

2. 下面程序的输出是

void prtv(int *x)

{ printf("%dn", ++(*x));}

main()

{ int a=25;

prtv(&a);}

A) 23 B) 24

C) 25 D) 26

3. int x=10, y=20, z=30;

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

以上语句执行后x, y, z的值是

A) x=10,y=20,z=30 B) x=20,y=30,z=30

C) x=20,y=30,z=10 D) x=20,y=30,z=20

4. 设有以下宏定义:

#define N 3

#define Y(n) ((N+1)*n)

则执行语句:z=2 *(N+Y(5+1))后,z的值为

A)出错 B)42 C)48 D)54

第 1 页 (共 8 页)

40

10

10

20

20

总分

5. 逻辑运算符两侧运算对象的数据类型是()。

A) 只能是0或1

B) 只能是0或非0正数

C) 只能是整型或字符型数据

D) 可以是任何类型的数据

6. 当执行以下程序段时

x=-1;

do { x=x*x;}

while(!x);

A)循环体将执行一次 B)循环体将执行两次

C)循环体将执行无限次 D)系统将提示有语法错误

7. int x=3;

do

{ printf("%3d",x-=2);}

while(!(--x));

以上程序段的输出结果是

A) 1 B) 3 0 C) 1-2 D) 死循环

8. main()

{int k=11; printf("k=%d,k=%o,k=%xn",k,k,k); }

以上程序段的输出结果是

A)k=11,k=12,k=11

C)k=11,k=013,k=0xb

B)k=11,k=13,k=13

D)k=11,k=13,k=b

9.以下程序的输出结果是( )。

main()

{ int num=0;

while(num<=2)

{ num++; printf(“%dn”,num);}

}

A) 1 B) 1 C) 1 D) 1

2 2 2

3 3

4

10. 表示关系x≤y≤z的c语言表达式为

A) (X<=Y)&&(Y<=Z)

B) (X<=Y)AND(Y<=Z)

C) (X<=Y<=Z)

D) (X<=Y)&(Y<=Z)

11. 执行x=((5>1+2)&&2||((2*4<4)-!0))后,x的值为

A) -1 B) 0 C) 1 D) 5

12. 有以下程序

main()

{

char a[]="programming", b[]="language";

char *p1,*p2;

int i;

p1=a; p2=b;

for(i=0;i<7;i++)

if(*(p1+i)==*(p2+i))

printf("%c",*(p1+i));

}

输出结果是

A)gm B)rg C)or D)ga

13. 以下程序的输出结果是

# include

# include

第 2 页 (共 8 页)

main()

{ char str[12]={'s','t','r','i','n','g'};

printf("%dn",strlen(str));

}

A) 6 B) 7 C) 11 D) 12

14. 运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果为

main ( )

{

int m,n;

printf("Enter m,n:");

scanf("%d%d,&m,&n");

while(m!=n)

{

while(m>n) m-=n;

while(n>m) n-=m;

}

printf("m=%dn",m);

}

A)m=3 B)m=2 C)m=1 D)m=0

15. char ch=’A’;

ch=(ch>=‘A’&&ch<=‘Z’)?(ch+’a’-‘A’):ch;

表达式运算后,ch的值是

A) a B) ‘a’ C) A D) “a”

16. 设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正

确执行的语句是

A) k=*p1+*p2; B) p2=k;

C) p1=p2; D) k=*p1*(*p2);

17. 若有以下定义和语句:

int u=010,v=0x10,w=10;

printf(“%d,%d,%dn”,u,v,w);

则输出结果是

A) 8,16,10 B) 10,10,10 C) 8,8,10 D) 8,10,10

18. 能正确表示a≥10或a≤0的关系表达式是

A)a>=10 or a<=0 B)a>=10│a<=0

C)a>=10││a<=0 D)a>=10 ││a<=0

19.

main( )

{int x=1,a=0,b=0;

switch(x)

{

case 0: b++;

case 1: a++;

case 2: a++;b++;

}

printf(“a=%d,b=%dn”,a,b);

}

程序的输出结果是

A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2

20. 以下说法中正确的是

A) #define和printf都是C语句

B) #define是C语句,而printf不是

第 3 页 (共 8 页)

C) printf是C语句,但#define不是

D) #define和printf都不是C语句

二、填空题(每空1分,共10分。)

1. 为表示关系:x≤y≤z ,应使用的C语言表达式是_____________。

2. C语言本身没有输入输出语句。其输入输出是由____________来完成。

3. 有函数调用fun1(x+y,(y,z),10,fun((x,y―1)));函数fun1有_______

个参数。

4. C程序注释是由_________ 和________所界定的文字信息组成的。

5. 表达式x=x+1表示成增量表达式为___________。

6. while语句和do-while语句的区别是_______________________。

7. 结构化程序设计中的三种基本结构是_________、__________、___________。

三、判断题(本题共10道小题,共10分。)

1. 在不得已的情况下(例如提高程序运行效率),才使用goto语句( )

2. C程序的注释只能是一行()

3. 在有参函数中,形参在整个程序一开始执行时便分配内存单元( )

4. C语言不允许混合类型数据间进行运算( )

5. 实参和与其对应的形参共占用一个存储单元( )

6. 在C程序中对用到的所有数据都必须指定其数据类型( )

7. 函数的定义和函数的调用均不可以嵌套( )

8. 如果在所有函数定义之前,在函数外部已做了声明,则各个主调函数不必再做函数原

型声明( )

9. 在不同函数中可以使用相同名字的变量( )

10. if语句中的表达式不限于逻辑表达式,可以是任意的数值类型( )

四、程序分析题(用列表法列出关键变量在运行过程中的值)(本题3道小题,共20分)

1. (8分)分析程序,给出select函数的功能,解释其形参的含义,并给出main函数的

输出结果。

#define N 3

#define M 3

select(int a[N][M],int *n)

{

int i,j,row=1,colum=1;

for(i=0;i

for(j=0;j

if(a[i][j]>a[row][colum]){row=i;colum=j;}

*n=

row

;

return (

a[row][colum])

;

}

main()

{ int a[N][M]={9,11,23,6,1,15,9,17,20},max,n;

max=select(a,&n);

printf("max=%d,line=%dn",max,n);

}

形参 含义 功能

a[N][M]

select

n

main

输出:

2. (6分)列表分析下面程序的运行步骤和中间结果,给出最后的输出结果

#include

main()

{ int i=5;

char c[6]="abcd";

do

{

c[i]=c[i―1];

} while(――i>0);

第 4 页 (共 8 页)

puts(c);

}

c[i]=c[i-1]

赋值前

输出

i

C[i]

C[i-1]

5

0

0

4

0

d

3

2

1

0

a

/

aabcd

3. (6分) 列表分析下面程序的功能

main( )

{ int i,j;

for(i=1;i<=4;i++)

{ for(j=1;j<=4-i;j++) printf(" ");

for(j=1;j<=

2*i-1

;j++) printf("*");

printf("n");

}

}

i

1 2 3

① for j

printf

② for j

printf

4

□□□

2

*

3

□□

2

4

1

/

注:□表示空格

五、编程题(本题共2道小题,每题10,共20分。)

编程题要求:

(1)先给出伪代码,然后再写出源码,重要变量和语句要加注释;

(2)若有子函数,则要给出函数框架设计(函数名、形参、返回类型)。

1. 编写一程序,求100之内的素数。

2. 我们需要一个小程序,输入两个整数,输出这两个数的平方和与平方差,要求:

(1)主函数负责接收这两个整数

(2)将计算代码独立做成子函数math

(3)在主函数中调用math函数并输出结果到屏幕上

第 5 页 (共 8 页)

答案

一、选择题

1、D

2、D

3、B

4、C

5、D

6、A

7、C

8、D

9、B

10、A

11、A

12、D

13、A

14、C

15、A

16、B

17、A

18、C

19、A

20、C

二、填空题

1、(X<=Y)&&(Y<=Z)

2、函数

3、4

4、/* *

5、x++或++x

6、do-while至少无条件执行一次循环体内的语句

7、顺序结构、循环结构、选择结构

三、判断题

1、×

2、×

3、×

4、×

5、×

6、×

7、×

8、√

9、√

10、√

四、程序分析题

1、select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并

第 6 页 (共 8 页)

通过形参传回此最大。

形参a[N][M]的含义:a是一个N行M列的数组,实际上,函数中的a已经退化为一个指针。

n是一个指针。用于把n的计算结果回传给主函数;

select函数功能是找出数组a中最大的元素,并用指针n回传最大值所在的行号

输出结果为:

max=23,n=0

2、

i=5,c[5]=c[4]=’0’;

i=4,c[4]=c[3]=’d’;

i=3,c[3]=c[2]=’c’;

i=2,c[2]=c[1]=’b’;

i=1,c[1]=c[0]=’a’;

i=0,不满足条件,

循环结束,输出”aabcd”

3、 不会

五、编程题

1、

#include

int main(void)

{

int i,j,k;

printf("%dn",2);

for(i=1;i<=100;i+=2)

{

for(j=2;j

if(i%j==0) break;

if(i==j)

printf("%dn",i);

}

return 0;

}

2、

Main()

{double sum,diff;

int x,y;

scanf(“%d%d”,&x,&y);

sum=quadratic_sum(x,y);

diff=quadratic_diff(x,y);

printf(“%lf %lfn”,sum,diff);

第 7 页 (共 8 页)

}

(2)将计算代码独立做成子函数quadratic_ sum和quadratic_ diff

double quadratic_sum(int x,int y)

{dobule sum;

Sum=x*x+y*y;

Return sum;

}

double quadratic_diff(int x,int y)

{dobule diff;

Sum=x*x-y*y;

Return diff;

}

(3)在主函数中调用子函数并输出结果到屏幕上

功能

求两个数的平方和quadratic_sum

函数名

输入信息

(int x,int y)

形参表

输出信息

double sum

double diff

函数类型

求两个数的平方差quadratic_diff

(int x,int y)

第 8 页 (共 8 页)


本文标签: 函数 程序 输出 结果 表达式