《C语言程序设计期末试卷.doc》由会员分享,可在线阅读,更多相关《C语言程序设计期末试卷.doc(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、(一) 单项选择题【20题,每题1分,共20分】1设 int x=1, y=1; 表达式(!x|y-)的值是 A) 0 B) 1 C) 2 D) -1 2在C语言中,函数的隐含存储类别是 A) 无存储类别 B) static C) extern D) auto3为表示关系xyz,正确的C语言表达式是_。 A) (x=y)&(y=z) B) (x=y)AND(y=z) C) (x=y=z) D) (x=y)&(y=z)4. 设有 int x=11; 则表达式 (x+ * 1/3) 的值是 A) 3 B) 4 C) 11 D) 12 5. 若变量已正确说明为int类型,要给a,b,c输入数据,以下
2、正确的输入语句是A) read(a,b,c); B) scanf(“%d%d%d”,a,b,c);C) scanf(“%D%D%D”,&a,&b,&c); D) scanf(“%d%d%d”,&a,&b,&c);6. 有如下程序 main() int y=3,x=3,z=1; printf(“%d %dn”,(+x,y+),z+2); 运行该程序的输出结果是 。 A) 3 4 B) 4 2 C) 4 3 D) 3 3 7. 设int c=5和int a, a=2+(c+=c+,c+8,+c), 则a=_。 A) 15 B) 14 C) 13 D) 168当调用函数时,实参是一个数组名,则向函数
3、传送的是 。 A) 数组的长度 B) 数组的首地址 C) 数组每一个元素的地址 D) 数组每个元素中的值 9. 以下程序的输出结果是 。 main() int i, k, a10, p3; k=5; for (i=0;i10;i+) ai=i; for (i=0;i3;i+) pi=ai *(i+1); for (i=0;i3;i+) k+=pi *2; printf(%dn,k); A) 20 B) 21 C) 22 D)23 10. 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为_ A) a0 B) !a C) a=0 D) a11. 在以下运算符中,优先级
4、最高的运算符是_ A) ? : B) + C) & D) +=12. 有如下程序段 int *p,a=10,b=1 p=&a; a=*p+b; 执行该程序段后,a的值为 A) 12 B) 11 C) 10 D) 编译出错13. 以下程序的输出结果是 main() int a33= 1,2,3,4,5,6 ,i,j,s=0; for(i=1;i3;i+) for(j=0;j=i;j+) s+=aij; printf(%dn,s); A) 18 B) 19 C) 20 D)21 14. 在C语言的if语句中,用作判断的表达式为_A) 关系表达式B)逻辑表达式C)算术表达式D)任意表达式15. 下列
5、程序的运行结果是 void fun(int *a, int *b) int *k; k=a; a=b; b=k; main() int a=3, b=6, *x=&a, *y=&b; fun(x,y); printf(%d %d, a, b); A) 6 3 B) 3 6 C) 编译出错 D) 0 016. 假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入: PROG ABCDEFGH IJKL,则输出结果为 A) ABCDEFG B) IJHL C) ABCDEFGHIJKL D) IJKLABCDEFGH main( int argc
6、, char *argv) while(-argc0) printf(%s,argvargc); printf(n); 17. 以下程序的输出结果是 。 long fun( int n) long s; if(n= =1 | n= =2) s=2; else s=n-fun(n-1); return s; main() printf(%ldn, fun(3); A) 1 B) 2 C) 3 D) 4 18. 定义如下变量: int n=10; 则下列循环的输出结果是 。 while (n7) n-; printf(“%dn”,n); A) 10 B) 9 C) 10 D) 9 9 8 9 8
7、8 7 8 7 7 619. 若已定义: int a =0,1,2,3,4,5,6,7,8,9, *p=a,i; 其中 0i9, 则对a数组元素不正确的引用是 。A) ap-a B) *(&ai) C) pi D) a10 20. 若k为整型,以下while循环_次。 int k=10; while (k=0) k=k-1;A) 10次 B) 无限循环 C) 一次不执行 D) 执行一次(二) 程序填空题【20空,每空2分,共40分】1. 以下程序可判断输入的一个整数是否能被3或7整除,若能整除,输出“yes”,否则输出“no”。请填空。 #include main() int k; print
8、f(“Enter a int number:”); scanf(“%d”,&k); if_ printf(“yesn”); else printf(“_”); 2. 假设已有#define M(r) r*r,则调用print(“%d”,M(2+3);将显示 。3以下程序调用findmax函数求数组中值最大的元素在数组中的下标,完成下列程序。#include findmax(s,t,k)int *s,t,*k; int p;for (p=0,*k=p;ps*k) ;main() int a10,i,k; for(i=0;i=10;i+) scanf(“%d”,&ai); findmax(a,10
9、,&k); printf(“%d,%dn”,k,ak);4.以上程序用枚举法求百鸡问题。公鸡五元一只,母鸡三元一只,小鸡一元三只;一百元要买一百只鸡,且需包含公鸡,母鸡和小鸡,求可有哪几种方案。请填空,要求以较高效率和合理的数值填入循环终值。 main() int i,j,k,n; n=0; for (i=1;_;i+) for(j=1;_;j+) k=100-i-j; if( _ =100) n+; printf(“n=%d,cock=%d,hen=%d,chick=%dn”,n,i,j,k) 5下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。 #include m
10、ain() int i, j; for(i=0; ; i+) j=i*10+6; if( ) continue; printf(%d,j); 6以下程序的运行结果是 。 #include main() int k=4, m=1, p; p=func(k,m); printf(%d,p); p=func(k,m); printf(%d n,p); func(int a, int b) static int m=0, i=2; i+=m+1; m=i+a+b; return m; 7若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是 。 c=(a-=(b-5); c
11、=(a%11)+(b=3);8. 以下程序用“辗转相除法”来求出两个正整数的最大公约数。请填空。(两个数分别放在m和n中)main() int r,m,n,t; printf(“Enter m,n:”); scanf(“%d%d”,&m,&n); printf(“m=%d n=%dn”,m,n); if (mn) t=m,m=n,n=t; r= m%n; while _ m=_;n=_;r=m%n; printf(“%dn”,n); 9. 表示“整数x的绝对值大于5”的C语言表达式是 。10.以下程序将数组中的数按逆序存放,请填空。#include #define SIZE 12main()
12、int aSIZE,i,j,t; for (i=0;iSIZE;i+) scanf(“%d”, );/*读入数据到a数组中*/ i=0;j= ; while (ij) t=ai; ; ; i+;j ; for (i=0;iSIZE;i+) printf(“%3d”,ai); printf(“n”);(三)编程题【4题,每题10分,共40分】1. C语言标题文件math.h中提供了求绝对值的函数fabs(x),其功能是: x x0 fabs(x)= -x xai+1YNai ai+1输出a1到a104. (此题不用做,我们考试不会考!)输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。其
13、N-S图如右上试卷A标准答案(一)单项选择题【20题,每题1分,共20分】(1) A (2) D (3)A (4)A (5) D (6) D (7) B (8)B (9) B (10) D(11) B (12) B (13)A (14) D (15) A(16) C (17)A (18) B (19)D (20)C(二)填空题【20空,每空2分,共40分】(1) (k%3=0|k%7=0) non(2) 11(3) *k=p (4) I20 j33 I*5+j*3+k/3=100(5) I5(10)aSIZEAj=aiAI=t-(三)程序设计【4题,每题10分,共40分】1. int myfa
14、bs(int x) if (x0) x=-x; return x;2. #define S main() int n,I,j printf(“Enter n:”);scanf(“%d”,&n);/*n=4*/ for (I=1;I=n;I+) for (j=1;j=10;j+) putchar(S); for (j=1;j=2(n-I);j+) putchar(S); for (j=1;j=2*I-1;j+) putchar(*); printf(“n”); for (I=1;I=n-1;I+) for (j=1;j=10+2*i;j+) putchar(S); for (j=1;j=2*n-
15、3;j+) putchar(*); printf(“n”);3. main() int a11; int i,j,t; printf(“input 10 numbers:n”); for (i=1; i11;i+) scanf(“%d”,ai); printf(“n”); for (j=1;j=9;j+) for (i=1;iai+1) t=ai;ai=ai+1;ai+1=t; for (i=1;i11;i+) printf(“%d”,ai);4#include “stdio.h”main() char string81; int i,num=0,word=0; char c; gets(string); for (i=0;(c=stringi)!=0;i+) if (c=) word = 0; else if(word=0) word=1; num+; printf(“There are %d words in this linen”,num);
限制150内