
2005-2008学年第1学期《C语言程序设计》试题 命题散师:黄林陈勇 审题戴师:幸书酌 一,选释题(共20分,每题1分) 1,以下所列的C语言常量中,正确的整型常量是 人123. R-456 C.789.000 D.172 2设有以下语句: char a=3,b=6,c: c=a"b<<2: 则e的二进制植是 L00011011 R.00010100 C.00011100 D.00011000 3下而程序段的输出结果是: char x=56: =x表056: printf(d,olm”,x.x): L56,70 B.0.0 C.40,50 .62.76 4有两个字符数组a,b,则以下正确的输入格式是: A.gets (a,b) B.scanf("%s%s",a,b) C.scanf("%ss",&a,&b): D.gets(”a),ets(b): &以下程序的输出结果是: main() int x=10.y=10; rintf(dn',x-,一y): 1 A1010 R99 C.910 D.109 6c2为字符型,执行语句“2‘a''6-3:”后,c2的值为: 共7页 第1页
共7页 第1页 2005~2006 学年第 1 学期《C 语言程序设计》试题 命题教师:黄林 陈勇 审题教师: 李书勤 一、选择题(共 20 分,每题 1 分) 1. 以下所列的 C 语言常量中,正确的整型常量是: A. 123. B. -456 C. 789,000 D. '\72' 2. 设有以下语句: char a=3,b=6,c; c=a^b<<2; 则 c 的二进制值是 A. 00011011 B. 00010100 C. 00011100 D. 00011000 3. 下面程序段的输出结果是: char x=56; x=x & 056; printf("%d,%o\n",x,x); A. 56,70 B. 0,0 C. 40,50 D. 62,76 4. 有两个字符数组 a,b,则以下正确的输入格式是: A.gets(a,b); B.scanf("%s%s",a,b); C.scanf("%s%s",&a,&b); D.gets("a"),gets("b"); 5. 以下程序的输出结果是: main() { int x=10,y=10; printf("%d %d\n",x--,--y); } A. 10 10 B. 9 9 C. 9 10 D. 10 9 6. c2 为字符型,执行语句“c2= 'a'+'6'-'3';”后,c2 的值为:

Ad B.100 C.不确定的值D.c 7。C语言中要求运算对象必须是整型的运算符是: A/ B.++ C,= D,第 &陶tchar函数可以向将端输出一个 A整型变量的值 五.实型变量的值 C.字符串 D.字符或字符型变量的值 9。以下能正确地定义变量a,b和e并为它们财初值5的语句是: A.int a=5,b=5,c=5: B.int a,b,c=5: C-5,b-6,c-5: D.int a=b=c=5; 10.以下表达式为真时不使表示A为奇数的表达式是: AA2--1 RIA2-=0) C.1(A2 D.2 1山,对下述程序段指运正确的是: int k=0:while(k=1)k++: 人有语法错误,不能执行 五、循环是无限循环 C循环体语句一次也不执行 D.程序体语句执行一次 12.执行语句for(i-1:i+(4:》:后变量i的值是: A.3 B.4 G,5 D,不定 13下面程序的运行结果是: int x3: do printf(3d°,x-2):》 while(!(--x)): A I R30 G.1-2 D.死循环 14.若已定义:inta[0-{1.2,3,4,5,6,7,8,9到,pa,i:其中0≤i≤9。数组元素引用 不正确的是: A.a[p-a] B.*(a[i]) G.pi】 D.*(体(a+iD) 共7真 第2真
共7页 第2页 A. d B. 100 C. 不确定的值 D. c 7. C 语言中要求运算对象必须是整型的运算符是: A. / B. ++ C. != D. % 8. putchar 函数可以向终端输出一个 A. 整型变量的值 B. 实型变量的值 C. 字符串 D. 字符或字符型变量的值 9. 以下能正确地定义变量 a,b 和 c 并为它们赋初值 5 的语句是: A. int a=5,b=5,c=5; B. int a,b,c=5; C. a=5,b=5,c=5; D. int a=b=c=5; 10. 以下表达式为真时不能表示 A 为奇数的表达式是: A. A%2==1 B. !(A%2==0) C. !(A%2) D. A%2 11. 对下述程序段描述正确的是: int k=0;while(k=1)k++; A. 有语法错误,不能执行 B. 循环是无限循环 C. 循环体语句一次也不执行 D. 程序体语句执行一次 12. 执行语句 for(i=1;i++<4;);后变量 i 的值是: A. 3 B. 4 C. 5 D. 不定 13. 下面程序的运行结果是: int x=3; do {printf("%3d",x-=2);} while(!(--x)); A. 1 B. 3 0 C. 1 -2 D. 死循环 14. 若已定义:int a[]={1,2,3,4,5,6,7,8,9},*p=a,i;其中 0≤i≤9。数组元素引用 不正确的是: A. a[p-a] B. *(&a[i]) C. p[i] D. *(*(a+i))

15.若二维数组a有■列,则计算任一元素[们【】在数组中的位置的公式为如 人i如+j Rj知+村 C.1+上1 D.1知*j+1 16对以下说明语句,叙述不正确的是: struct stufint a:float b:stutype: A.struct是结构体类重的关键字 B.struct stu是用户定义的结构体类型 C.stutype是用户定义的结构体类重名Da和b都是结构体成员名 I7.若要用fapn函数打开一个ASCII码文件,想从中读取信息,则打开方式应该用: Ar B.w C.a D.rt 18.fp是文件的指针,且已读到末尾,则函数feof(fp)的返回值是: A.EOF B.-1 G,非0值 D.NULL 19,函数调用语句!fs0ek(fm-13L,2):的含义是 人将文件位置指针移到距离文件头3个字节处: B将文件位置指针从文件尾处白后划13个字节: C将文件位置指针从当前位置向文件头方向移动13个字节 L将文件位置指针从当前位置向文件尾方向移到13个字节 0.以下氨述正确的是: A实参和与其对应的形参各占用独立的存储单元 B实参和与其对应的形参共用一个存储单元 C只有当实参与其对应的形参同名时才共用存销单元 且形参是虚拟的,函数在没有敲调用时,不占用存储单元 二、写出以下程序运行结果(共20分,每题4分》 l.sinclude“stdio.h main( (char b[]="abcdefg",*chp=b[7]: while(chp>h〔0j) putchar(schp): 共7页 第3页
共7页 第3页 15. 若二维数组 a 有 m 列,则计算任一元素 a[i][j]在数组中的位置的公式为: A. i*m+j B. j*m+i C. i*m+j-1 D. i*m+j+1 16. 对以下说明语句,叙述不正确的是: struct stu{int a;float b;}stutype; A. struct 是结构体类型的关键字 B. struct stu 是用户定义的结构体类型 C. stutype 是用户定义的结构体类型名 D. a 和 b 都是结构体成员名 17. 若要用 fopen 函数打开一个 ASCII 码文件,想从中读取信息,则打开方式应该用: A. r B. w C. a D. r+ 18. fp 是文件的指针,且已读到末尾,则函数 feof(fp)的返回值是: A. EOF B. -1 C. 非 0 值 D. NULL 19. 函数调用语句:fseek(fp,-13L,2);的含义是: A. 将文件位置指针移到距离文件头 13 个字节处; B. 将文件位置指针从文件尾处向后退 13 个字节; C. 将文件位置指针从当前位置向文件头方向移动 13 个字节 D. 将文件位置指针从当前位置向文件尾方向移到 13 个字节 20. 以下叙述正确的是: A. 实参和与其对应的形参各占用独立的存储单元 B. 实参和与其对应的形参共用一个存储单元 C. 只有当实参与其对应的形参同名时才共用存储单元 D. 形参是虚拟的,函数在没有被调用时,不占用存储单元 二、写出以下程序运行结果(共 20 分,每题 4 分) 1.#include "stdio.h" main() {char b[]="abcdefg",*chp=&b[7]; while(--chp>&b[0]) putchar(*chp);

陶tchar('\n'): 2.mainO {char ch[1="1234°: int a,s=0: for (a=0:ch[a]>='0'&ch[a]b/n.a*eep->b,(*p).a+p->f) 共7页 第4页
共7页 第4页 putchar('\n'); } 2.main() {char ch[]="1234"; int a,s=0; for (a=0;ch[a]>='0' && ch[a]b/n.a*++p->b,(*p).a+p->f); }

5.int fun(int x,int y.int *cp,int *dp) (*cp=x+y: *dFX-了: 1 min( [int a,b.c.d: a=4:b=3: fun (a.b.&c,&d) printf(sd,dn”,c,d): 1 三、将以下程序补充完整,不得增、副程序行《共20分,每空2分) 1,以下程序段可以输出最初的10个素数,每行输出10个。 =include”mth.h min() [int wk.i,n-: clrser0: while (n<100) {=+1: kmsqrt (n): for(i2: :i+) if( )break: if(i=k+1》 {=n+1: printf("x5d".) if( )printf("\) 共7真第5真
共7页 第5页 5.int fun(int x,int y,int *cp,int *dp) {*cp=x+y; *dp=x-y; } main() {int a,b,c,d; a=4;b=3; fun(a,b,&c,&d); printf("%d,%d\n",c,d); } 三、将以下程序补充完整,不得增、删程序行(共 20 分,每空 2 分) 1. 以下程序段可以输出最初的 100 个素数,每行输出 10 个。 #include "math.h" main() {int m= ,k,i,n= ; clrscr(); while (n<100) {m=m+1; k=sqrt(m); for(i=2; ;i++) if( )break; if(i==k+1) {n=n+1; printf("%5d",m); if( )printf("\n"); }

1 2.以下程序段可以将接收的一个英文句子规范化。规范化指滤掉句子前后不经要的 空格,第一个字得大写,单词之间只要一个空格。 main( (char v[80]: int i=1: printf(请输入一个英文句子:);gets(): /如果句子输有空格。去掉首部空格/ while(v[o]==''strepy( /体如果首字母小写,则将其变为大写*/ if( )w0]32: 去掉单司之阿多余的空格,直到句子末尾为止/ while( {hile(i】=”·k(i+1j='') 14+: /去掉尾部空格,因为通过上一个循环后,句子后最多贝剩一个空格了/ if(w[strlen(w)-1]=='' printf(规范化后的句子是:sn”,):} 四、编程题(共40分) 0<x<1 x- 1≤x<2 x2-2x-12≤x<3 x3+4x-1736x<4 1.函数求解,输入x的值,输出y的值。 共7页 第6页
共7页 第6页 } } 2. 以下程序段可以将接收的一个英文句子规范化。规范化指滤掉句子前后不必要的 空格,第一个字母大写,单词之间只要一个空格。 main() {char w[80]; int i=1; printf("请输入一个英文句子:");gets(w); /*如果句子前有空格,去掉首部空格*/ while(w[0]==' ') strcpy( ); /*如果首字母小写,则将其变为大写*/ if( ) w[0]-=32; /*去掉单词之间多余的空格,直到句子末尾为止*/ while( ) {while(w[i]==' ' && w[i+1]==' ') ; i++; } /*去掉尾部空格,因为通过上一个循环后,句子后最多只剩一个空格了*/ if(w[strlen(w)-1]==' ') ; printf("规范化后的句子是:%s\n",w);} 四、编程题(共 40 分) 1. 函数求解,输入 x 的值,输出 y 的值。 0<x<1 1≤x<2 2≤x<3 3≤x<4 + − − − − = 4 17 2 1 1 3 2 x x x x x x y

2计算组合数C=刚 ,具,k的值从键位输入。 (m-k) 3,随机产生10个两位整数。核由大到小推序后输出。 4.编写一个程序,饶计一个SCII码文作的行数,设一行字符数不超过25隔个。遇 到国车换行符一行结束。 共7页 第7页
共7页 第7页 2. 计算组合数 !( )! ! k m k m C k m − = ,m,k 的值从键盘输入。 3. 随机产生 10 个两位整数,按由大到小排序后输出。 4. 编写一个程序,统计一个 ASCII 码文件的行数,设一行字符数不超过 255 个,遇 到回车换行符一行结束