当前位置:首页 >> 研究生入学考试 >>

2014《C语言程序设计》专升本练习题


《C 语言程序设计》 专升本练习题
(学习资料仅供练习)





专升本《C 语言》练习题一.................................................................................................... 1 专升本《C 语言》练习题二.................................................................................................... 9 专升本《C 语言》练习题三.................................................................................................. 17 专升本《C 语言》练习题四.................................................................................................. 24 专升本《C 语言》练习题五.................................................................................................. 31 专升本《C 语言》练习题六.................................................................................................. 42 专升本《C 语言》练习题七.................................................................................................. 48 专升本《C 语言》练习题八.................................................................................................. 58 专升本《C 语言》练习题九.................................................................................................. 65 专升本《C 语言》练习题十.................................................................................................. 72

专升本《C 语言》练习题一

第 1 页

第 2 页

6 10

第 3 页

第 4 页

第 5 页

第 6 页

第 7 页

第 8 页

专升本《C 语言》练习题二

第 9 页

第 10 页

第 11 页

第 12 页

第 13 页

第 14 页

第 15 页

第 16 页

专升本《C 语言》练习题三
一、单项选择题 1. C 语言源程序文件经过编译连接之后生成一个后缀为__C__的文件。 A.”.c” B.“.obj” C.“.exe” D.“.bas”

2. 以下选项中不正确的整型常量是_C____。 A. 12L B. -10 C. 1,900 D. 123U

3. 表达式___C___的值是 0。 A.3%5 B.3/5.0 C.3/5 D.3<5

4. 表达式 !(x>0||y>0) 等价于__D___。 A.!x>0||!y>0 B.!(x>0)||!(y>0) C.!x>0&&!y>0 D.!(x>0)&&!(y>0)

5. 若变量已正确定义并赋值,表达式__D____不符合 C 语言语法。 A.4&&3 B.+a C.a=b=5 D.int(3.14)

6. 若变量已正确定义,执行语句 scanf("%d%d%d ",&k1,&k2,&k3);时,___B___ 是正确的输入。 A.2030,40 B.20 30 40 C.20, 30 40 D.20, 30,40

7. 执行语句 printf(” __D____”, 2); 将得到出错信息。 A.%d B.%o C.%x D.%f

8. 设变量定义为“int s[ ]="hello\nworld\n";” ,则数组 s 中有__B__个元素。 A.12 B.13 C.14 D.15

9. 设变量定义为“int a[2]={1,3}, *p=&a[0]+1;” ,则*p 的值是___B__。 A.2 B.3 C.4 D.&a[0]+1

10. 若变量已正确定义并赋值,表达式 -k++ 等价于__A____。 A.-(k++) B.(-k)++ C.-(k+1) D.-(++k)

11. 在 C 语言程序中,在函数内部定义的变量称为__D____。 A.全局变量 B.全程变量 C.外部变量 D.内部变量

12. 若 x 是整型变量,表达式 (x=10.0/4.0) 的值是__D___ 。 A.2.5 B. 2.0 C. 3 D.2

第 17 页

13. 对于以下的变量定义,表达式__A____是正确的。 struct node { char s[10]; A.p->k=2 int k; } p[4]; C.p[0]->k=2 D.p->s=‘a’

B.p[0].s=“abc”

14. 下列运算符中,优先级从高到低依次为__D___。 A.&&,!,|| B.||,&&,! C.&&,||,! D. ! ,&&,||

15. 下列程序段的输出结果是__B___。 int *p, *q, k = 1, j=10 ; p=&j; q = &k ; p = q ; (*p)++;

printf("%d",*q); A.1 B.2 C.10 D.11

16.以下各选项企图说明一种新的类型名,其中正确的是水量 (C) ?? A. typedef v1 int; ?? C. typedefv1 int v3; B. typedef v2=int; D. typedef v4: int;

17. 以下选项中,非法的字符常量是 (C) ?? A. ‘\t’ B. ‘\17’ C) “n” D. ‘\xaa’

18. 以下程序的输出结果是 (C) ?? main() ??{ int i, a[10]; ?? for(i=9;i>=0;i--) a[i]=10-i; ?? printf(“%d%d%d”,a[2],a[5],a[8]); ??} ?? A. 258 B. 741 C. 852 D. 369

19. 以下程序的输出结果是(B) ?? main() ??{ char st[20]= “hello\0\t\\\”; ?? printf(%d %d \n”,strlen(st),sizeof(st)); ??} ?? A. 9 9 B. 5 20 C. 13 20 D. 20 20

20. 以下程序的输出结果是 (D) ?? main()

第 18 页

??{ int a, b; ?? for(a=1, b=1; a<=100; a++) ??{ if(b>=10) break; ?? if (b%3= =1) ??{ b+=3; continue; } ??} ?? printf(“%d\n”,a); ??} ?? A. 101 B. 6 C. 5 D. 4

21. 以下程序的输出结果是 (D) ?? union myun ??{ struct ??{ int x, y, z; } u; ?? main() ??{ a.u.x=4; a.u.y=5; a.u.z=6; ?? a.k=0; ?? printf(%d\n”,a.u.x); ??} ?? A. 4 B. 5 C. 6 D. 0 int k; } a;

22. 以下程序段的输出结果是 (A) ?? char s[]="\\141\141abc\t";?? printf ("%d\n",strlen(s)); ?? A. 9 B. 12 C. 13 D. 14

23. 以下程序的输出结果是 (B) ?? main() ??{ char ch[3][5]={"AAAA","BBB","CC"}; ?? printf("\"%s\"\n",ch[1]); ??} ?? A. "AAAA" B. "BBB" C. "BBBCC" D. "CC"

24. 不合法的 main 函数命令行参数表示形式是 (C)

第 19 页

?? A. main(int a,char *c[]) ?? C. main(int argc,char *argv)

B. main(int arc,char **arv) D. main(int argv,char *argc[])

25. 有以下程序执行后输出结果是 (C) ?? main() ??{ char *s[]={"one","two","three"},*p; ?? printf("%c,%s\n",*(p+1),s[0]); ??}?? ?? A. n,two 26. 设有如下说明 ?? typedef struct ??{ int n; char c; double x;}STD; ??则以下选项中,能正确定义结构体数组并赋初值的语句是 (A) ?? A. STD tt[2]={{1,'A',62},{2, 'B',75}}; ?? B. STD tt[2]={1,"A",62},2, "B",75}; ?? C. struct tt[2]={{1,'A'},{2, 'B'}}; ?? D. structtt[2]={{1,"A",62.5},{2, "B",75.0}}; 27. 若变量 c 为 char 类型,则能正确判断出 c 为小写字母的表达式是( A. 'a'<=c<= 'z' C. ('a'<=c)and ('z'>=c) 二.填空题 1. 设 ch 是字符型变量,判断 ch 为英文字母的表达式是: (ch>=’A’&&ch,=’Z’)||(ch>=’a’&&ch<=’z’) __。 2. 计算下列分段函数的 if 语句是_ if(x>0)y=1;else if(x=0)y=0;else y=-1;___。 1 y= 0 -1 x>0 x=0 x<0 B. (c>= 'a')||(c<= 'z') D. (c>= 'a')&&(c<= 'z') D ) 。 B. t,one C.w,one D. o,two p=s[1];

3.表达式 !!5 的值是__1____。 4.下列程序段的输出结果是___12___。 printf("%xn", (0x19 <<1) & 0x17);

第 20 页

5.下列程序段的输出结果是__ k=4 s=6___。 int k, s; for(k=0, s=0; k<10; k++) if (s>k) break ; else s += k; printf("k=%d s=%d", k, s); 6.下列程序段的输出结果是__15___。 #define MIN(x,y) (x)<(y)?(x) : (y)

printf("%d",10*MIN(10,15)); 7.下列程序在运行时可能会出错,原因是__指针变量 s 未赋初值____。 # include void main( ) { char *s; gets(s); puts(s); }

8.下列程序段的输出是___6 0__。 # include int f(int m) { static int k=0; int s=0;

for(; k<=m; k++) s++; return s; } void main( ) { int s1, s2; s1=f(5); s2=f(3); printf("%d %d\n", s1, s2); } 9. 下列程序段的输出结果是__ fgh ___。 char *st[ ]={"abcd","efgh","ijkl","mnop"}; printf("%s", *(st+1)+1);

第 21 页

10. 用 typedef 定义一个含 10 个元素的整型数组 ARR。 typedef int ARR[10];

11.以下程序调用 findmax 函数返回数组中的最大值,请填空。 ?? findmax(int *a,int n) ??{ int *p,*s; ?? for(p=a,s=a; p-a ?? if ( *p>*s ) s=p;

?? return(*s); ??} ? void main()

??{ int x[5]={12,21,13,6,18}; ?? printf("%d\n",findmax(x,5)); ??} 三.程序(段)填空题 1.设变量 x, y, z 已正确定义和赋值,请仔细阅读程序段A,然后在程序段B中 填入正确的内容,使程序段A和程序段B有相同的功能。 程序段 A x=x+y; x=x-y; z=x ; y=z; 程序段 B y=x-y; z=x+y; x=y ; z=x+y;

2.请仔细阅读函数 f1,然后在函数 f2 中填入正确的内容,使函数 f1 和函数 f2 有相同的功能。 char *f1(char s[ ], char t[]) { int k; for(k=0; t[k]!=' '; k++) s[k]=t[k]; s[k]=' '; return s; }
第 22 页

第 23 页

专升本《C 语言》练习题四
一、 填空題(每空 1 分,共 20 分) 1. 是 C 程序的基本单位,一个 C 程序总是从 2.C 语言规定标识符只能由字母、 必须为字母或 。 =程序 和 开始执行。 3 种字符组成,且第一个字符

3.著名计算机科学家沃思提出的一个公式:数据结构+ 4.Turbo C++中,若有语句:unsigned int a;则 a 的范围是 0~ 5.C 中的转义符“\r”表示: 6.表达式 21 / 4 的值为 。 。

7.C 语言中没有专门的字符串变量, 如果想将一个字符串存放在变量中以便保存, 必须使用 。 。

8.已知 a=12.789,则表达式 (int)a 的值为 9.表达式 3 | 2 的值是 10.若 a=5,经 a-=3;后 a= 。 。

11.已知 ch='a',则表达式【(ch>='A ' && ch<='Z')? (ch+32):ch 】的值为 12.C 中定义符号常量 E 为 2.71828 的宏命令是 13.函数形参和调用的实参是数组名时,参数按 14.C 中按位与运算符是 、 按位异或运算符是 。 方式进行传递。 、 按位或运算符是





15.定义一个结构变量,共三个成员分别是字符型、整形和浮点型,则该结构体 变量所占内存长度为 个字节。

二、 单项选择题(每题 2 分,共 40 分) 1.下列 C 语言标识符中,不合法的是( A. myname B. Wend C. sum ) D. student

2.欲从键盘给整型变量 a 赋值 3,b 赋值 2,则对应语句 scanf("a=%d,b=%d",%a,&b);的输入格式是() A. 3 2 B. a=3 b=2 C. a=3,b=2 D.a=b=3,2

3.C 语言源程序文件后缀名是( ) A. .exe B. .obj C. .bat
第 24 页

D. .c

4.结构化程序设计的三种基本结构是( B A. 顺序结构、复杂结构、循环结构 B. 顺序结构、分支结构、循环结构 C. 顺序结构、分支结构、选择结构 D. 顺序结构、复杂结构、分支结构 5.以下表达式中,值为 0 的是( A.15%5 B.15/5.0 )



C.15/5

D.15>5 )

6.设下列表达式中所涉及的变量均已正确定义,则不符合 C 语言语法的是( A.4||3 B.a+=4 C.a=3,b=5 D.char(65) )

7.设变量定义为【int a[3]={1,3,5}, *p=a+1; 】 ,则*p 的值是( A. 2 B. 3 C. 4 D. a+1 )

8.在 C 语言程序中,在函数内部定义的变量称为( A. 全局变量 B. 外部变量 C. 全程变量

D. 局部变量 )

9.经过以下的变量定义后,正确的表达式是(A struct node { char s[10]; A. p->k=21 int k; } p[4]; C. p(0)->k=21

B. p[0]->k=21

D. p->s="Mary" )

10.若变量 c 为 char 类型,则能正确判断出 c 为大写字母的表达式是( A. (c>= 'A')||(c<= 'Z') B. 'A'<=c<= 'Z' C. (c>= 'A')&&(c<= 'Z') D. ('A'<=c)and ('Z'>=c) 11.C 语言中以“只写”方式打开文件,应选择的参数是( A. o B. w C. a D. r )

12.变量定义为【int a[2][3]={1,2,3,4,5,6}, *p=&a[1][0]; 】 ,则 p 的值是 ) A. 数组 a 的首地址 C. 数组 a 的第“1”行第“0”列的地址 13.用链表表示线性表的优点是( A. 便于插入和删除操作 C. 便于随机存取 ) B. 数组 a 的第 1 个元素的地址 D. 数组 a 的第“1”列的首地址

B. 花费的存储空间较顺序存储少 D. 数据元素的物理顺序与逻辑顺序相同 )

14.结构化程序设计主要强调的是( C A. 程序的规模

B. 程序设计语言的先进性

第 25 页

C. 程序结构的规范化

D. 程序的效率 C )

15.以下表达式中,不正确的浮点数常量是( A. 2e2 B. 2.2 C. 2c2 D. 2E2

16. 若 int x=12,*p=x;则正确的赋值表达式是( A. p=*&x B. *p=&x C. &p=x D. *p=x



17.设有如下程序段: int i=15; A. 5 B. 4 C. 10

for(;i>=10;)i--; 执行完这段程序后, i 的值是 ( D) D. 9 while(i<15)i--; 则以下描述中正确的是( B. 这是一个死循环 D. 循环体语句只执行一次 C )

18.设有如下程序段:int i=15; A. 循环体语句执行 15 次

C. 循环体语句一次也不执行

19.设有如下程序段:{char a[2][6]={"abcde","uvwxy"},*p=&a[0][2]; printf("\n%s",p);这段程序执行后,屏幕输出的结果是( B A. wxy B. cde C. w int i; D. c char c; }a; a.c='A'; a.i=12; ) )

20.设有如下程序段:union{

printf("\n%d",a.i);这段程序执行后,屏幕输出的结果是(C A. A B. 97 C. 12 D. 65

三、 程序填空(每空 3 分,共 15 分) 1.以下程序的功能是输出杨辉三角形前 10 行,请在下划线处填上正确的内容, 使程序能正确运行。 #include <stdio.h> #define N 11 main() {int i,j,a[N][N]; for(i=1;i<N;i++) {a[i][1]= a[i][i]= } for(i=3;i<N;i++) for(j=2;j<=i-1;j++) a[i][j]=
第 26 页

; ;

;

for(i=1;i<N;i++) {for(j=1;j<=i;j++) printf("%6d", a[i][j] ); printf("\n"); } } 2.以下程序的功能是利用函数求 100-200 间素数(质数)的个数,请在下划线处 填上正确的语句,使程序能正确运行。 #include <stdio.h> int isprime(int n) { int i,f; f=1; for(i=2;i<n/2;i++) if( {f=0; return(f); } main() {int i=100,n=0; for(;i<200;i++) if( )n++; ) i=n; }

printf("Numbers of prime:%d",n); } 四、 写出以下程序运行结果(每题 4 分,共 12 分) 1.以下程序输出的结果是: #include "stdio.h" void main() { char s[]="\"hello\""; printf("%s",s); }

第 27 页

2.以下程序输出的结果是: #include "stdio.h" void main() {int a=12,b=13; a=a+b; } 3.以下程序输出的结果是: #include "stdio.h" void main() { char ch[]="I love Great Wall of China!"; printf("%c",*(ch+5)); } b=a-b; a=a-b; printf("%d,%d",a,b);

五、 编程题(第 1 题 5 分,第 2 题 8 分,共 13 分) 1.百钱百鸡问题:公元前 5 世纪,我国古代数学家张丘建在《算经》一书中提出了 百鸡问题:鸡翁一值钱五、鸡母一值钱三、鸡雏三值钱一,百钱买百鸡,问鸡翁、 母、雏各几何? 试编程输出所有的买法。注意:每一种鸡至少要一只。 2.编程输出所有"玫瑰花数"。 (一个四位数等于它每一位数字的 4 次方之和.那么 我们称这个四位数为"玫瑰花数") 专升本《C 语言》练习题四参考答案 一、 填空題(每空 1 分,共 20 分) 1 2 3 4 5 6 7 8 9 10 11 函数 数字 算法 65535 回车 5 字符数组 12 3 2 a 或 97 主函数 下划线 或 main 函数 下划线

第 28 页

12 13 14 15

#define E 2.71828 地址传递 & 7 或 传址 ^ |

二、 单项选择题(每题 2 分,共 40 分)
1 B 11 B 2 C 12 C 3 D 13 A 4 B 14 C 5 A 15 C 6 D 16 D 7 B 17 D 8 D 18 C 9 A 19 B 10 C 20 C

三、 程序填空(每空 3 分,共 15 分) 1 2 1 n%i==0 1 a[i-1][j-1]+a[i-1][j] isprime(i)==1

四、 写出以下程序运行结果(每题 4 分,共 12 分) 1.运行结果:"hello" 2.运行结果:13,12 3. 运行结果: e 五、 编程题(第 1 题 5 分,第 2 题 8 分,共 13 分) 1.参考程序: #include "stdio.h" void main() {int cock,hen,chick; for(cock=1;cock<20;cock++) for(hen=1;hen<33;hen++) {chick=100-cock-hen; if(cock*5+hen*3+chick/3==100) printf("cock:%d hen:%d chick:%d\n",cock,hen,chick); }} 评分标准:程序结构正确得 3 分,算法正确得 2 分
第 29 页

2. 参考程序: #include "stdio.h" void main() { int i,g,s,b,q,m; for(i=1000;i<=9999;i++) {g=i%10; s=i/10%10; b=i/100%10; q=i/1000; m=g*g*g*g+s*s*s*s+b*b*b*b+q*q*q*q; if(i==m)printf("\n%d",i); } }

第 30 页

专升本《C 语言》练习题五
一.单项选择题 1.以下定义语句中正确的是 (C) A. char a='A'b='B'; B. float a=b=10.0; C. int a=10,*b=&a; D. float *a,b=&a;

2.下列运算符中,优先级最高的是 (A) 。 A. -> B. ++ C. && D. =

3.表达式!(x>0&&y>0)等价于 (A) 。 A. ! (x>0) || ! (y>0) B. !x>0 || !y>0 C. !x>0 && !y>0 D. !(x>0) && ! (y>0)

4. 有以下程序运行后的输出结果是(B) ? main() ? { int a=666,b=888; printf("%d\n",a,b); C.888 } D.666,888

A.错误信息

B.666

5. 有以下程序运行后的输出结果是(C) ? main() ?{ int i; ?? for(i=0;i<3;i++) ?? switch(i) { ?? case 0:printf("%d",i); ?} A.022111 case 2:printf("%d",i); C.000122 default:printf("%d",i); } D.012

B.021021

6. 若 x 和 y 代表整型数,以下表达式中不能正确表示数学关系|x-y|<10 的是 (C) ? A.abs(x-y)<10 ? C.!(x-y)<-10||!(y-x)>10 B.x-y>-10&& x-y<10 D.(x-y)*(x-y)<100

7. 数组定义为,int a[11][11]; 则数组 a 的元素个数为 ( D ) A. 12 B. 144 C. 100 D. 121

8. 对于以下的变量定义,不正确的表达式是(D) 。 struct node { int A. p->k=2; j,k; }x,*p=&x; C. x . k=2 D. x->k=2

B. (*p).k=2;

9. 不正确的赋值或赋初值的方式是 (B) 。
第 31 页

A. char str[ ]=”string”; C. char *p=”string”;

B.char str[10];

str=”string”;

D.char *p; p=”string”;

10. 设程序中不再定义新的变量,写出以下程序中可以使用的所有变量( B ) #include <stdio.h> int z; int p(int x) { static int y; return (x+y); }

void main( ) { int a,b; printf(“%dn”, p(a)); B. a,b,z ……… }

A. a,b

C. a,b,y,z

D. a,b,x,y,z

11.有以下程序运行后的输出结果是(D) ? main() ?{ int i=0,x=0; ? for (;;) ? { ?? ? } if(i==3||i==5) continue; printf("%d\n",s); A.10 B.13 C.21 D.程序进入死循环 if (i==6) break; i++; s+=i; };

12.以下程序若运行时从键盘上输入:6,5,65,66<回车>。则输出结果是( A ) ? main() ?{ char a,b,c,d; scanf("%c,%c,%d,%d",&a,&b,&c,&d);

?? printf("c,%c,%c,%c\n",a,b,c,d); } A.6,5,A,B B.6,5,65,66 C.6,5,6,5 D.6,5,6,6

13.s1 和 s2 已正确定义并分别指向两个字符串。若要求:当 s1 所指串大于 s2 所 指串时,执行语句 S;则以下选项中正确的是(D) ? A. if(s1>s2)S; ? C. if(strcmp(s2,s1)>0)S; B. if(strcmp(s1,s2))S; D. if(strcmp(s1,s2)>0)S; p[0]=a[1];则*(p[0]+1)

14.有以下定义和语句 int a[3][2]={1,2,3,4,5,6,},*p[3]; 所代表的数组元素是 (C) A. a[0][1] B. a[1][0] C. a[1][1]
第 32 页

D. a[1][2]

15.程序中对 fun 函数有如下说明 void *fun();此说明的含义是:(C) ? A. fun 了数无返回值 ? B. fun 函数的返回值可以是任意的数据类型 ? C. fun 函数的返回值是无值型的指针类型 ? D.针 fun 指向一个函数,该函数无返回值 16.有以下程序运行后的输出结果是 ( C ) ? void fun(int *a,int i,int j) ?{ int t; ? if(i<J) ??{ t=a;a=a[j];a[j]=t; i++; j--; ?} ? main() ?{ int x[]={2,6,18},i; ? fun(x,0,3); ? for(i=0;i<4;i++) printf("%2d",x); ? printf("\n"); ?}?? ?? A. 1 2 6 8 B. 8 6 2 1 C. 8 1 6 2 D.8 6 1 2 fun(a,i,j); }

? 17.有以下说明和定义语句 ?? struct student ?? { int age; char num[8];}; ?? struct student stu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}}; ?? struct student *p=stu; ??以下选项中引用结构体变量成员的表达式错误的是 ( D ) ?? A. (p++)->num B.p->num C.(*p).num D.stu[3].age

18.已定义 ch 为字符型变量,以下赋值语句中错误的是 (A) ?? A.ch='\'; B.ch=62+3; C.ch=NULL; D.ch='\xaa';

第 33 页

19.以下选项中不能正确把 cl 定义成结构体变量的是 (B) ?? A)typedef struct ??{ int red; { int red; ?? int green; int green; ?? int blue; int blue; ??} COLOR; }; ?? COLOR cl; ?? C)struct color ??{ int red; { int red; ?? int green; int green; ?? int blue; int blue; ??} cl; } cl; 20.有以下程序 ?? fun(int a, int b) ??{ if(a>b) return(a); ?? else return(b); ??} ?? main() ??{ int x=3, y=8, z=6, r; ?? r=fun(fun(x,y), 2*z); ?? printf("%d\n", r); ??} ??程序运行后的输出结果是 (D) ?? A.3 B.6 C.8 D.12 D)struct B)struct color cl

21.有以下程序段 ?? main() ??{ int a=5,*b,**c; ?? c=&b; b=&a; ????

第 34 页

??} ??程序在执行了 c=&b;b=&a;语句后,表达式:**c 的值是 (C) ?? A.变量 a 的地址 B.变量 b 中的值 C.变量 a 中的值 D.变量 b 的地址

22. 设有 int x=11; 则表达式 (x++ * 1/3) 的值是 (A) ?? A. 3 B. 4 C. 11 D. 12

23. 下列程序的输出结果是 (C) ?? A. 3 ?? main() ?? { double d=3.2; int x,y; ?? x=1.2; y=(x+3.8)/5.0; ?? printf("%d \n", d*y); ?? } 24. 下列变量定义中合法的是 (A) ?? A. short _a=1-.le-1; ?? C. long do=0xfdaL; B. double b=1+5e2.5; D. float 2_and=1-e-3; B. 3.2 C. 0 D. 3.07

25. 以下循环体的执行次数是 (C) ?? A. 3 ?? main() ?? { int i,j; ?? for(i=0,j=1; i<=j+1; i+=2, j--)printf("%d \n",i); ?? } 26. 以下叙述正确的是 (D) ?? A. do-while 语句构成的循环不能用其它语句构成的循环来代替。 ?? B. do-while 语句构成的循环只能用 break 语句退出。 ?? C. 用 do-while 语句构成的循环,在 while 后的表达式为非零时结束循环。 ?? D. 用 do-while 语句构成的循环,在 while 后的表达式为零时结束循环。 27. 下列程序执行后的输出结果是(A) ?? A. G ?? main() B. H C. I D. J B. 2 C. 1 D. 0

第 35 页

?? { int x='f'; printf("%c \n",'A'+(x-'a'+1)); } 28. 下列程序执行后的输出结果是 (A) ?? A. 6 B. 7 C. 8 D. 9

?? void func(int *a,int b[]) ?? { b[0]=*a+6; } ?? main() ?? { int a,b[5]; ?? a=0; b[0]=3; ?? func(&a,b); printf("%d \n,b[0]); ?? } 29. 下列程序的运行结果是 (B) ?? A. a=%2,b=%5 ?? #include ?? main() ?? { int a=2,c=5; ?? printf("a=%d,b=%d\n",a,c); } 30. 设有数组定义: char array [ ]="China"; 则数组 array 所占的空间为 (C) ?? A.4 个字节 B. 5 个字节 C.6 个字节 D. 7 个字节 B. a=2,b=5 ?? C. a=d, b=d D. a=%d,b=%d

31. 下列程序的输出结果是 (B) ?? A. 5 ?? struct abc ?? { int a, b, c; }; ?? main() ?? { struct abc s[2]={{1,2,3},{4,5,6}}; int t; ?? t=s[0],a+s[1],b; ?? printf("%d \n",t); ?? } 32. 若有以下调用语句,则不正确的 fun 函数的首部是 (C) ?? A. void fun(int m, int x[]) B. void fun(int s, int h[41]) B. 6 C. 7 D. 8

第 36 页

?? C. void fun(int p, int *s) ?? main()

D. void fun(int n, int a)

?? { ??? int a[50],n;???? fun(n, &a[9]);

? }

33. 设已有定义: char *st="how are you"; 下列程序段中正确的是 (A) ?? A. char a[11], *p; strcpy(p=a+1,&st[4]); ?? B. char a[11]; strcpy(++a, st); ?? C. char a[11]; strcpy(a, st); ?? D. char a[], *p; strcpy(p=&a[1],st+2); 34. 下列程序执行后的输出结果是 (A) ?? A. you&ne ?? mai() ?? { char arr[2][4]; ?? strcpy(arr,"you"); strcpy(arr[1],"me"); ?? arr[0][3]='&'; ?? printf("%s \n",arr); ?? } 35. 下列程序执行后的输出结果是 (B) ?? A. 6 B. 8 C. 10 D. 12 B. you C. me D. err

?? #define MA(x) x*(x-1) ?? main() ?? { int a=1,b=2; printf("%d \n",MA(1+a+b));} 36. 变量 a 所占内存字节数是 (C) ?? A. 4 ?? union U ?? { char st[4]; ?? struct A ?? { int c;? union U u;? }a; 二、填空题 1. 表达式 1<0<5 的值是 1 。 int i;? long l; }; B. 5 C. 6 D. 8

第 37 页

3. 表达式 ~(10>>1^~5) 的值是

0



2. 设变量已正确定义, 在程序段 B 中填入正确的内容,使程序段 A 和程序段 B 等价。 程序段 A for(k=s=0;k<=10;s+=a[k++]) if(a[k]<0) break; 程序段 B for(k=0,s=0; ; s+=a[k++]) if( a[k]<0 || k>10 100 ) break; 。

3. 下列程序的输出结果是 #define T 10 #define MD 3*T printf(“%d”,30/MD); 4. 下列程序的输出结果是 int k,s;

k=5, s=15



for(k=s=0;k<10&&s<=10;s+=k) k++;

printf(“k=%d,s=%d”,k,s); 5. 下列程序的输出结果是 #include <stdio.h> int f(int m) { static int k=2; k++; return k+m; } void main( ) { int s; s=f(2); printf(“%d,%dn”,s,f(s)); } 6. 对于以下递归函数 f,条用 f(3)的返回值是 -2。 5,9 。

f(int n)
第 38 页

{ return((n<=0)?n:f(n-1)+f(n-2)); } 7. 下列程序的输出结果是 int c[ ]={10,0,-10}; int *k=c+2; 2 1 p=&j; -10 。

printf(“%d”,*k--); 。

8. 下列程序的输出结果是 int k=1,j=2,*p=&k,*q=p; printf(“%d %d”,*p,*q); 9. 下列程序的输出结果是 #include <stdio.h> char *f(char *str) { return str=”fun”; }

un, g



void main( ) { char *str=”one”; printf(“%s,%cn”, f(str)+1,*f(str)+1); } 10. 下列程序的输出结果是 #include <stdio.h> void p(int *x,int y) { ++*x; y--; } 1,3 。

void main( ) { int x=0,y=3; p(&x,y); printf(“%d,%d”x,y); } 11. 下列程序的输出结果是 #include <stdio.h> { int j,k,a[2][2]; for(k=1;k<3;k++) for(j=1;j<3;j++)
第 39 页

1001



a[k-1][j-1]=(k/j)*(j/k); for(k=0;k<2;k++) for(j=0;j<2;j++) printf(”%d”,a[k][j]); } 12. 下面程序的功能是:计算 1 到 10 之间奇数之和及偶数之和,请填空。 ?? #include ?? main() ?? { int a, b, c, i; ?? a=c=0; ?? for(i=0;i<10;i+=2) ?? { a+=i; ?? b=i+1 ;

?? c+=b; ?? } ?? printf("偶数之和=%d\n",a); ?? printf("奇数之和=%d\n",c-11); ?? } ? 13. 下面程序的功能是:输出 100 以内能被 3 整除且个位数为 6 的所有整数,请 填空。 ?? #include ?? main() ?? { int i, j; ?? for(i=0; i<10 ; i++)

?? { j=i*10+6; ?? if( i % 3 != 0 ) continue;

?? printf("%d",j); ?? } ?? }

第 40 页

第 41 页

专升本《C 语言》练习题六

评卷人 得 分

一、选择题(本题共 20 小题,每题 2 分,共 40 分) ) 。A)S2_KEY B)Int ) 。A)0 C) 4s B)1 C)2 D)_char D)3

1.以下不合法的用户标识符是( 3.C 语言源程序名的后缀是( A ) .exe

2.设有 int x=11; 则表达式 (++x)%3 的值是( ) 。 B ) .cp D).c

C ) .obj

4.若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能 正确执行的语句是( C)scanf("%d",p); 5.C 语言中运算对象必须是整型的运算符是 ( A) %= 元素是( ) 。 A) a[0][4] B) a[0][3] C) a[1][4] B)#define n 5 Int a[2*n] D)int n=10,a[n] ) 。(说明:'\b'是 D) a[1][3] 7.若要求定义具有 10 个 int 型元素的一维数组 a,则以下定义语句中错误的是 A)#define N 10 Int a[N] C)int a[5+5] 退格符) A)re'hi'you C)a\bre\'hi\'y\bou A)A B) B B)abre'hi'y\bou D)a\bre\'hi\'y\\\bou ) 。 C) F D) G B)/ C) = D) 〈= ) 。 B) scanf ("%d%d%d",a,b,c) ; D)scanf("%d",&p); ) 。 A) scanf ("%d",a,b,c) ;

6.若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a 数组的第 10 个

8.语句 printf("a\bre\'hi\'y\\\bou\n");的输出结果是(

9.下列程序执行后的输出结果是( void main()

{ int x='f'; printf("%c \n",'A'+(x-'a'+1)); }

第 42 页

10.若变量已正确定义,有以下程序段 i=0; do {printf("%d,",i);}while(i++); printf("%d\n",i) 其输出结果是( ) 。 A)0,0 入无限循环 11. 有以下程序 #include { <stdio.h> void main() int i,j,m=55; for(i=1;i<=3;i++) for(j=3;j<=i;j++) m=m%j; printf("%d\n",m); }程序的运行结果是( A)0 B)1 fun(int *p) { return *p; } 该函数的返回值是( A)不确定的值 C)形参 p 中存放的值 A)10 B) 3 C) 不定值 ) 。 B)形参 p 所指存储单元中的值 D)形参 p 的地址值 ) 。 D) 0 12. 已定义以下函数 )。 C)2 D)3 B)0,1 C)1,1 D)程序进

13. 执行下面的程序段后,变量 k 中的值为( int k=3, s[2]; s[0]=k; k=s[1]*10; 14. 有以下函数 int aaa(char *s) { char *t=s; while(*t++); t--; return(t-s); }

第 43 页

以下关于 aaa 函数的功能叙述正确的是( A)求字符串 s 的长度 C)将串 s 复制到串 t 15. 有以下程序 void main() { char s[ ]={ "aeiou"},*ps; ps=s; printf("%c\n",(*ps)+4); } 程序运行后的输出结果是________。 A)a B)o C)u D)e 16. 有以下程序 #include #define F(X,Y) main() { int a=3, b=4; printf("%d\n", F(a+b, a-b)); } A)12 main() { int m[][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2; for(i=0;i<3;i++) { printf("%d",m[k][i]); } } 执行后输出结果是( A) 2 5 8 B) 3 6 9 ) 。 C) 4 5 6 程序运行后的输出结果是( B)7 C)-7 D)11 ) 。 X*Y

) 。 B)比较两个串的大小 D)求字符串 s 所占字节数

17. 有以下程序

D) 7 8 9

18. 以下关于 typedef 的叙述错误的是 A) 用 typedef 可以为各种类型说明一个新名,但不能用来为变量说明一个新名 B)用 typedef 为类型说明一个新名,通常可以增加程序的可读性 C)typedef 只是将已存在的类型用一个新的名字来代表 D)用 typedef 可以增加新类型 19. 有以下程序 #include <stdio.h> void main() { FILE *fp; int i; char ch[]=”abcd”,t; fp=fopen(“abc.dat”,”wb+”);
第 44 页

for(i=0;i<4;i++) fwrite(&ch[i],1,1,fp); fseek(fp,-2L,SEEK_END);// 说明:SEEK_END 为文件尾 fread(&t,1,1,fp); fclose(fp); printf(“%c\n”,t); } 程序执行后的输出结果是________。 A)c B)d C)a D)b 20.已知指针 p 的指向如下图所示,则执行语句 *--p;后*p 的值是( A) 20 B)30 C) 19 D) 29 a[0] a[1] a[2] a[3] a[4] 10 20 30 40 50 P 评卷人 得 分 二、填空题(本题共 10 小题,每题 1 分,共 10 分)

) 。

1.已知大写字母 A 的 ASCII 码是 65,小写字母 a 的 ASCII 码是 97,将变量 c 中大写字母转换为对应小写字母的语句是 _____ 。 2 . C 语言中用于结构化程序设计的三种基本结构是顺序结构、选择结构、 __________ 。 3.设有数组定义: char array [ ]="Student."; 则数组 array 所占的空间为 ________ 。 4 .若 输入 字符 串: abcde< 回车 >, 则 以下 while 循环 体将 执行 ______ 次。 while((ch=getchar())==’b’) printf(“*”); 5.若有定义:int *p[4];请说明它含义:定义了一个________。 6.表示“整数 x 的绝对值不大于 10”的 C 语言表达式是 _________。 7.已知字符 A 的 ACSII 码值为 65,以下语句的输出结果是_________。 char ch=’B’;printf(“%c%d\n”,ch,ch); 8 .若指针 s 指向存储单元 a[8],p 指向存储单元 a[0], 表达式 s-p 的值是 _________。 9.用以下语句调用库函数 malloc,使字符指针 st 指向具有 11 个字节的动态存 储空间,请填空。st=(char*) __________ ; 10. 设 int b=2;表达式(b<<1)&5 的值是__________。 评卷人 得 分 三、程序阅读题(本题共 6 小题,每小题 5 分,共 30 分)

1.有下列程序执行后的结果是________。 void main() { int n=0,m=1,x=0; if (!n) x=1;
第 45 页

if (m) x=2; if (x) x=3; printf(“%d\n”,x); } 2. 有以下程序执行后的结果是________。 void main() { int i; for(i=1;i<=40;i++) { if(i++%5=0) if (++i%8=0) printf("%d",i) } printf("\n") } 3. 以下程序执行后的结果是________。 void main() { char s[]="6789"; s[1]=‘\0'; printf("%s\n",s); } 4. 有以下程序执行后的结果是________。 void main() { int a=4,b=3,c=2,t=0; if(b>a&&a<c) t=a;a=c;c=t; printf("%d ",c); } 5. 有以下程序执行后的结果是________。 void main() { char s[ ]= "abcde"; s+=2; printf("%d\n",s[0]); } 6. 有以下程序执行后的结果是________。 void main() { int a=1,b=3,c=5; int *p1=&a,*p2=&b,*p=&c; *p=*p1*(*p2); printf("%d\n",c); } 评卷人 得 分

四、编程题(本题共 3 小题,共 20 分)

1.求 1+2+3+?+100 的和。 2.求 100—200 间的全部素数。
第 46 页

3.有一 3 行 4 列的矩阵,编程求其中最大元素的值以及所在的行号和列号。

第 47 页

专升本《C 语言》练习题七
一、单项选择题 1. ___D___是合法的用户自定义标识符。 A、 b-b B、float C、<fr> D、 _isw 2. 若变量已正确定义并赋值,表达式___B___不符合 C 语言语法。 A、a*b/c; B、3.14%2 C、2, b D、a/b/c 3. ___C__是不正确的字符常量。 A、'n' B、'1' C、"a" D、'101' 4. 在 C 程序中,用___B__表示逻辑值“真” 。 A、1 B、非 0 的数 C、非 1 的数 D、 大于 0 的数 5. __C____把 x、y 定义成 float 类型变量,并赋同一初值 3.14。 A、float x, y=3.14; B、float x, y=2*3.14; C、float x=3.14, y=x=3.14; D、float x=y=3.14; 6. 若变量已正确定义,表达式___C___的值是 2。 A、2&3 B、1<<1 C、a==2 D、1^3 7. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和__C____等价。 A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1; 8. 设变量定义为“int a, b;” ,执行下列语句时,输入_D____,则 a 和 b 的值都是 10。 scanf("a=%d, b=%d",&a, &b); A、10 10 B、10, 10 C、a=10 b=10 D、a=10, b=10 9. 下列程序的输出结果是__D___。 fun(int a, int b, int c) { c =a*b; } void main( ) { int c; fun(2,3,c); printf(”%dn”,c); } A、0 B、1 C、6 D、无法确定 10. 在 C 程序中,若对函数类型未加说明,则函数的隐含类型为__A___。 A、int B、double C、void D、char 11. 表达式 strlen(”hello”) 的值是___B____。 A、 4 B、 5 C、 6 D、 7 12. 设变量定义为“int a[4];” ,则表达式__D____不符合 C 语言语法。 A、*a B、a[0] C、a D、a++ 13. 设变量定义为“int x, *p=&x;” ,则&*p 相当于__A___。 A、p B、*p C、x D、*&x 14. 若变量已正确定义,_A___不能使指针 p 成为空指针。
第 48 页

A、p=EOF B、p=0 C、p=’ ’ D、p=NULL 15. 对于以下的变量定义,表达式__D____不符合 C 语言语法。 struct node { int len; char *pk; } x = {2, "right"}, *p = &x; A、p->pk B、*p.pk C、*p->pk D、*x.pk 16. 有如下程序 int runc(int a,int b) { return(a+b);} main0 { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%\d\n”,r); } 该程序的输出的结果是 (D) A) 12 B) 13 C) 14 D) 15 17. 对于基类型相同的两个指针变量之间,不能进行的运算是 (C) A) < B) = C) + D) 18. 有如下程序 long fib(int n) { if(n>2) return(fib(n-1)+fib(n-2)); else return(2); } main0 { printf(“%d\n”,fib(3)); 该程序的输出结果是 (B) A} 2 B} 4 C} 6 D} 8 19. 有如下定义 struct person{char name[9]; int age;}; strict person class[10]={“Johu”, 17, “Paul”, 19 “Mary”, 18, “Adam 16,}; 根据上述定义,能输出字母 M 的语句是 (D) A) prinft(“%c\n”,class[3].mane); B) pfintf(“%c\n”,class[3].name[1]); C) prinft(“%c\n”,class[2].name[1]); D) printf(“%^c\n”,class[2].name[0]); 20. 以下所列的 C 语言常量中,错误的是 (B) A) 0xFF B) 1.2e0.5 C) 2L D) ‘\72’ 21. 有以下程序段 int k=0 while(k=1)k++;
第 49 页

while 循环执行的次数是 (A) A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行 1 次 22. 以下程序的输出结果是 (C) A) 0 B) 29 C) 31 D) 无定值 fun(int x, int y, int z) { z=x*x+y*y; } main() { int a=31; fun(5,2,a); printf(“%d”,a); } 23. 下列程序段的输出结果是 (A) A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2 void fun(int *x, int *y) { printf(“%d %d”, *x, *y); *x=3; *y=4;} main() { int x=1,y=2; fun(&y,&x); printf(“%d %d”,x, y); } 24. 当调用函数时,实参是一个数组名,则向函数传送的是 (B) A) 数组的长度 B) 数组的首地址 C) 数组每一个元素的地址 D) 数组每个元素中的值 25. 以下程序的输出结果是 (A) A) 1 B) 2 C) 3 D) 4 long fun( int n) { long s; if(n= =1 || n= =2) s=2; else s=n-fun(n-1); return s; } main() { printf(“%ld\n”, fun(3)); } 26. 以下程序的输出结果是 (B) A) 16 B) 2 C) 9 D) 1 #define SQR(X) X*X main() { int a=16, k=2, m=1; a/=SQR(k+m)/SQR(k+m); printf(“d\n”,a); } 27. 以下函数返回 a 所指数组中最小的值所在的下标值 fun(int *a, int n)
第 50 页

{ int i,j=0,p; p=j; for(i=j;i<N;I++) if(a[i]<A[P])__________; return(p); } 在下划线处应填入的是 (D) A) i=p B) a[p]=a[i] C) p=j D) p=i 二、填空题 1. 表示“x≥y≥z”的 C 表达式是___ x>=y && y>=z ____。 2. 下列程序段的输出是__1____。 printf("%on", 010<<1^1); 3. 下列程序段的输出是__6,90____。 int k; float s; for (k=0, s=0; k < 7; k ++) s += k/2; printf("%d, %fn", k, s); 4. 下列程序段的输出是__5,25_____。 #define f(a, b, x) a*x+b printf("%d, %dn", f(3,2,1), f(6, 5, f(3, 2, 1))); 5. 下列程序段的输出是_*#*#____。 main() { int k; for(k=1; k<5; k++) { if(k % 2) printf("*"); else continue; printf("#"); } } 6. 下列程序段的输出是__5 8___。 # include <stdio.h> int f(int x) { static y=1; y++; x += y; return x; } void main() { int k; k=f(3); printf("%d %dn", k, f(k)); } 7. 下列程序段的输出是___5__。
第 51 页

int *p, *q, k = 5 , j = 6 ; q = &k ; p = q ; q = &j ; printf("%d", *p); 8. 函数 void f(char s[ ], char t[ ]) { int k=0; while (s[k]=t[k]) k++; } 等价于 void f(char *s, char *t) { while (_*s++=*t++____); } 9. 下列程序段的输出是_ ne,s ____。 char *a[2]={"one", "two"}, **p=a; printf("%s,", *(p++)+1); printf("%cn", **p-1); 10. 下列程序编译后生成 t.exe, 运行 t input output zoo oil 的 输出结果是_zoo___。 void main(int argc, char * argv[ ]) { int k; char *p=argv[1]; for(k=2; k<argc; k++) if(strcmp(argv[k], p)>0) p=argv[k]; printf("%sn", p); } 11. 下列程序调用 swap 函数交换 a 和 b 的值,并输出交换后的 a 和 b 的值。程 序的输出结果是:After swap 5, 3。 void main( ) { int a=3, b=5; swap( &a, &b ) ; printf("After swap %d, %d", a, b); } swap( int *p, int *q ) { int t; t=*p; ; *p=*q ; *q=t ; } 三、填空题 1.若 a 是 int 型变量,且 a=5,则下面表达式的值为:__________________。 2 . C 语言程序中引用标准输入输出库函数,必须在每个源文件的首部写下 #include <__stdio.h_____stdlib.h______> 。 3. 若 int 型变量占内存 2 个字节、 double 型变量占内存 8 个字节, 有如下定义:
第 52 页

union data { int i; double d; }a;则变量 a 在内存中所占字节数为:__8____。 4.当文件关闭成功后,fclose 函数的返回值为:__0 _。 四、阅读程序题 1.下面程序的运行结果是___8,_3, 5___。 #include <stdio.h> main() { int i=2,j=3,k; k=i+j; { int k=8; if(i=3) printf( “%d” ,k) ; else printf( “%d” ,j) ; } printf( “%d%d” ,i,k) ; } 2.下面程序的运行结果是__ABCDEFG___。 #include <stdio.h> #define SIZE 8 void main() { char s[]=“GDBFHACE” ; int i,j,t; for(i=0;i<SIZE;i++) { for(j=i+1;j<=SIZE;j++) if(s[i]> s[j]) { t= s[i]; s[i] = s[j]; s[j] =t; } } for(i=0;i<SIZE;i++) printf( “%c” ,s[i]) } 3.下面程序的运行结果是__4, 3, 25, 7__。 #include <stdio.h> int fun(int a,int b,int *cn,int *dn, ) { *cn=a*a + b*b; *dn= a*a - b*b; a=5;b=6;} main() { int a=4,b=3,c=5,d=6; fun(a,b,&c,&d) ; printf( “a=%d,b=%d,c=%d,d=%d\n” ,a,b,c,d) ; } 4.下面程序的运行结果是: 6, 10 #include <stdio.h >
第 53 页

int fun(int x) { static y=2; y++; x+=y; return x; } void main() { int k; k=fun(3) ; printf( “%d” ,%d\n” , k, fun(k) ) ; } 5.下面程序的运行结果是____15___。 #include <stdio.h > main() { int s=0,m; for(m=7;m>=3;m-- ) switch(m) { case 1: case 4: case 7:s++;break; case 2: case 3: case 6:s+=2; case 0: case 5:s+=3;break; } printf( “s=%d\n” ,s) ; } 五、完善程序题 1.下面程序的功能是找出 100 至 200 之间不能被 3 整除但能被 5 整除的数。 #include <stdio.h > main() { int m; for(m=100;m<=200;m++) if( m%3!=0 && m%5==0 ) printf( “%d\t” ,m) ; } 2. 下面程序通过指向整型变量的指针将数组 m[4][3]d 的内容按 4 行 3 列的格式 输出,请给 printf()填入适当的参数,使之通过指针 p 将数组元素按要求输 出。 #include <stdio.h > main()
第 54 页

{ int m[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}; int i,j,*p=m; for(i=0;i<4;i++) { for(j=0;j<3;j++) printf( “%4d” ,__*((p+i)+j)___) ; } } 3.下面程序能够完成交换数组 a 和数组 b 中的对应元素的功能。 #include <stdio.h > swap(int *p1,int *p2) { int temp; __________________________ } main() { int a[5]={1,3,5,7,9}; int b[5]={2,4,6,8,10}; int i; for(i=0;i<5;i++) swap(&a[i],&b[i]) ; for(i=0;i<5;i++) printf( “a[%d]=% —4d” ,i,a[i]) printf( “\n” ) ; for(i=0;i<5;i++) printf( “b[%d]=% —4d” ,i,b[i]) printf( “\n” ) ; } 4.在某大学举行的演讲比赛中,有十个评委为参赛的选手打分,分数为 0~100 分。选手最后得分为:去掉一个最高分和一个最低分后其余八个分数的平均值 #include <stdio.h > main() { int max,min,score,i; int sum=0; max=0;min=100; for(i=0;i<10;i++) { printf( “Input number %d=” ,i+1) ; scanf( “%d” ,&score) ; sum+=score; if(max<score) max=score;
第 55 页

if(min>score) min=score; } printf( “Canceled max score:%d\nCanceled min score:%d\n” ,max,min) ; printf( “Average score:%.1f\n” ,______________________) ; } 5.把指针 str 所指的字符串按相反的顺序赋给 rev[ ]。 #include <stdio.h > main() { char *str=“abcdefg” ; char rev[10]; int i; printf( “\n” ) ; for(i=0;i<7;i++) _________________________ rev[i]=‘\0’ ; printf( “%s\n” ,rev) ; } 六、编程改错题 1. #include <stdio.h> char a=“Beijing” main( ) { printf(“%s is one city in China.\n”,a); p1( ); p2( ); } p1( ) { printf(“%s is one of the biggest city”,a); return; } p2( ) { printf(“in the world.\n”); return; } 错误的行是:___________________________________ 改为:_________________________________________

2.求 k ?1

?k ? ?k
k ?1

100

50

2

??

1 k ?1 k

10

⑴ #include <stdio.h>
第 56 页

⑵ main() ⑶ { ⑷ int n1=100,n2=50,n3=10; ⑸ int k; ⑹ float s1=0,s2=0,s3=0; ⑺ for(k=1;k<=n1;k++) ⑻ s1=s1+k; ⑼ for(k=1;k<=n2;k++) ⑽ s2=s2+k*k; ⑾ for(k=1;k<=n3;k++) ⑿ s3=s3+k/10; ⒀ printf( “total=%8.2f\n” ,s1+s2+s3) ; ⒁ } 错误的行是:___________________________________ 改为:_________________________________________ 3.本程序能够在屏幕中央显示出如下图形。 ####### ##### ### # ⑴ #include <stdio.h> ⑵ void main() ⑶ { ⑷ int i,j,k; ⑸ for(i=1;i<=4;i++) ⑹ { ⑺ for(k=1;k<=36+i;k++) ⑻ printf( “” ) ; ⑼ for(j=1;j<=i;j++) ⑽ printf( “#” ) ; ⑾ printf( “\n” ) ; ⑿ } ⒀ } 错误的行是:___________________________________ 改为:_________________________________________

第 57 页

专升本《C 语言》练习题八
一、 填空題(每空 1 分,共 20 分) 1.C 程序是由 构成的,一个 C 源程序至少且仅包含一个 、 。

2.C 语言规定标识符只能由 符必须为 或下划线。

和下划线 3 种字符组成,且第一个字

3.著名计算机科学家沃思提出的一个公式:数据结构+算法= 4.Turbo C++中,若有语句:int a;则 a 的范围是-32768~ 5.C 中的转义符“\n”表示: 6.表达式 21 % 4 的值为 7.C 语言中没有专门的 存,必须使用字符数组。 8.已知 a=79.345,则表达式 (int)a 的值为 9.表达式 3 & 2 的值是 10. 若 a=5,经 a+=3;后 a= 。 。 。 。 。

。 。

变量,如果想将一个字符串存放在变量中以便保

11.已知 ch='B',则表达式【(ch>='A ' && ch<='Z')? (ch+32):ch 】的值为 12.C 中定义符号常量 PI 为 3.14159 的宏命令是 13.函数形参和调用的实参是普通变量时,参数按 14.C 中逻辑运算符的优先次序是: ? ? 。 方式进行传递。 。



15.定义一个共用体变量,共三个成员分别是字符型、整形和浮点型,则该共用 体变量所占内存长度为 个字节。

二、 单项选择题(每题 2 分,共 40 分) 1.下列 C 语言标识符中,合法的是( ) A. if B. return C. 23a D. a23 的

2.欲从键盘给整型变量 a 赋值 3, b 赋值 2, 则对应语句 scanf("%d,%d",&a,&b); 输入格式是) A. 3 2 B. 2,3 C. 2 3 D. 3,2

3. C 语言源程序文件经过 C 编译程序编译连接之后生成的文件后缀名是(
第 58 页



A. .exe

B. .obj

C. .bat

D. .c

4.结构化程序设计的三种基本结构是( ) A. 顺序结构、复杂结构、循环结构 B. 顺序结构、复杂结构、分支结构 C. 顺序结构、分支结构、选择结构 D. 顺序结构、选择结构、循环结构 5.以下表达式中,值为 0 的是() A. 4%5 B. 4/5.0 C. 4/5 D. 4<5 )

6.设下列表达式中所涉及的变量均已正确定义, 则不符合 C 语言语法的是 ( A. 4&&3 B. a++ C. a=b=5 D. int(3.14159) )

7.设变量定义为【int a[3]={1,3,5}, *p=&a[0]+1; 】 ,则*p 的值是( A. 2 B. 3 C. 4 D. &a[0]+1 ) D. 内部变量

8. 在 C 语言程序中,在函数内部定义的变量称为( A. 全局变量 B. 外部变量 C. 全程变量

9.对于以下的变量定义,正确的表达式是( ) struct node { char s[10]; int k; } p[4]; A. p->k=2 B. p[0]->k=2 C. p(0)->k=2 D. p->s='a' )

10.若变量 c 为 char 类型,则能正确判断出 c 为小写字母的表达式是( A. (c>= 'a')||(c<= 'z') C. (c>= 'a')&&(c<= 'z') B. 'a'<=c<= 'z' D. ('a'<=c)and ('z'>=c) )

11.C 语言中以“只读”方式打开文件,应选择的参数是( A. o B. w C. a D. r

12.设变量定义为【int a[2][3]={1,2,3,4,5,6}, *p=a[1]; 】 ,则 p 的值是( ) A. 数组 a 的首地址 C. 数组 a 的第“1”行的首地址 13.用链表表示线性表的优点是( ) B. 数组 a 的第 1 个元素的地址 D. 数组 a 的第“1”列的首地址

第 59 页

A. 便于随机存取

B. 便于插入和删除操作

C. 花费的存储空间较顺序存储少 D. 数据元素的物理顺序与逻辑顺序相同 14. 结构化程序设计主要强调的是( ) A. 程序的规模 C. 程序的效率 B. 程序设计语言的先进性 D. 程序清晰的结构

15.以下表达式中,不正确的字符常量是( ) A. 'n’ B. "a" C. '2’ D. '\101’ )

16. 若【int x=12,*p=x; 】 ,则正确的赋值表达式是( A. p=x B. p=*x C. *p=x D. *p=*x

17.设有如下程序段:int i=5; A. 5 B. 6 C. 10

for(;i<=10;)i++;执行完这段程序后,i 的值是( D. 11 )



18.设有如下程序段:int i=15; while(i<15)i++; 则以下描述中正确的是( A. 循环体语句执行 15 次 C. 循环体语句一次也不执行 B. 这是一个死循环 D. 循环体语句只执行一次

19.设有如下程序段:char a[2][6]={"abcde","uvwxy"},*p=a[1]; printf("\n%s",p);这段程序执行后,屏幕输出的结果是( A. abced B. uvwxy C. b D. v )

20.设有如下程序段: union{int i; char c;}a; a.i=12; a.c='A'; ) printf("\n%d",a.i);

这段程序执行后,屏幕输出的结果是( A. 12 B. 97 C. 65 D. A

三、 程序填空(每空 3 分,共 15 分) 1.已知 fibonacci 数列:1,1,2,3,5,8,......,它可由下面公式表述: F(1)=1 F(2)=1 F(n)=F(n-1)+F(n-2) n=1 n=2 n>2

以下程序的功能是求 F(49)的值,请在下划线处填上正确内容,使程序能正确运 行。 #include <math.h> #include <stdio.h>
第 60 页

#include <conio.h> main() { int i; double f[50]; f[1]= ;f[2]= ;

for(i=3;i<=49;i++) f[i]= ;

printf("f[49]=%12.0lf",f[49]); } 2.以下程序的功能是用递归法求 n!,请在下划线处填上正确的语句,使程序能正 确运行。 #include <stdio.h> long f(int n) { if(n==1)return( else return ( } main() { int n; printf("n="); scanf("%d",&n); printf("%d!=%ld",n,f(n)); } 四、 写出以下程序运行结果(每题 4 分,共 12 分) 1.以下程序输出的结果是: #include "stdio.h" void main() {char s[]="hello\nworld"; printf("%s",s); } ); );

第 61 页

2.以下程序输出的结果是: #include "stdio.h" void main() {int i,g,s,b,q; for(i=1234;i<1236;i++) { g=i/1 %10; s=i/10 % 10; b=i/100 % 10; q=i/1000 % 10;

printf("%d%d%d%d\n",g,s,b,q); } } 3. 以下程序输出的结果是: #include "stdio.h" void main(){ char ch[]="I-love-Great-Wall-of-China!"; } 五、 编程题(第 1 题 5 分,第 2 题 8 分,共 13 分) 1.将一张百元大钞对换成 1 元、5 元、10 元的小钞,要求每种小钞最少要一张, 编程求共有多少种对换方法。 2.编程输出所有"水仙花数"。 (一个三位数等于它每一位数字的立方和,那么我们 称这个数为"水仙花数" ) 一、 填空題(每空 1 分,共 20 分) 1 2 3 4 5 6 函数 字母 程序 32767 换行 1 数字 主函数 或 main 函数 字母 char *p=ch; printf("%c",*(p+5));

第 62 页

7 8 9 10 11 12 13 14 15

字符串 79 2 8 b 或 98 #define PI 3.14159 值传递 或 传值 ! 4 && ||

二、 单项选择题(每题 2 分,共 40 分) 1 D 11 D 2 D 12 C 3 A 13 B 4 D 14 D 5 C 15 B 6 D 16 C 7 B 17 D 8 D 18 C 9 A 19 B 10 C 20 C

三、 程序填空(每空 3 分,共 15 分) 1 2 1 1 1 n*f(n) f[i-1]+f[i-2]

四、 写出以下程序运行结果(每题 4 分,共 12 分) 1. Hello world

评分标准:输出内容正确扣得分,格式正确得 2 分 2. 5321 3. e

五、 编程题(第 1 题 5 分,第 2 题 8 分,共 13 分) 1.参考程序:

第 63 页

#include "stdio.h" void main() { int y,w,s,n=0; for(y=1;y<100;y++) for(w=1;w<20;w++) for(s=1;s<10;s++) if(100==y+w*5+s*10)n++; printf("n=%d",n); } 评分标准:程序结构正确得 3 分,算法正确得 2 分 2.参考程序: #include "stdio.h" void main() { int i,g,s,b,m; for(i=100;i<=999;i++) {g=i%10; s=i/10%10; b=i/100%10; m=g*g*g+s*s*s+b*b*b; if(i==m)printf("\n%d",i); } }

第 64 页

专升本《C 语言》练习题九
一、单项选择题 1. ___D___是合法的用户自定义标识符。 A、 b-b B、float C、<fr> D、 _isw

2.若变量已正确定义并赋值,表达式___B___不符合 C 语言语法。 A、a*b/c; B、3.14%2 C、2, b D、a/b/c

3. ___C__是不正确的字符常量。 A、'n' B、'1' C、"a" D、'101'

4. 在 C 程序中,用___B__表示逻辑值“真” 。 A、1 B、非 0 的数 C、非 1 的数 D、 大于 0 的数

5. __C____把 x、y 定义成 float 类型变量,并赋同一初值 3.14。 A、float x, y=3.14; C、float x=3.14, y=x=3.14; B、float x, y=2*3.14; D、float x=y=3.14;

6.若变量已正确定义,表达式___C___的值不是 2。 A、2&3 B、1<<1 C、a==2 D、1^3

7.若变量已正确定义,语句“if(a>b) k=0; else k=1;”和__C____等价。 A、k=(a>b)?1:0; C、k=a<=b; B、k=a>b; D、a<=b ? 0 : 1;

8.设变量定义为“int a, b;” ,执行下列语句时,输入_D____,则 a 和 b 的值都是 10。 scanf("a=%d, b=%d",&a, &b); B、10, 10 C、a=10 b=10 D、a=10, b=10

A、10 10

9.下列程序的输出结果是__D___。 fun(int a, int b, int c) { c =a*b; void main( ) { int c; A、0 fun(2,3,c); B、1 printf(”%dn”,c); C、6
第 65 页

}

} D、无法确定

10.在 C 程序中,若对函数类型未加说明,则函数的隐含类型为__A___。 A、int B、double C、void D、char

11.表达式 strlen(”hello”) 的值是___B____。 A、 4 B、 5 C、 6 D、 7

12.设变量定义为“int a[4];” ,则表达式__D____不符合 C 语言语法。 A、*a B、a[0] C、a D、a++

13.设变量定义为“int x, *p=&x;” ,则&*p 相当于__A___。 A、p B、*p C、x D、*&x

14.若变量已正确定义,_A___不能使指针 p 成为空指针。 A、p=EOF B、p=0 C、p=’ ’ D、p=NULL

15.对于以下的变量定义,表达式__D____不符合 C 语言语法。 struct node { int len; A、p->pk 16. 有如下程序 ?? int runc(int a,int b) ??{ return(a+b);} ?? main0 ??{ int x=2,y=5,z=8,r; ?? r=func(func(x,y),z); ?? printf(“%\d\n”,r); ??}??该程序的输出的结果是 (D) ?? A) 12 B) 13 C) 14 D) 15 char *pk; } x = {2, "right"}, *p = &x; C、*p->pk D、*x.pk

B、*p.pk

17. 对于基类型相同的两个指针变量之间,不能进行的运算是 (C) ?? A) < B) = C) + D) 18. 有如下程序 ?? long fib(int n) ??{ if(n>2) return(fib(n-1)+fib(n-2)); ?? else return(2); ??}

第 66 页

?? main0 ??{ printf(“%d\n”,fib(3)); ?该程序的输出结果是 (B) ?? A} 2 B} 4 C} 6 D} 8 19. 有如下定义 ?? struct person{char name[9]; int age;}; ?? strict person class[10]={“Johu”, 17, ??“Paul”, 19 ??“Mary”, 18, ??“Adam 16,}; 根据上述定义,能输出字母 M 的语句是 (D) ?? A) prinft(“%c\n”,class[3].mane); ?? B) pfintf(“%c\n”,class[3].name[1]); ?? C) prinft(“%c\n”,class[2].name[1]); ?? D) printf(“%^c\n”,class[2].name[0]); 20. 以下所列的 C 语言常量中,错误的是 (B) ?? A) 0xFF B) 1.2e0.5 C) 2L D) ‘\72’ 21. 有以下程序段 ?? int k=0 ?? while(k=1)k++; ?? while 循环执行的次数是 (A) ?? A) 无限次 ?? C) 一次也不执行 B) 有语法错,不能执行 D) 执行 1 次

22. 以下程序的输出结果是 (C) ?? A) 0 B) 29 C) 31 D) 无定值

?? fun(int x, int y, int z) ??{ z=x*x+y*y; } ?? main() ??{ int a=31; ?? fun(5,2,a); ?? printf(“%d”,a);

第 67 页

??} ? 23. 下列程序段的输出结果是 (A) ?? A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2

?? void fun(int *x, int *y) ??{ printf(“%d %d”, *x, *y); *x=3; *y=4;} ?? main() ??{ int x=1,y=2; ?? fun(&y,&x); ?? printf(“%d %d”,x, y); ??} 24. 当调用函数时,实参是一个数组名,则向函数传送的是 (B) ?? A) 数组的长度 ?? C) 数组每一个元素的地址 25. 以下程序的输出结果是 (A) ?? A) 1 B) 2 C) 3 D) 4 B) 数组的首地址 D) 数组每个元素中的值

?? long fun( int n) ??{ long s; ?? if(n= =1 || n= =2) s=2; ?? else s=n-fun(n-1); ?? return s; ??} ?? main() ??{ printf(“%ld\n”, fun(3)); } 26. 以下程序的输出结果是 (B) ?? A) 16 B) 2 C) 9 D) 1

??#define SQR(X) X*X ?? main() ??{ int a=16, k=2, m=1; ?? a/=SQR(k+m)/SQR(k+m);

第 68 页

?? printf(“d\n”,a); ??} 27. 以下函数返回 a 所指数组中最小的值所在的下标值 ?? fun(int *a, int n) ??{ int i,j=0,p; ?? p=j; ?? for(i=j;i<N;I++) ?? if(a[i]<A[P])__________; ?? return(p); ??}??在下划线处应填入的是 (D) ?? A) i=p B) a[p]=a[i] C) p=j D) p=i 二、填空题 1.表示“x≥y≥z”的 C 表达式是___ x>=y && y>=z ____。 2.下列程序段的输出是__1____。 printf("%on", 010<<1^1); 3.下列程序段的输出是__6,90____。 int k; float s;

for (k=0, s=0; k < 7; k ++) s += k/2; printf("%d, %fn", k, s); 4.下列程序段的输出是__5,25_____。 #define f(a, b, x) a*x+b printf("%d, %dn", f(3,2,1), f(6, 5, f(3, 2, 1))); 5.下列程序段的输出是_*#*#____。 main() { int k; for(k=1; k<5; k++) { if(k % 2) printf("*"); } }
第 69 页

else continue;

printf("#");

6.下列程序段的输出是__5 8___。 # include <stdio.h> int f(int x) { static y=1; void main() { int k; k=f(3); printf("%d %dn", k, f(k)); } 7.下列程序段的输出是___5__。 int *p, *q, k = 5 , j = 6 ; p=q; q = &j ; y++; x += y; return x;}

q = &k ;

printf("%d", *p); 8.函数 void f(char s[ ], char t[ ]) { int k=0; while (s[k]=t[k]) k++; }

等价于 void f(char *s, char *t) { while (_*s++=*t++____); }

9. 下列程序段的输出是_ ne,s ____。 char *a[2]={"one", "two"}, **p=a; printf("%s,", *(p++)+1); printf("%cn", **p-1); 10. 下列程序编译后生成 t.exe, 运行 t __zoo___。 void main(int argc, char * argv[ ] ) { int k; char *p=argv[1]; input output zoo oil 的输出结果是

for(k=2; k<argc; k++) if(strcmp(argv[k], p)>0) p=argv[k]; printf("%sn", p); }
第 70 页

11.下列程序调用 swap 函数交换 a 和 b 的值,并输出交换后的 a 和 b 的值。程序 的输出结果是:After swap 5, 3。 void main( ) { int a=3, b=5; swap( &a, &b );

printf("After swap %d, %d", a, b); } swap( int *p, int *q ) { int t; t=*p; ; *p=*q ; *q=t ; }

第 71 页

专升本《C 语言》练习题十
一.单项选择题 1.以下定义语句中正确的是 (C) A)char a='A'b='B'; B)float a=b=10.0;? C)int a=10,*b=&a; D)float *a,b=&a;

2.下列运算符中,优先级最高的是 (A) 。 A. -> B. ++ C. && D. =

3. 表达式!(x>0&&y>0)等价于 (A) 。 A. ! (x>0) || ! (y>0) B. !x>0 || !y>0 C. !x>0 && !y>0 D. !(x>0) && ! (y>0)

4. 有以下程序运行后的输出结果是(B) ? main() { int a=666,b=888;? printf("%d\n",a,b); } ? A)错误信息 5. 有以下程序 ?? main() ?? { int i; ?? for(i=0;i<3;i++) ?? switch(i) ?? {?? case 0:printf("%d",i); ?? ?? case 2:printf("%d",i); default:printf("%d",i);?? } B)666 C)888 D)666,888

?? }?? 程序运行后的输出结果是 (C) ?? A)022111 B)021021 C)000122 D)012

6. 若 x 和 y 代表整型数,以下表达式中不能正确表示数学关系|x-y|<10 的是 (C) ? A)abs(x-y)<10 ? C)!(x-y)<-10||!(y-x)>10 B)x-y>-10&& x-y<10 D)(x-y)*(x-y)<100

7. 数组定义为,int a[11][11]; 则数组 a 的元素个数为: (D) A. 12 B. 144 C. 100 D. 121

8. 对于以下的变量定义,不正确的表达式是: (D) 。
第 72 页

struct node { A.p->k=2;

int

j,k;

}x,*p=&x; C.x . k=2 D.x->k=2

B.(*p).k=2;

9. 不正确的赋值或赋初值的方式是 (B) 。 A. char str[ ]=”string”; C. char *p=”string”; B. char str[10]; str=”string”; D. char *p; p=”string”;

10. 设程序中不再定义新的变量,写出在函数 main 中可以使用的所有变量为: (B) #include <stdio.h> int z; int p(int x) { static int y; return (x+y); }

void main( ) { A. a,b 11.有以下程序 ?? main() ?? { int i=0,x=0; ?? for (;;) ?? { ?? if(i==3||i==5) continue; ?? if (i==6) break; ?? i++; ?? s+=i; ?? }; ?? printf("%d\n",s); ?? }?? 程序运行后的输出结果是 (D) ?? A)10 12.有以下程序 ?? main() B)13 C)21 D)程序进入死循环 int a,b; printf(“%dn”, p(a)); B. a,b,z ?? } D. a,b,x,y,z

C. a,b,y,z

第 73 页

?? { char a,b,c,d; ?? scanf("%c,%c,%d,%d",&a,&b,&c,&d); ?? printf("c,%c,%c,%c\n",a,b,c,d); ?? } 若运行时从键盘上输入:6,5,65,66<回车>。则输出结果是(A) A)6,5,A,B B)6,5,65,66 C)6,5,6,5 D)6,5,6,6

13.s12 和 s2 已正确定义并分别指向两个字符串。若要求:当 s1 所指串大于 s2 所指串时,执行语句 S;则以下选项中正确的是 (D) A)if(s1>s2)S; C)if(strcmp(s2,s1)>0)S; B)if(strcmp(s1,s2))S; D)if(strcmp(s1,s2)>0)S; ?? p[0]=a[1];

14.有以下定义和语句 int a[3][2]={1,2,3,4,5,6,},*p[3]; 则*p[0]+1)所代表的数组元素是 (C) ? A)a[0][1] B)a[1][0] C)a[1][1] D)a[1][2]

15.程序中对 fun 函数有如下说明 void *fun(); 此说明的含义是:(C) ? A)fun 了数无返回值 ? B)fun 函数的返回值可以是任意的数据类型 ? C)fun 函数的返回值是无值型的指针类型 ? D)指针 fun 指向一个函数,该函数无返回值 16.有以下程序 ?? void fun(int *a,int i,int j) ?? { int t; ?? if(i<J) ?? { t=a;a=a[j];a[j]=t; ?? i++; j--; ?? fun(a,i,j); ?? } ?? } ?? main() ?? { int x[]={2,6,18},i; ?? fun(x,0,3);

第 74 页

?? for(i=0;i<4;i++) printf("%2d",x); ?? printf("\n"); ?? } 程序运行后的输出结果是 (C) ?? A)1 2 6 8 B) 8 6 2 1 C) 8 1 6 2 D)8 6 1 2

? 17.有以下说明和定义语句 ?? struct student ?? { int age; char num[8];}; ?? struct student stu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}}; ?? struct student *p=stu; ?? 以下选项中引用结构体变量成员的表达式错误的是 (D) ?? A) (p++)->num B)p->num C)(*p).num D)stu[3].age

18.已定义 ch 为字符型变量,以下赋值语句中错误的是 (A) ? A)ch='\'; B)ch=62+3; C)ch=NULL; D)ch='\xaa';

19.以下选项中不能正确把 cl 定义成结构体变量的是 (B) ?? A)typedef struct ??{ int red; { int red; ?? int green; int green; ?? int blue; int blue; ??} COLOR; }; ?? COLOR cl; ?? C)struct color ??{ int red; { int red; ?? int green; int green; ?? int blue; int blue; ??} cl; } cl; 20.有以下程序 ?? fun(int a, int b) ??{ if(a>b) return(a); ?? else return(b); D)struct B)struct color cl

第 75 页

??} ?? main() ??{ int x=3, y=8, z=6, r; ?? r=fun(fun(x,y), 2*z); ?? printf("%d\n", r); ??} ??程序运行后的输出结果是 (D) ?? A)3 B)6 C)8 D)12

21.有以下程序段 ?? main() ??{ int a=5,*b,**c;? c=&b; b=&a;????} ??程序在执行了 c=&b;b=&a;语句后,表达式:**c 的值是 (C) ?? A)变量 a 的地址 B)变量 b 中的值 C)变量 a 中的值 D)变量 b 的地址 22. 设有 int x=11; 则表达式 (x++ * 1/3) 的值是 (A) ?? A) 3 B) 4 C) 11 D) 12

23. 下列程序的输出结果是 (C) ?? A) 3 ?? main() ?? { double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf("%d \n", d*y); } B) 3.2 C) 0 D) 3.07

24. 下列变量定义中合法的是 (A) ?? A) short _a=1-.le-1; ?? C) long do=0xfdaL; B) double b=1+5e2.5; D) float 2_and=1-e-3;

25. 以下循环体的执行次数是 (C) ?? A) 3 ?? main() ?? { int i,j; for(i=0,j=1; i<=j+1; i+=2, j--)printf("%d \n",i); } 26. 以下叙述正确的是 (D) ?? A) do-while 语句构成的循环不能用其它语句构成的循环来代替。 ?? B) do-while 语句构成的循环只能用 break 语句退出。 B) 2 C) 1 D) 0

第 76 页

?? C) 用 do-while 语句构成的循环,在 while 后的表达式为非零时结束循环。 ?? D) 用 do-while 语句构成的循环,在 while 后的表达式为零时结束循环。 27. 下列程序执行后的输出结果是(A) ?? A) G ?? main() B) H C) I D) J

{ int x='f'; printf("%c \n",'A'+(x-'a'+1)); }

28. 下列程序执行后的输出结果是 (A) ?? A) 6 B) 7 C) 8 D) 9

?? void func(int *a,int b[]) ?? { b[0]=*a+6; } ?? main() ?? { int a,b[5]; ?? a=0; b[0]=3; ?? func(&a,b); printf("%d \n,b[0]); 29. 下列程序的运行结果是 (B) ?? A) a=%2,b=%5 ?? #include ?? main() { int a=2,c=5; printf("a=%d,b=%d\n",a,c); } B) a=2,b=5 C) a=d, b=d D) a=%d,b=%d }

30. 设有数组定义: char array [ ]="China"; 则数组 array 所占的空间为 (C) ?? A) 4 个字节 B) 5 个字节 C) 6 个字节 D) 7 个字节

31. 下列程序的输出结果是 (B) ?? A) 5 ?? struct abc ?? { int a, b, c; }; ?? main() ?? { struct abc s[2]={{1,2,3},{4,5,6}}; int t; ?? t=s[0],a+s[1],b; ?? printf("%d \n",t); ?? } 32. 若有以下调用语句,则不正确的 fun 函数的首部是 (C) B) 6 C) 7 D) 8

第 77 页

?? A) void fun(int m, int x[]) ?? C) void fun(int p, int *s) ?? main() ?? { ? ?? int a[50],n; ?? ? ?? fun(n, &a[9]); ?? ? ?? }

B) void fun(int s, int h[41]) D) void fun(int n, int a)

33. 设已有定义: char *st="how are you"; 下列程序段中正确的是 (A) ?? A) char a[11], *p; strcpy(p=a+1,&st[4]); ?? B) char a[11]; strcpy(++a, st); ?? C) char a[11]; strcpy(a, st); ?? D) char a[], *p; strcpy(p=&a[1],st+2); 34. 下列程序执行后的输出结果是 (A) ?? A) you&ne ?? mai() ?? { char arr[2][4]; ?? strcpy(arr,"you"); strcpy(arr[1],"me"); ?? arr[0][3]='&'; ?? printf("%s \n",arr); ?? } 35. 下列程序执行后的输出结果是 (B) ?? A) 6 B) 8 C) 10 D) 12 B) you C) me D) err

?? #define MA(x) x*(x-1) ?? main() { int a=1,b=2; printf("%d \n",MA(1+a+b));}

36. 变量 a 所占内存字节数是 (C) ?? A) 4 ?? union U B) 5 C) 6 D) 8

第 78 页

?? { char st[4];? int i;? long l; }; ?? struct A ?? { int c;?? union U u;? }a; 二、填空题 1. 表达式 1<0<5 的值是 3. 表达式 ~(10>>1^~5) 的值是 1 0 。 。

2. 设变量已正确定义, 在程序段 B 中填入正确的内容,使程序段 A 和程序段 B 等价。 程序段 A for(k=s=0;k<=10;s+=a[k++]) if(a[k]<0) break; 程序段 B for(k=0,s=0; ; s+=a[k++]) if( a[k]<0 || k>10 100 ) break; 。

3. 下列程序的输出结果是 #define T 10 #define MD 3*T printf(“%d”,30/MD); 4. 下列程序的输出结果是 int k,s;

k=5, s=15



for(k=s=0;k<10&&s<=10;s+=k) k++; printf(“k=%d,s=%d”,k,s); 5. 下列程序的输出结果是 #include <stdio.h> int f(int m) { static int k=2; k++; return k+m; } 5,9 。

void main( ) { int s; s=f(2); printf(“%d,%dn”,s,f(s)); }

第 79 页

6.

对于以下递归函数 f,条用 f(3)的返回值是 f(int n) { return((n<=0)?n:f(n-1)+f(n-2)); }

-2



7. 下列程序的输出结果是 int c[ ]={10,0,-10}; int *k=c+2;

-10



printf(“%d”,*k--); 2 1 。

8. 下列程序的输出结果是 int k=1,j=2,*p=&k,*q=p; p=&j;

printf(“%d %d”,*p,*q); un, g 。

9. 下列程序的输出结果是 #include <stdio.h> char *f(char *str) void main( ) { char *str=”one”;

{ return str=”fun”;

}

printf(“%s,%cn”, f(str)+1,*f(str)+1); 1,3 。

}

10. 下列程序的输出结果是 #include <stdio.h> void p(int *x,int y) { ++*x; y--; }

void main( ) { int x=0,y=3; p(&x,y); printf(“%d,%d”x,y); } 1001 。

11. 下列程序的输出结果是 #include <stdio.h> { int j,k,a[2][2]; for(k=1;k<3;k++) for(j=1;j<3;j++)

a[k-1][j-1]=(k/j)*(j/k); for(k=0;k<2;k++) for(j=0;j<2;j++) printf(”%d”,a[k][j]); }
第 80 页

12. 下面程序的功能是:计算 1 到 10 之间奇数之和及偶数之和,请填空。 ?? #include ?? main() ?? { int a, b, c, i; ?? a=c=0; ?? for(i=0;i<10;i+=2) ?? { a+=i; b=i+1 ;?? c+=b; }

?? printf("偶数之和=%d\n",a); ?? printf("奇数之和=%d\n",c-11); ?? } 13.下面程序的功能是:输出 100 以内能被 3 整除且个位数为 6 的所有整数,请填空。 ?? #include ?? main() ?? { int i, j; ?? for(i=0; i<10 ; i++)

?? { j=i*10+6; ?? if( i % 3 != 0 ) continue;

?? printf("%d",j); ?? } ?? }

第 81 页


相关文章:
C语言程序设计(专升本)试卷附答案
专升本专升本用隐藏>> B) C 语言中没有逻辑类型但有集合类型 C 语言程序设计专业 题号 题分 得分一、选择题(共 开/闭卷: 闭 C) C 语言中有逻辑类型但...
【南昌理工学院2014年专升本】C语言程序设计考试大纲
【南昌理工学院2014专升本】C语言程序设计考试大纲_研究生入学考试_高等教育_教育专区。南昌理工学院 2015 年专升本《C 语言程序设计》 考试大纲一、考试性质 “...
江西农大专升本考试《C语言程序设计》试卷(A)卷
江西农业大学 2005 年专升本考试《C 语言程序设计》试卷(A)卷一、填空题(每空...在家全套瑜伽练习教程 50份文档 2014年注册会计师考试 2014年注册会计师考试攻略...
江西财经大学 专升本 《C语言程序设计》2007试题
专升本 江西财经大学 C语言程序设计专升本 江西财经大学 C语言程序设计隐藏>> (...} 第 2 页共 4 页 四、程序填空题(本类题共 5 小题,每小题 4 分,共...
2015年南昌航空大学专升本《C语言程序设计》考试大纲
星原专升本网:http://www.xyzsb.com 2015 年南昌航空大学专升本《C 语言程序设计》考试大纲一、基本要求 1、 掌握 C 语言的基本语法、语义。 2、 掌握各种...
C语言程序设计-作业与答案
C语言程序设计-作业与答案_理学_高等教育_教育专区。《C语言程序设计》课程作业《C 语言程序设计》课程作业适用层次:专升本 培养类型:理工科专业 专业班级: 姓名: ...
专升本C语言程序设计试卷
专升本C语言程序设计试卷_研究生入学考试_高等教育_教育专区。专升本 C 语言程序设计试卷(二) 一、单项选择题(1~30 题每小题 1 分,31~45 题每小题 2 分,...
《C语言程序设计》课程考试大纲
湖湘gtvs贡献于2014-03-16 0.0分 (0人评价)暂无用户评价 我要评价 ...湖南工学院,专升本考试大纲 《C 语言程序设计》课程考试大纲(专升本)课程名称:C...
2016年东华理工大学专升本考试大纲《C语言程序设计》
星原专升本网:http://www.xyzsb.com 2016 年东华理工大学专升本《C 语言程序设 计》考试大纲 1.基本要求 ① 掌握结构化程序设计的方法,具有良好的程序设计风格...
C语言程序设计
C语言程序设计_专升本_成人教育_教育专区。南京财经大学计算机科学与技术本科专业练习题库 C 语言程序设计 1 总分:100 考试时间:100 分钟 一、单项选择题 1、以下...
更多相关标签: