《浙工大C语言复习题与参考答案(27页).doc》由会员分享,可在线阅读,更多相关《浙工大C语言复习题与参考答案(27页).doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-浙工大C语言复习题与参考答案-第 23 页C程序设计复习题集目 录 一、C语言程序设计复习题 单项选择题 41 填 空 题 45 写输出结果题 46 程序填空题 53 编 程 题 61 三、C语言程序设计复习题答案 单项选择题 62 填 空 题 63 写输出结果题 63 程序填空题 64 编程题(参考) 65C语言程序设计复习题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是(
3、)。 A、16进制int类型常数 B、8进制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、“=”和“”和“” C、“=”和“!=”
5、D、“=”和“b) printf(%dn,a); printf(%dn,b); B、printf(%dn,b); if(ab) printf(%dn,a); C、if(ab) printf(%dn,a); else printf(%dn,b); D、if(as)t=u; t=s; B、t=s; if(us)t=u; C、if(us)t=s; else t=u; D、t=u; if(us)t=s;23. 下列各语句中,能够输出整型变量a、b中最大值的是( )。 A、printf(%dn,(ab)?a,b); B、(ab)? printf(%d,a):printf(%d,b); C、printf(
6、%d,if(ab)a else b); D、printf(%dn,(ab)?a:b);24. 下列语句应将小写字母转换为大写字母,其中正确的是( )。 A、if(ch=a&ch=a&ch=a&cha&chz)?ch-32:ch;25. 求整数1至10的和并存入变量s,下列语句中错误的是( )。 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的乘积,下列
7、语句序列中正确的是( )。 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;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;aZ;a+)printf(%c,a); C、for(a=A;a=Z;printf(%c,a+); D、for
8、(a=A;a=0&i=0&i=0&i=0&i=10;i+) if(i!=5) printf(%fn,1.0/(i-5); else break; D、for(;i=10;i+) if(i!=5) printf(%fn,1.0/(i-5);29. 下列语句中与语句 while(1)if(i=100)break;s+=i;i+; 功能相同的是( )。 A、for(;i100;i+) s=s+i; B、for(;i100;i+;s=s+i); C、for(;i=100;i+;s=s+i);30. 下列各语句定义了数组,其中哪一个是不正确的( )。 A、char a310=China,American
9、,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,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. 用宏名定义一个字
10、符串,下列表述中哪一个是正确的( )。 A、#define pi=3.14159; B、define pi=3.14159 C、#define pi 3.14159 D、#define pi(3.14159);34. 定义带参数的宏计算两式乘积(如x2+3x-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-
11、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”,使两个参数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、f
12、loat d,p=d;38. 对语句“int a10,*p=a;”,下列表述中哪一个是正确的( )。 A、*p被赋初值为a数组的首地址 B、*p被赋初值为数组元素a0的地址 C、p被赋初值为数组元素a1的地址 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、*
13、(p+) D、&x+42. 数组定义为“int a45;”,引用“a+3”表示( )。 A、a数组第4列的首地址 B、a数组第1行第4列元素的值 C、a数组第4行的首地址 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 a
14、45;”,下列哪一个引用是错误的( )。 A、*a B、*(*(a+2)+3) C、&a23 D、+a46. 共用体定义为“union data char 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
15、的值是( )。 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=a2; 变量c的值是( )。 A、8 B、1 C、4 D、6454. 以“只读”方式打开文本文件a:aa.dat,下列语句中哪一个是正确的( )。 A、fp=fope
16、n(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(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
17、=fopen(a:aa.dat,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)(c*c)&b=c|cb 的值为 。 5设 int a=3,b=5,c=7;,表达式ac|cb
18、!=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. 判断int类型变量n是否为两位整数的逻辑表达式为 。12. 判断变量a、b的值均不为0的逻辑表达式为 。13. 判断变量a、b是否绝对值相等而符号相反的逻辑表达式为 。
19、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,表达式值、a的值依次为 。20. 求变量a、b中最大值的条件表达式为 。21. 若 a=13、b=25、c=-17,条件表达式 (y=(ab)?a:b)=a&s=z)
20、?s-32:s; 字符变量s的值为 。23. 整型变量x的值为25,语句printf(%o,x);的输出结果为 。24. 整型变量m的值为27,语句 printf(m=%x,m);的输出结果为 。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;
21、s+=i,i+); 能否计算1100的和?原因是 。30. 若int类型变量字长为2,程序段 int jc=1; for(int i=2;i=A&c3&0的值分别为 、 、 。47. 函数的参数为int类型时,虚参与实参结合的传递为 。48. 函数的参数为float类型时,虚参与实参结合的传递为 。49. 函数的参数为char* 类型时,虚参与实参结合的传递为 。50. 函数的实参为常量时,虚参与实参结合的传递为 。51对下列递归函数,函数调用f(3)的返回值是 。 int f(int n) return(n=0)?1:f(n-1)+2);52函数f定义如下,调用f(1475)的返回值为 。
22、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,int b) int t=0; t=a; a=b; b=t;54. 开辟一个存储n个int数据的内存区、并将内存区首地址送入p(指向int类型的指针变量)的语句为 。55释放由p所指向的内存区的语句为 。56fp为文件位置指针,将fp移到离当前位置25个字节处的语句为 。 3 写输出结果题1. #include void main() char ch;
23、 int k=0; for(ch=A;chH;ch+,k+) if(k%2=0) printf(%c ,ch); printf(n); 输出结果: 2. #include 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(cG); printf(k=%dn, k); 输出结果: 3. #include voi
24、d main() int a6=12,4,17,25,27,16,b6=27,13,4,25,23,16,i,j; for(i=0;i6;i+) for(j=0;j6;j+) if(ai=bj)break; if(j6) printf(%d ,ai); printf(n); 输出结果: 4. #include void main() int a8=1,0,1,0,1,0,1,0,i; for(i=2;i8;i+) ai+=ai-1+ai-2; for(i=0;i8;i+) printf(%d ,ai); printf(n); 输出结果: 5. #include void main() int
25、s=1,t=1,a,n; scanf(%d%d,&a,&n); for(int i=1;in;i+) t=t*10+1; s=s+t; 输入数据:2,4 s*=a; printf(SUM=%dn,s); 输出结果: 6. #include #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. #include void m
26、ain() int a5=2,4,6,9,12,b6=2,3,4,6,8,9; for(int i=0;i5;i+) for(int j=0;j6;j+) if(*(a+i)=*(b+j) printf(%d ,*(a+i); printf(n); 输出结果: 8. #include #include void main() 输出结果: char str1=*; for(int i=0;i4;i+) printf(%sn,str1); str1i= ; str1strlen(str1)-1=0;9. #include void main() char a58; 输出结果: for(int i=0;i5;i+) for(int j=0;j8;j+) if(i=0|i=4) aij=-; else aij= ; for(i=1;i4;i+) ai0=|; ai5=|; for(i=0;i5;i+) ai6=0; for(i=0;i5;i+) printf(%sn,ai);10. #include void