C语言练习题2005(定稿+答案).doc_第1页
C语言练习题2005(定稿+答案).doc_第2页
C语言练习题2005(定稿+答案).doc_第3页
C语言练习题2005(定稿+答案).doc_第4页
C语言练习题2005(定稿+答案).doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

juC语言综合练习题一、填空题1. 以下程序输出结果是 0 。main( ) unsigned short a=65536; int b;printf(%dn,b=a);2. 若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量 b 中的值是 3 。c=(a-=(b-5);c=(a%11)+(b=3);3. 表示“整数 x 的绝对值大于 5 ”时值为“真”的 C 语言表达式是 (x5|x-5)=1 。4. 要使以下程序段输出 10 个整数,请填入一个整数。for(i=0;i 19 ;printf(%dn,i+=2);5. 函数 pi 的功能是根据以下近似公式求 值:(*)/6=1+1/(2*2)+1/(3*3)+1/(n*n)现在请你在下面的函数中填空,完成求 的功能。#include math.hdouble pi(long n) double s=0.0; long i;for(i=1;i=n;i+) s=s+ 1.0/(i*i) 或 (float)1/(i*i) ;return(sqrt(6*s);6. 若输入字符串:abcde,则以下 while 循环体将执行 0 次。while(ch=getchar( )=e) printf(*);7. 以下函数用来求出两整数之和,并通过形参将结果传回,请填空。void func(int x, int y, int * z) *z=x+y;8. 若有以下定义,则不移动指针 p ,且通过指针 p 引用值为 98 的数组元素的表达式是 p5 或 *(p+5) 。int w10=23,54,10,33,47,98,72,80,61,*p=w;9. 设在主函数中有以下定义和函数调用语句,且 fun 函数为 void 类型;请写出 fun 函数的首部 void fun(double b1022); 。要求形参名为 b。main( ) double s1022;int n;fun(s);10. 以下程序的输出结果是 246 。void fun( ) static int a=0;a+=2; printf(%d,a);main( ) int cc;for(cc=1;cc(y)?(x):(y)main( ) int a=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10; /(a+b)(c+d)?(a+b):(c+d)*10printf(%dn,t);12. 设有以下结构类型说明和变量定义,则变量 a 在内存所占字节数是 22 。struct stud char num6;int s4;double ave; a,*p;13. 以下函数把 b 字符串连接到 a 字符串的后面,并返回 a 中新字符串的长度。请填空。strcen( char a ,char b ) int num=0,n=0;while(*(a+num)!= 0 ) num+;while(bn) *(a+num)=bn; num+; n+ ;return(num);14. 下列程序的输出结果是 2,1 。main( ) int a=1,b=2;a=a+b;b=a-b;a=a-b;printf(%d,%dn,a,b);15. 下列程序的输出结果是 16.00,请填空。main( ) int a=9,b=2;float x= 6.6 ,y=1.1,z;z=a/2+b*x/y+1/2;printf(%5.2fn,z);16. 下列程序段的输出结果是 Hello 。main( ) char b =Hello,you;b5=0; /b5=0;printf(%sn,b);17. 下列程序段的输出结果是 passwarn 。int n=c;switch(n+) default:printf(error);break;case a:case A:case b:case B:printf(good);break;case c:case C:printf(pass);case d:case D:printf(warn);18. 以下程序通过函数指针 p 调用函数 fun,请在填空栏内,写出定义变量 p 的语句。void fun(int *x,int *y) main( ) int a=10,b=20; void (*p)() ; /* 定义变量 p */p=fun; p(&a,&b);19. 下列程序的输出结果是 0 。void fun(int *n) while (*n)-);printf(%d,+(*n);main( ) int a=100;fun(&a);20. 以下程序输出结果是 10 。main( ) int arr =30,25,20,15,10,5, *p=arr;p+;printf(%dn,*(p+3);21. 以下程序用来输出结构体变量 ex 所占存储单元的字节数,请填空。struct st char name20; double score;main( ) struct st ex;printf(ex size:%dn,sizeof( ex );22. 若变量 n 中的值为 24 ,则 prnt 函数共输出 5 行,最后一行有 4 个数。void prnt(int n,int aa ) int i;for(i=1;i=n;i+) printf(%6d,aai);if(!(i%5) printf(n);printf(n);23. 以下程序中,主函数调用了 LineMax 函数,实现在 N 行 M 列的二维数组中, 找出每一行上的最大值。请填空。#define N 3#define M 4void LineMax(int xNM) int i,j,p;for(i=0;iN;i+) p=0;for (j=1;jM;j+)if(xipb ? a:b) & c-d 的值为 1 。25. int i=5, j, k; j=i-; k=i; 则 k的值为 4 。 26. 已知:int a3=1,2,3,4,5,6; 此时数组元素a12的值为 6 。 27. 设int a=5,b=6, 写出表达式 a=a-b, a+b 的值 5 。28. 若有代数式x2(3x-5y), 则正确的C语言表达式为: x*x/(3*x-5*y) 。29. 字符串 Chinese 占用内存 8 字节。 30. C语言源程序的基本单位是 函数 。31. 若有以下定义和语句:int a0,2,4,6,8,10,*p;p=&a1;则+(*p)的值是: 3 。32. 若 i=1,则执行k=+i+2;后k= 4 ;而执行 k=i+2后k= 3 。33. 已知a=6;b=9;则表达式“ab,ba”的值为: 1 34. 若有以下定义,int x=5,y=2;则执行表达式y+=y-=x*=y后的y值是 -16 。35. 下面程序段中循环执行次数为: 3 。a=10;b=0;dob+=2;a-=2+b; while(a=0);36. 若有定义int num,sum;且num=sum=7;则执行语句sum=num+ ; sum; num+;后sum的值为 7 。二、选择题(每道题目有一个或多个正确的答案)1. 分析下面的C语言代码: int a=1,b=10;dob-=a; a+; while (b-0);则执行循环语句后b的值为()。(选择一项)a)9b)-2c)-1d)82. 设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:scanf(i=%d,f=%f,&i,&f);为了把100和765.12分别赋给i和f,则正确的输入为()。(选择一项)a)100 765.12b)i=100,f=765.12c)100 765.12d)x=100 y=765.123. 在C语言中,下列()是合法的标识符。(选择两项)a)COUNTb)P234c)4xd)short4. 有数组int num 5 = 10,20,30,40,50;num3的值为()。 (选择一项)a)30b)50c)40d)20e)105. #includevoid main()int a=3,b=2,c=1;int x=10,y=20;if(ab)if(b!=0)if(!x)y=1;else if(x)y=0;y=-1;printf(%d,y);上面的C程序的输出结果是()。(选择一项)a)20b)1c)0d)-16. void main()int i, x33=1,2,3,4,5,6,7,8,9;for(i=0;i3;i+) printf(%d ,xi2-i);以上C程序的输出结果是()。(选择一项)a)1 5 9b)1 4 7c)3 5 7d)3 6 97. C语言中,while和dowhile循环的主要区别是()。(选择一项)a)while的循环控制条件比dowhile的循环控制条件严格b)dowhile的循环体至少无条件执行一次c)dowhile允许从外部转到循环体内d)dowhile的循环体不能是复合语句8. 执行下面的C程序段后,输出结果是()。(选择一项)int a=5;while( a-);printf( %d, a); a)54321b)4321c)0d)-19. 以下正确的叙述有()。(选择两项)a)在C程序中,每行中只能写一条语句b)在C程序中,Abc和abc是2个相同的变量c)若a和b 的类型相同,在计算了赋值表达式a=b后b的值将放入a,而b的值不变d)若a是float型变量,a=10是合法的,因为float型变量允许存放整型数10. 下面C代码的输出结果是()。(选择一项)int answer,result;answer=100;result=answer-10;printf(“The result is %d”, result+5); a)The result is 90b)The result is 95c)The result is 10d)The result is 10011. char *p=happy new year;char *q=p;int k;for( k=1;k8;k+)putchar(*q); /putchar函数用来输出单个字符q+;上面C程序段的输出结果是()。(选择一项)a)happy new yearb)happy new c)happy nd)happy e)appy n12. 在C语言中,根据下面的定义,能打印出字母m的语句是()。(选择一项)struct person char name9; int age; ;struct person per10=john,17,paul,19,mary,18,adam,16;a)printf(%cn,);b)printf(%cn,1);c)printf(%cn,1);d)printf(%cn,0);13. 在C语言中,存储类别定义了变量的()。(选择两项)a)生命周期b)可见性c)关系性14. 在C语言中,设有数组定义: char array =China; 则数组 array所占的空间为()。(选择一项)a)4个字节b)5个字节c)6个字节d)7个字节15. 在C语言中,()是在所有函数外部声明的。(选择一项)a)全局变量b)局部变量c)形参16. 以下对C语言函数的有关描述中,正确的是()。(选择一项)a)调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参b)C函数既可以嵌套定义又可以递归调用c)函数必须有返回值,否则不能使用函数d)C程序中有调用关系的所有函数必须放在同一个源程序文件中17. 分析下面的C程序:#includevoid main()int num=0;while(num=2)num+;printf(%d ,num);输出结果是()。(选择一项)a)1 2 3b)0 1 2c)2 3d)1 218. 分析下面的程序:void fun (int a,int b,int c)a=456; b=567; c=678;void main()int x=10, y=20,z=30;fun (x,y,z);printf(%d,%d,%dn,z,y,x);输出结果是()。(选择一项)a)30,20,10b)10,20,30c)456,567,678d)678,567,45619. 研究下面的C程序段: int i,j;for (i=5;i;i-)for(j=0;j4;j+)循环体的总执行次数是()。(选择一项)a)20b)25c)24d)3020. 设x,y,z,t均为int型变量,则执行以下语句后,t的值为()。x=y=z=1;t=+x|-y&+z;(选择一项)a)不定值b)2c)1d)021. void fun(int *x, int *y) *x=3;*y=4; void main()int x=1,y=2; printf(%d %d ,x, y);fun(&y,&x);printf(%d %d,x, y);上面的C程序段的输出结果是()。(选择一项)a)2 1 4 3b)1 2 1 2c)1 2 4 3d)2 1 1 222. 分析下面的C语言程序:#includestruct stuint num;char name10;int age;void main()struct stu students3=9801,Zhang,20,9802,Wang,19,9803,Zhao,18 ;printf(%sn,(*(students+2).name);输出结果是()。(选择一项)a)Zhangb)Zhaoc)Wangd)1823. 阅读下面的C语言代码,输出结果是()。int x, y = 1, z=0;if ( z =0b=0)&(a0b=0&b=0)&(a0&b0)&(a+b030. 下面的C语言代码段的输出结果是()。(选择一项)int j;for(j=1; j+y; x=k+) k=x;d)while(1) x+;37. 分析下面的C语言程序:void main()int a,b,c=246;a=c/100%9;b=(-1)&(-1);printf(%d,%dn,a,b);输出结果是()。(选择一项)a)2,1b)3,2c)4,3d)2,-138. 在C语言中,下面()是逻辑运算符中优先级最高的。(选择一项)a)!b)&c)|d)|e)&39. 设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是()。(选择一项)a)k=*P1+*P2;b)P2=k;c)P1=P2;d)k=(*P1) * (*P2);40. 若变量已正确定义并赋值,下面符合 C 语言语法的表达式是( )。A) a:=b+1 B) a=b=c+2 C) int 18.5%3 D) a=a+7=c+b41. C 语言中运算对象必须是整型的运算符是( )。A) %= B) / C) = D) =10 or a=0|a=10 & a=10 | a=047. 有如下程序main( ) int x=1,a=0,b=0;switch(x) case 0: b+;case 1: a+;case 2: a+;b+;printf(a=%d,b=%dn,a,b);该程序的输出结果是( )。A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=248. 有如下程序main( ) float x=2.0,y;if(x0.0) y=0.0;else if(x10.0) y=1.0/x;else y=1.0;printf(%fn,y);该程序的输出结果是( )。A) 0.000000 B) 0.250000 C) 0.500000 D) 1.00000049. 有如下程序main( ) int a=2,b=-1,c=2;if(ab)if(b0) c=0;else c+;printf(%dn,c);该程序的输出结果是( )。A) 0 B) 1 C) 2 D) 350. 有如下程序main( ) int i,sum;for(i=1;i6) n-; printf(%d,n); 该程序的输出结果是( )。A) 987 B) 876 C) 8765 D) 987653. 设有说明语句: char a=2;则变量 a ( )。A) 包含 1 个字符 B) 包含 2 个字符 C) 包含 3 个字符 D) 说明不合法54. 有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5);该函数调用语句中,含有的实参个数是( )。A) 3 B) 4 C) 5 D) 有语法错55. 有如下程序int func(int a,int b) return(a+b); main( ) int x=2,y=5,z=8,r;r=func(func(x,y),z);printf(%dn,r);该程序的输出结果是( )。A) 12 B) 13 C) 14 D) 1556. 有如下程序段int *p,a=10,b=1;p=&a;a=*p+b;执行该程序段后, a 的值为( )。A) 12 B) 11 C) 10 D) 编译出错57. 对于基类型相同的两指针变量之间,不能进行的运算是( )。A) B) = C) + D) -58. 以下函数返回 a 所指数组中最小值所在的下标值fun(int *a,int n) int i,j=0,p;p=j;for(i=j;in;i+)if(ai2) return(fib(n-1)+fib(n-2);else return(2);main( ) printf(%dn,fib(3); 该程序的输出结果是( )。A) 2 B) 4 C) 6 D) 860. 在 C 语言中,函数的隐含存储类别是( )。A) auto B) static C) exten D) 无存储类别61. 有如下程序#define N 2#define M N+1#define NUM 2*M+1main( ) int i;for(i=1;i=NUM;i+) printf(%dn,i);该程序中的 for 循环执行的次数是( )。A) 5 B) 6 C) 7 D) 862. 有如下程序段int a=14,b=15,x;char c=A;x=(a&b)&(cB);执行该程序段后,x 的值为( )。A) true B) false C) 0 D) 163. 若有以下说明和定义fun(int *c) .main( ) int (*a)( )=fun,*b( ),w10,c;在必要的赋值之后,对 fun 函数的正确调用语句是( )。A) a=a(w) B) (*a)(&c) C) b=*b(w) D) fun(b)64. 有如下说明int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为 9 的表达式是( )。A) *p+9 B) *(p+8) C) *p+=9 D) p+865. 有如下程序main( ) int n5=0,0,0,i,k=2;for(i=0;ik;i+) ni=ni+1;printf(%dn,nk);该程序的输出结果是( )。A) 不确定的值 B) 2 C) 1 D) 066. 若有以下的定义:int t32;能正确表示 t 数组元素地址的表达式是( )。A) &t32 B) t3 C) t1 D) *t267. 有如下程序main( ) int a33=1,2,3,4,5,6,i,j,s=0;for(i=1;i3;i+)for(j=0;j=i;j+) s+=aij;printf(%dn,s);该程序的输出结果是( )。A) 18 B) 19 C) 20 D) 2168. 有如下定义struct person char name9;int age;struct person class10=Johu,17,Paul,19,Mary,18,Adam,16, ;根据上述定义,能输出字母 M 的语句是( )。A) printf(%cn,); B) printf(%cn,1);C) printf(%cn,1); D) printf(%cn,0);69. 以下对结构体类型变量的定义中,不正确的是( )。A) typedef struct aa B) #define AA struct aa int n; AA int n;float m; float m; AA; td1;AA td1C) struct D) struct int n; int n;float m; float m; aa; td1;struct aa td1;70. 有如下程序main( ) char s =ABCD,*p;for(p=s+1;ps+4;p+) printf(%sn,p);该程序输出结果是( )。A) ABCD B) A C) B D) BCDBCD B C CDCD C D DD D71. 有如下程序main( ) char ch25=6937,8254,*p2;int i,j,s=0;for(i=0;i2;i+) pi=chi;for(i=0;i0;j+=2)s=10*s+pij-0;printf(%dn,s);该程序输出结果是( )。A) 69825 B) 63825 C) 6385 D) 69382572. 下列叙述中正确的是( )。A) C 语言编译时不检查语法 B) C 语言的子程序有过程和函数两种C) C 语言的函数可以嵌套定义 D) C 语言所有函数都是外部函数(隐含为外部函数)73. 以下所列的 C 语言常量中,错误的是( )。A) 0xFF B) 1.2e0.5 C) 2L D) 7274. 下列选项中,合法的 C 语言关键字是( )。A) VAR B) cher C) integer D) default75. 以下变量 x、y、z 均为 double类型且已正确赋值,能正确表示数学式子xyz的C 语言表达式是( )。A) x/y*z B) x*(1/(y*z)C) x/y*1/z D) x/y/z76. 若 a 为 int 类型,且其值为 3,则执行完表达式 a+=a-=a*a 后,a 的值是( )。A) -3 B) 9 C) -12 D) 677. 设 x、y、t 均为 int 型变量,则执行语句:x=y=3;t=+x|+y;后,y 的值为( )。A) 不定值 B) 4 C) 3 D) 178. 若变量已正确说明为 float 类型,要通过语句 scanf(%f %f %f,&a,&b,&c);给 a 赋予 10.0,b 赋予 22.0,c 赋予 33.0,不正确的输入形式是( )。A) 10 B) 10.0,22.0,33.02233C) 10.0 D) 10 2222.0 33.0 3379. 若执行以下程序时从键盘上输入 9 ,则输出结果是( )。main( ) int n;scanf(%d,&n);if (n+10) printf(%dn,n);else printf(%dn,n-);A) 11 B) 10 C) 9 D) 880. 若 a、b、c1、c2、x、y 均是整型变量,正确的 switch 语句是( )。A) switch(a+b); B) switch(a*a+b*b) case 1:y=a+b;break; case 3:case 0:y=a-b;break; case 1:y=a-b;break; case 3:y=b-a;break;C) switch a D) switch(a-b) case c1:y=a-b;break; default:y=a*b;break;case c2:y=a*d;break; case 3:case 4:x=a+b;break;default:x=a+b; case 10:case 11:y=a-b;break; 81. 有以下程序段int k=0;while (k=1) k+;while 循环执行的次数是( )。A) 无限次 B) 有语法错,不能执行C) 一次也不执行 D) 执行 1 次82. 以下程序执行后 sum 的值是( )。main() int i, sum;for (i=1;i6;i+) sum+=i;printf(%dn,sum);A) 15 B) 14 C) 不确定 D) 083. 有以下程序段int x=3;do printf(%d,x-=2);while (!(-x);其输出结果是( )。A) 1 B) 3 0 C) 1 -2 D) 死循环84. 若变量 c 为 char 类型,能正确判断出 c 为小写字母的表达式是( )。A) a=c=a)|(c=z)C) (a=c) D) (c=a)&(c=z)85. 以下所列的各函数首部中,正确的是( )。A) void play(var a:integer,var b:integer)B) void

温馨提示

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

评论

0/150

提交评论