浙工大C语言复习题与参考答案_第1页
浙工大C语言复习题与参考答案_第2页
浙工大C语言复习题与参考答案_第3页
浙工大C语言复习题与参考答案_第4页
浙工大C语言复习题与参考答案_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 C程序设计复习题集目 录 一、C语言程序设计复习题 单项选择题 41 填 空 题 45 写输出结果题 46 程序填空题 53 编 程 题 61 三、C语言程序设计复习题答案 单项选择题 62 填 空 题 63 写输出结果题 63 程序填空题 64 编程题(参考) 65 C语言程序设计复习题1 单项选择题在每小题的四个备选答案中选出一个正确的,并将正确答案号码填在题后括号内。 1. 用C语言编写的源文件经过编译,若没有产生编译错误,则系统将( )。 A、生成可执行目标文件 B、生成目标文件 C、输出运行结果 D、自动保存源文件 2. 在C集成环境执行菜单命令“运行”,若运行结束且没有系统提示信

2、息,说明( )。 A、源程序有语法错误 B、源程序正确无误 C、源程序有运行错误 D、源程序无编译、运行错误,但仅此无法确定其正确性 3. 程序运行输出了错误的结果,可以排除下列哪一个因素( )。 A、算法错误 B、运行时输入数据错误 C、未通过编译 D、系统资源配置不当 4. 下列各个错误中,属于编译错误的是( )。 A、数组下标超界 B、“=”误写为“!=” C、死循环 D、括号不配对 5. 若int类型数据字长为4,其最大值为( )。 A、231 B、231-1 C、232-1 D、232 6. 常数的书写格式决定了常数的类型和值,03322是( )。 A、16进制int类型常数 B、8

3、进制int类型常数 C、10进制int类型常数 D、10进制long int类型常数 7.“e2”是( )。 A、实型常数100 B、值为100的整型常数 C、非法标识符 D、合法标识符 8. 要为字符型变量a赋初值,下列语句中哪一个是正确的( )。 A、char a='3' B、char a="3" C、char a=%; D、char a=*; 9. 要为float类型变量x、y、z赋同一初值3.14,下列说明语句哪一个是正确的( )。 A、float x,y,z=3.14; B、float x,y,z=3*3.14; C、float x=3.14,y=

4、3.14,z=3.14; D、float x=y=z=3.14;10. 语句“float pi=3.1415926535;”将( )。 A、导致编译错误 B、说明pi为初值3.1415926535的单精度实型常数 C、导致运行时的溢出错误 D、说明pi为初值3.141593的单精度实型常数11. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为( )。 A、算术运算、赋值运算、关系运算 B、算术运算、关系运算、赋值运算 C、关系运算、赋值运算、算术运算 D、关系运算、算术运算、赋值运算12. 关系运算符中优先级最低的运算符是( )。 A、“>=”和“<=” B、“&g

5、t;”和“<” C、“=”和“!=” D、“<=”和“<”13. 逻辑运算符中,运算优先级按从高到低依次为( )。 A、&&,!,| B、|,&&,! C、&&,|,! D、 !,&&,|14. 对C程序在作逻辑运算时判断操作数真、假的表述,下列哪一个是正确的( )。 A、0为假非0为真 B、只有1为真 C、-1为假1为真 D、0为真非0为假15. 表达式 x=0&&y!=0|x!=0&&y=0等效于( )。 A、x*y=0&&x+y!=0 B、x*y=0&

6、&(x+y=0) C、x=0|y=0 D、x*y=0|x+y=016. 表达式!x|a=b等效于( )。 A、!(x|a)=b) B、!(x|y)=b C、!(x|(a=b) D、(!x)|(a=b)17. 下列格式符中,哪一个可以用于以8进制形式输出整数( )。 A、%d B、%8d C、%o D、%ld18. 下列格式符中,哪一个可以用于以16进制形式输出整数( )。 A、%16d B、%8x C、%d16 D、%d19. a是int类型变量,c是字符变量。下列输入语句中哪一个是错误的( )。 A、scanf("%d,%c",&a,&c); B、

7、scanf("%d%c",a,c); C、scanf("%d%c",&a,&c); D、scanf("d=%d,c=%c",&a,&c);20. 字符变量ch='A',int类型变量K=25,语句printf("%3d,%d3n",ch,k);输出( )。 A、65,253 B、65 253 C、65,25 D、A 2521. 下列各语句序列中,能够且仅输出整型变量a、b中最大值的是( )。 A、if(a>b) printf("%dn",a)

8、; printf("%dn",b); B、printf("%dn",b); if(a>b) printf("%dn",a); C、if(a>b) printf("%dn",a); else printf("%dn",b); D、if(a<b) printf("%dn",a); printf("%dn",b);22. 下列各语句序列中,能够将变量u、s中最大值赋值到变量t中的是( )。 A、if(u>s)t=u; t=s; B、t=s

9、; if(u>s)t=u; C、if(u>s)t=s; else t=u; D、t=u; if(u>s)t=s;23. 下列各语句中,能够输出整型变量a、b中最大值的是( )。 A、printf("%dn",(a>b)?a,b); B、(a>b)? printf("%d",a):printf("%d",b); C、printf("%d",if(a>b)a else b); D、printf("%dn",(a>b)?a:b);24. 下列语句应将小写字母转

10、换为大写字母,其中正确的是( )。 A、if(ch>='a'&ch<='z') ch=ch-32; B、if(ch>='a'&&ch<='z')ch=ch-32; C、ch=(ch>='a'&&ch<='z')?ch-32:'' D、ch=(ch>'a'&&ch<'z')?ch-32:ch;25. 求整数1至10的和并存入变量s,下列语句中错误的是(

11、 )。 A、s=0;for(i=1;i<=10;i+) s+=i; B、s=0;i=1;for(;i<=10;i+) s=s+i; C、for(i=1,s=0;i<=10;s+=i,i=i+1); D、for(i=1;s=0;i<=10;i+) s=s+i;26. 若sizeof(int)为2,计算1至10的乘积,下列语句序列中正确的是( )。 A、int jc=1; for(int i=2;i<=10;i+) jc*=i; B、for(float jc=1,int i=2;i<=10;i+,jc*=i); C、float jc=1; for(int i=2

12、;i<=10;jc*=i,i=i+1); D、for(float jc=1;i=2;i<=10;i+) jc*=i;27. 下列语句中,哪一个可以输出26个大写英文字母( )。 A、for(a='A'a<='Z'printf("%c",+a); B、for(a='A'a<'Z'a+)printf("%c",a); C、for(a='A'a<='Z'printf("%c",a+); D、for(a='A&

13、#39;a<'Z'printf("%c",+a);28. 与语句 while(i>=0&&i<=10) if(i+=5)continue; printf("%fn",1.0/(i-5); 功能相同的是( )。 A、for(;i>=0&&i<=10;i+) if(i!=5) printf("%fn",1.0/(i-5); B、for(;i>=0&&i<=10;i+) if(i=5) printf("%fn",1.

14、0/(i-5); C、for(;i>=0&&i<=10;i+) if(i!=5) printf("%fn",1.0/(i-5); else break; D、for(;i<=0&&i>=10;i+) if(i!=5) printf("%fn",1.0/(i-5);29. 下列语句中与语句 while(1)if(i>=100)break;s+=i;i+; 功能相同的是( )。 A、for(;i<100;i+) s=s+i; B、for(;i<100;i+;s=s+i); C、for(

15、;i<=100;i+) s+=i; D、for(;i>=100;i+;s=s+i);30. 下列各语句定义了数组,其中哪一个是不正确的( )。 A、char a310="China","American","Asia" B、int x22=1,2,3,4; C、float x2=1,2,4,6,8,10; D、int m3=1,2,3,4,5,6;31. 下列各语句定义了数组,其中哪一个是正确的( )。 A、char a10,*p=a0 B、int d2=1,2,3,4,5,6; C、float x3=1,2,4,6,8,

16、10; D、int m="no_1","no_2","no_3"32. 数组定义为 int a32=1,2,3,4,5,6,下列表述中正确的是( )。 A、数组元素a32的值为6 B、数组元素a6的值为6 C、数组元素a0的值为1 D、a0不是int类型的数组元素33. 用宏名定义一个字符串,下列表述中哪一个是正确的( )。 A、#define pi=3.14159; B、define pi=3.14159 C、#define pi "3.14159" D、#define pi(3.14159);34. 定义带参数

17、的宏计算两式乘积(如x2+3·x-5与x-6),下列定义中哪个是正确的( )。 A、#define muit(u,v) u*v B、#define muit(u,v) u*v; C、#define muit(u,v) (u)*(v) D、#define muit(u,v)=(u)*(v)35. 宏定义 #define div(a,b) a/b 的引用 div(x+5,y-5) 替换展开后是( )。 A、x+5/y-5 B、x+5/y-5; C、(x+5)/(y-5) D、(x+5)/(y-5);36. 定义带参数的宏“#define jh(a,b,t) t=a;a=b;b=t”,使两

18、个参数a、b的值交换,下 列表述中哪个是正确的( )。 A、不定义参数a和b将导致编译错误 B、不定义参数a、b、t将导致编译错误 B、不定义参数t将导致运行错误 D、不必定义参数a、b、t类型37. 下列语句定义p为指向float类型变量d的指针,其中哪一个是正确的( )。 A、float d,*p=d; B、float d,*p=&d; C、float *p=&d,d; D、float d,p=d;38. 对语句“int a10,*p=a;”,下列表述中哪一个是正确的( )。 A、*p被赋初值为a数组的首地址 B、*p被赋初值为数组元素a0的地址 C、p被赋初值为数组元素a

19、1的地址 D、p被赋初值为数组元素a0的地址39. p1指向某个整型变量,要使指针p2也指向同一变量,哪一个语句是正确的( )。 A、p2=*&p1; B、p2=*p1; C、p2=&p1; D、p2=*p1;40. 假如指针p已经指向变量x,则&*p相当于( )。 A、x B、*p C、&x D、*p41. 假如指针p已经指向某个整型变量x,则(*p)+相当于( )。 A、p+ B、x+ C、*(p+) D、&x+42. 数组定义为“int a45;”,引用“a+3”表示( )。 A、a数组第4列的首地址 B、a数组第1行第4列元素的值 C、a数组第4

20、行的首地址 D、a数组第1列第4行元素的值43. 数组定义为“int a45;”,引用“a1+3”表示( )。 A、a数组第2行第4列元素的地址 B、a数组第2行第4列元素的值 C、a数组第4行的首地址 D、a数组第1行第4列的首地址44. 数组定义为“int a45;”,引用“*(*a+1)+2”表示( )。 A、a10+2 B、a数组第1行第2列元素的地址 C、a01+2 D、a数组第1行第2列元素的值45. 数组定义为“int a45;”,下列哪一个引用是错误的( )。 A、*a B、*(*(a+2)+3) C、&a23 D、+a46. 共用体定义为“union data cha

21、r ch;int x; a;”,下列哪一个是正确的( )。 A、a.ch='x'a=10; B、a='x',10; C、a.x=10;a.ch='x' D、a='x'47. 共用体定义为“union data char ch;int x; a;”,下列哪一个是不正确的( )。 A、a='x',10; B、a.x=10;a.x+; C、a.ch='x'a.ch+; D、a.x=10;a.ch='x'48. 按位与运算:int a=7,b=12,c=a&b; 变量c的值是( )。

22、 A、19 B、4 C、5 D、949. 按位或运算:int a=6,b=8,c=a|b; 变量c的值是( )。 A、2 B、14 C、48 D、-250. 按位异或运算:int a=14,b=15,c=ab; 变量c的值是( )。 A、1 B、15 C、-1 D、2951. 按位取反运算:int a=16,c=a;,变量c的值是( )。 A、17 B、7 C、84 D、-1752. 左移运算:int a=16,c=a<<2; 变量c的值是( )。 A、67 B、4 C、1 D、6453. 右移运算:int a=16,c>>2; 变量c的值是( )。 A、8 B、1 C

23、、4 D、6454. 以“只读”方式打开文本文件a:aa.dat,下列语句中哪一个是正确的( )。 A、fp=fopen("a:aa.dat","ab"); B、fp=fopen("a:aa.dat","a"); C、fp=fopen("a:aa.dat","wb"); D、fp=fopen("a:aa.dat","r");55. 以“追加”方式打开文本文件a:aa.dat,下列语句中哪一个是正确的( )。 A、fp=fopen(&qu

24、ot;a:aa.dat","ab"); B、fp=fopen("a:aa.dat","a"); C、fp=fopen("a:aa.dat","r+"); D、fp=fopen("a:aa.dat","w");56. 为读写建立一个新的文本文件a:aa.dat,下列语句中哪一个是正确的( )。 A、fp=fopen("a:aa.dat","ab"); B、fp=fopen("a:aa.dat&quo

25、t;,"w+"); C、fp=fopen("a:aa.dat","wb"); D、fp=fopen("a:aa.dat","rb+");2 填空题 1. 设float x=2.5,y=4.7; int a=7;,表达式 x+a%3*(int)(x+y)%2/4 的值为 。 2. 设 int x=17,y=5; 执行语句 x+=-x%-y 后x的值为 。 3. 设 int x=17,y=5; 执行语句 x%=x+/-y 后x的值为 。 4. 设 int a=7,b=6,c=5;,表达式 (a+b)

26、>(c*c)&&b=c|c>b 的值为 。 5设 int a=3,b=5,c=7;,表达式a>c|c>b!=0&&c=b+a 的值为 。 6已知三角形边长a、b、c和s=(a+b+c)/2,计算其面积的算术表达式为 。 7. 方程ax2+bx+c=0系数a、b、c且存在两个实根,计算其中一个实根的算术表达式为 。 8. p为本金,r为1年期存款年利率,计算存款p元5年到期时本金、利息总和(计复利)的算术表达式为 。 9将数学式 (x+1)e2x 写作算术表达式为 。10ch是字符变量,判断ch为大写英文字母的逻辑表达式为 。11. 判断i

27、nt类型变量n是否为两位整数的逻辑表达式为 。12. 判断变量a、b的值均不为0的逻辑表达式为 。13. 判断变量a、b是否绝对值相等而符号相反的逻辑表达式为 。14. 判断变量a、b中必有且只有一个为0的逻辑表达式为 。15. m是值为两位数的整型变量,判断其个位是奇数而十位数是偶数的逻辑表达式为 。16. 求解赋值表达式 a=5+(c=6)后表达式值、a、c的值依次为 。17. 求解赋值表达式 a=(b=10)%(c=6),表达式值、a、b、c的值依次为 。18. 求解逗号表达式 x=a=3,6*a后,表达式值、x、a的值依次为 。19. 求解逗号表达式 (a=15,a*4),a+5,表达

28、式值、a的值依次为 。20. 求变量a、b中最大值的条件表达式为 。21. 若 a=13、b=25、c=-17,条件表达式 (y=(a<b)?a:b)<c)?y:c 的值为 。22. 若 s='d',执行语句 s=(s>='a'&&s<='z')?s-32:s; 字符变量s的值为 。23. 整型变量x的值为25,语句"printf("%o",x);"的输出结果为 。24. 整型变量m的值为27,语句 printf("m=%x",m);的输出结果为

29、。25. 语句printf("s%s","mall"); 的输出结果为 。26. 若int k=10, 循环语句while (k=0) k=k-1; 执行 次。27若int k=2, 循环语句while (k!=0) printf("%d",k); k-; 执行 次。28. 若int i=10,s=0;,执行语句while(s+=i-,-i);后s、i值分别为 。29. 语句for(int s,i=1;i<=100;s+=i,i+); 能否计算1100的和?原因是 。30. 若int类型变量字长为2,程序段 int jc=1;

30、for(int i=2;i<10;i+)jc*=i; 能否计算10的阶乘? 原因是 。31. 定义a为共有10个元素的静态存储int类型数组的语句为 。32. 定义a为长度为10的字符串、同时为字符串赋初值"continue"的语句为 。33. 定义a为共有5个元素的一维整型数组、同时定义p为指向a数组首地址的指针变量的语句为 。34. 定义a为4行5列的整型数组、同时定义p为指向a数组首地址的指针变量的语句为 。35. 如定义语句为“char a="windows ",b="95"”, 语句"printf("

31、;%s",strcat(a,b);"的输出结果为 。36. 定义语句为 char a15,b="windows 95",则语句 printf("%s",strcpy(a,b); 的输出结果为 。37. 定义 char a="Box",b="Boss",语句 printf("%d",strcmp(a,b);输出 。38. 定义 char a10="student",语句"printf("%d",strlen(a);"输

32、出结果为 。39. 定义 char a="WINDOWS",语句 printf("%s",strlwr(a);输出 。40. 定义 char a="hangzhou",*p=a;,执行for(int i=0;*p!='0'p+,i+); 后i的值为 。41. 宏定义 #define f(x,y) printf(x,y) 的引用 f("%dn",m); 置换展开后为 。42. 宏定义 #define f(x,y) fopen(x,y) 的引用 f("a.txt","rw&

33、quot;); 置换展开后为 。43. 宏定义 #define f(c) c>='A'&&c<='Z' 的引用 f(xi) 置换展开后为 。44表达式 3&5、3|5、3|5 的值分别为 、 、 。45设 int x=707,表达式 xx、x|x、xx 的值分别为 、 、 。46设 int x=0707,表达式 x&&x、!x&&x、x>>3&0的值分别为 、 、 。47. 函数的参数为int类型时,虚参与实参结合的传递为 。48. 函数的参数为float类型时,虚参与实参结

34、合的传递为 。49. 函数的参数为char* 类型时,虚参与实参结合的传递为 。50. 函数的实参为常量时,虚参与实参结合的传递为 。51对下列递归函数,函数调用f(3)的返回值是 。 int f(int n) return(n=0)?1:f(n-1)+2);52函数f定义如下,调用f("1475")的返回值为 。 int f(char *s) int k=0; while(*s) k+=*s+-'0' return k;53. 函数change定义如下,a=10、b=5,执行 change(a,b)后a、b的值分别为 。 void change(int a

35、,int b) int t=0; t=a; a=b; b=t;54. 开辟一个存储n个int数据的内存区、并将内存区首地址送入p(指向int类型的指针变量)的语句为 。55释放由p所指向的内存区的语句为 。56fp为文件位置指针,将fp移到离当前位置25个字节处的语句为 。 3 写输出结果题1. #include <stdio.h> void main() char ch; int k=0; for(ch='A'ch<'H'ch+,k+) if(k%2=0) printf("%c ",ch); printf("n&

36、quot;); 输出结果: 2. #include <stdio.h> void main( ) int k=0; char c='A' do switch (c+) case 'A': k+; break; case 'B': k-; case 'C': k+=2; break; case 'D': k=k%2; break; case 'E': k=k*10; break; default: k=k/3; k+; while(c<'G'); printf(&qu

37、ot;k=%dn", k); 输出结果: 3. #include <stdio.h> void main() int a6=12,4,17,25,27,16,b6=27,13,4,25,23,16,i,j; for(i=0;i<6;i+) for(j=0;j<6;j+) if(ai=bj)break; if(j<6) printf("%d ",ai); printf("n"); 输出结果: 4. #include <stdio.h> void main() int a8=1,0,1,0,1,0,1,0,

38、i; for(i=2;i<8;i+) ai+=ai-1+ai-2; for(i=0;i<8;i+) printf("%d ",ai); printf("n"); 输出结果: 5. #include <stdio.h> void main() int s=1,t=1,a,n; scanf("%d%d",&a,&n); for(int i=1;i<n;i+) t=t*10+1; s=s+t; 输入数据:2,4 s*=a; printf("SUM=%dn",s); 输出结果:

39、 6. #include <stdio.h> #define PR(x,y) printf("%s=t%dn",x,y) void main( ) int x=3,y=2,z=1; 输出结果: PR("x|y&z",x|y&z); PR("xy&z",xy&z); PR("x&y&z",x&y&z); x=1; y=-1; PR("! x|x",! x|x); PR("x|x",x|x); 7. #i

40、nclude <stdio.h> void main() int a5=2,4,6,9,12,b6=2,3,4,6,8,9; for(int i=0;i<5;i+) for(int j=0;j<6;j+) if(*(a+i)=*(b+j) printf("%d ",*(a+i); printf("n"); 输出结果: 8. #include <stdio.h> #include <string.h> void main() 输出结果: char str1="*" for(int i=0;

41、i<4;i+) printf("%sn",str1); str1i=' ' str1strlen(str1)-1='0' 9. #include <stdio.h> void main() char a58; 输出结果: for(int i=0;i<5;i+) for(int j=0;j<8;j+) if(i=0|i=4) aij='-' else aij=' ' for(i=1;i<4;i+) ai0='|' ai5='|' for(i=0;

42、i<5;i+) ai6='0' for(i=0;i<5;i+) printf("%sn",ai); 10. #include <stdio.h> void main() char a8,temp; int i,j; 输出结果: for(i=0;i<7;i+) ai='a'+i; for(i=0;i<3;i+) temp=a0; for(j=1;j<7;j+) aj-1=aj; a6=temp;a7='0' printf("%sn",a); 11. #include

43、<stdio.h> void main() 输出结果: int i,j,n; for(i=0;i<4;i+) for(j=1;j<=i;j+) printf(" "); n=7-2*i; for(j=1;j<=n;j+) printf("%1d",n); printf("n"); 12. #include <stdio.h> void main() char a8,temp; int j,k; for(j=0;j<7;j+) aj='a'+j; 输出结果: a7='

44、;0' for(j=0;j<3;j+) temp=a6; for(k=6;k>0;k-) ak=ak-1; a0=temp; printf("%sn",a); 13. #include <stdio.h> 输出结果: void print(int,char,int); void main() print(3,'*',1); print(2,'*',3); print(1,'*',5); print(2,'#',3); print(2,'#',3); void pr

45、int(int begin,char pzf,int n) char a50; for(int i=0;i<begin;i+) ai=' ' for(i=0;i<n;i+) abegin+i=pzf; abegin+i='0' printf("%sn",a); 14. #include <stdio.h> void main() 运行时输入: 5 7 3 int a,b,c,find(int,int,int); scanf("%d%d%d",&a,&b,&c); printf

46、("%dn%d,%d,%dn",find(a,b,c),a,b,c); 输出结果: int find(int a,int b,int c) int u,s,t; u=(u=(a>b)?a:b)>c)? u:c; t=(t=(a<b)?a:b)<c)? t:c; s=a+b+c-u-t; a=u; b=s; c=t; return s; 15. #include <stdio.h> void fun1(int n,int a3) 输出结果: for(int i=0;i<n;i+) for(int j=0;j<n;j+) aij=aij/aii; void main() int a33=6,4,2,8,6,4,9,6,3; fun1(3,a); for(int i=0;i<3;i+) for(int j=0;j<3;j+) printf("%d ",aij); printf("n"); 16. #include <stdio.h> int fun3(int m) int i; if(m=2|m=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论