浙工大C语言复习题与参考答案 联系客服

发布时间 : 星期三 文章浙工大C语言复习题与参考答案更新完毕开始阅读b1eca04b76eeaeaad1f330ac

4 C程序设计习题集

C、a数组第4行的首地址 D、a数组第1列第4行元素的值 43. 数组定义为“int a[4][5];”,引用“a[1]+3”表示( )。

A、a数组第2行第4列元素的地址 B、a数组第2行第4列元素的值 C、a数组第4行的首地址 D、a数组第1行第4列的首地址 44. 数组定义为“int a[4][5];”,引用“*(*a+1)+2”表示( )。 A、a[1][0]+2 B、a数组第1行第2列元素的地址 C、a[0][1]+2 D、a数组第1行第2列元素的值 45. 数组定义为“int a[4][5];”,下列哪一个引用是错误的( )。 A、*a B、*(*(a+2)+3) C、&a[2][3] D、++a

46. 共用体定义为“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的值是( )。 A、19 B、4 C、5 D、9 49. 按位或运算:int a=6,b=8,c=a|b; 变量c的值是( )。 A、2 B、14 C、48 D、-2 50. 按位异或运算:int a=14,b=15,c=a^b; 变量c的值是( )。 A、1 B、15 C、-1 D、29 51. 按位取反运算:int a=16,c=~a;,变量c的值是( )。 A、17 B、7 C、84 D、-17 52. 左移运算:int a=16,c=a<<2; 变量c的值是( )。 A、67 B、4 C、1 D、64 53. 右移运算:int a=16,c>>2; 变量c的值是( )。 A、8 B、1 C、4 D、64

54. 以“只读”方式打开文本文件a:\\aa.dat,下列语句中哪一个是正确的( )。 A、fp=fopen(\、fp=fopen(\ C、fp=fopen(\、fp=fopen(\55. 以“追加”方式打开文本文件a:\\aa.dat,下列语句中哪一个是正确的( )。 A、fp=fopen(\、fp=fopen(\ C、fp=fopen(\、fp=fopen(\56. 为读写建立一个新的文本文件a:\\aa.dat,下列语句中哪一个是正确的( )。 A、fp=fopen(\、fp=fopen(\ C、fp=fopen(\、fp=fopen(\

C程序设计习题集 5

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||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. 方程ax+bx+c=0系数a、b、c且存在两个实根,计算其中一个实根的算术表达式为 。

8. p为本金,r为1年期存款年利率,计算存款p元5年到期时本金、利息总和(计复利)的算术表达式为 。

9.将数学式 (x+1)e 写作算术表达式为 。 10.ch是字符变量,判断ch为大写英文字母的逻辑表达式为 。 11. 判断int类型变量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,表达式值、a的值依次为 。 20. 求变量a、b中最大值的条件表达式为 。

21. 若 a=13、b=25、c=-17,条件表达式 ((y=(a='a'&&s<='z')?s-32:s; 字符变量s的值为 。 23. 整型变量x的值为25,语句\的输出结果为 。 24. 整型变量m的值为27,语句 printf(\的输出结果为 。 25. 语句printf(\的输出结果为 。

26. 若int k=10, 循环语句while (k=0) k=k-1; 执行 次。

27.若int k=2, 循环语句while (k!=0) { printf(\执行 次。 28. 若int i=10,s=0;,执行语句while(s+=i--,--i);后s、i值分别为 。 29. 语句for(int s,i=1;i<=100;s+=i,i++); 能否计算1~100的和?原因是 。 30. 若int类型变量字长为2,程序段 int jc=1; for(int i=2;i<10;i++)jc*=i; 能否计算10的阶乘? 原因是 。

31. 定义a为共有10个元素的静态存储int类型数组的语句为 。 32. 定义a为长度为10的字符串、同时为字符串赋初值\的语句为 。 33. 定义a为共有5个元素的一维整型数组、同时定义p为指向a数组首地址的指针变量的语句为 。

34. 定义a为4行5列的整型数组、同时定义p为指向a数组首地址的指针变量的语句为 。 35. 如定义语句为“char a[]=\”,

2x

2

6 C程序设计习题集

语句\的输出结果为 。 36. 定义语句为 char a[15],b[]=\,则语句 printf(\ 的输出结果为 。

37. 定义 char a[]=\,语句 printf(\输出 。 38. 定义 char a[10]=\,语句\输出结果为 。 39. 定义 char a[]=\,语句 printf(\输出 。 40. 定义 char a[]=\,

执行for(int i=0;*p!='\\0';p++,i++); 后i的值为 。

41. 宏定义 #define f(x,y) printf(x,y) 的引用 f(\置换展开后为 。 42. 宏定义 #define f(x,y) fopen(x,y) 的引用 f(\置换展开后为 。 43. 宏定义 #define f(c) c>='A'&&c<='Z' 的引用 f(x[i]) 置换展开后为 。 44.表达式 3&5、3|5、3||5 的值分别为 、 、 。

45.设 int x=707,表达式 x^x、x|x、~x^x 的值分别为 、 、 。

46.设 int x=0707,表达式 ~x&&x、!x&&x、x>>3&~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(\的返回值为 。 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所指向的内存区的语句为 。

56.fp为文件位置指针,将fp移到离当前位置25个字节处的语句为 。

C程序设计习题集 7

3 写输出结果题

1. #include void main()

{ char ch; int k=0;

for(ch='A';ch<'H';ch++,k++) if(k%2==0) printf(\ printf(\

} 输出结果: 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(c<'G');

printf(\

} 输出结果: 3. #include void main()

{ int a[6]={12,4,17,25,27,16},b[6]={27,13,4,25,23,16},i,j; for(i=0;i<6;i++) {

for(j=0;j<6;j++) if(a[i]==b[j])break; if(j<6) printf(\ }

printf(\

} 输出结果:

4. #include void main()

{ int a[8]={1,0,1,0,1,0,1,0},i;

for(i=2;i<8;i++) a[i]+=a[i-1]+a[i-2]; for(i=0;i<8;i++) printf(\ printf(\

} 输出结果: 5. #include