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 页)
版权声明:本文标题:高级语言程序设计(C)后附答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1735695747a1682840.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论