C语言综合练习题_第1页
C语言综合练习题_第2页
C语言综合练习题_第3页
C语言综合练习题_第4页
C语言综合练习题_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

综 合 练 习 题一、从下列四个供选择的答案中选出正确的一个答案1、语句printf(“%d%d”, 123); 将输出:A) %123%d B) %d123 C) %d123 D)上述语句语法有错2、执行下列程序段后, a值为:int a, b;a=15; b=12;a=(a- =b+)? a%5 : a/5;A) 0 B) 2.8 C ) 4 D) 2 3、判断字符变量c的值为数字(0-9)则返回1,否则返回0, 可用表达式:A) 0=c=9 B) 0=c & c=9 C) 0=c | c= 9 D)以上均不是4、对于int x, y; 语句 if (x=0) if (x) y=1; else y= -1; B) if (x!=0) if (x0) y=1; else y= -1; else y=0;C) if (x0) y=1; else y=0;5、循环 for(i=0, j=5; +i!=-j; ) printf(“%d %d”, i, j); 将执行A) 6次 B) 3次 C) 0次 D) 无限次6、下列程序段执行后s值为:int i=5, s=0;do if (i%2) continue; else s+=i; while (-i);A) 15 B) 9 C) 6 D) 以上均不是7、对于int a,要使(11)|a)=a; 则a 可以是:A) 2 B) 6 C) 10 D) 2,6,10均可8、对于以下宏定义:#define SQ(x) x*x#define DD(x,y) SQ(x)-SQ(y) 宏调用DD(2*3, 2+3)执行后值为:A) 43 B) 11 C) 25 D) 以上均不是9、对于以下结构定义:struct int len; char *str; *p; *p-str+中的+加在A) 指针str上 B) 指针p上 C) str所指的内容上 D) 以上均不是10、将s所指节点加到p所指节点之后(如下图), 其语句应为: next . . p next sA) s-next = p+1; p-next = s; B) p-next = s; s-next = p-next;C) s-next=p-next; p-next=s-next;D) s-next = p-next; p-next = s;11、语句if (ab) k=0; else k=1; (int a, b, k) 等价于:A) k=(ab)?1:0; B) k=ab; C) k=a=b; D) 以上均不是12、对于int i; char c, s20;从输入序列123ab45efg中将123读入i; b读入c; “45efg” 读入s, 则scanf语句应写为:A) scanf(“%da%c%s”, i, c, s) B) scanf(“%d%*c%c%s”,&i, &c, s);C) scanf(“%da%c%s”, &i,&c,&s) D) scanf(“%d%c%c%s”, &i, &c, s);13、若有以下说明和语句, 已知int和double类型分别占2和8个字节,则sizeof(st)的值为:struct st char a10;union int i;double y;A) 18 B) 20 C) 12 D) 以上均不是14、对于以下程序段, 运行后i值为:enum 1,2,3,4,5,6,7 WEEKS;enum WEEKS a=1;int i=0;switch (a) case 1: i=1;case 2: i=2;default: i=3;A) 1 B) 0 C) 3 D) 上述程序有语法错误15、对于以下递归函数f, 调用f(4),其返回值为:int f(int n) return f(n-1)+n; A) 10 B) 11 C) 0 D) 以上均不是 16、某一程序TEST.C,编译后运行:TEST 123 456 ABC 则相应的argc及argv3分别为: A) 3 “456” B) 3 “ABC” C) 4 “456” D) 4 “ ABC”17、如下程序段: int c=1, 7, 12; int *k; k=c; printf(%d,*+k); 其输出应为: A) 2 B) 7 C) 1 D)以上均不对18、如果变量xx有如下类型: struct char a1; int a2; xx; 如果sizeof(xx)的值为3, 则: union char a1; int a2; int a3; yy; 做sizeof(yy)函数的返回值应为: A) 2 B) 4 C) 5 D)定义有错19、对于enum RAIN, CLOUD, CLEAR weather;做如下操作: weather=1; weather=CLOUD; 下列哪个说法是对的。 A) 是错的 B) 是错的 C) 与是一样的 D)以上都错20、设 int a1=7, a2=1, xx; 进行如下操作xx = ( a1 1 )&( a23) if ( i8) ? 14:21) = 14); 后变量i,j的值应为: A) i=0 j=1 B) i=1 j=1 C) i=0 j=2 D) i=1 j=224、如果char cc=12345,做sizeof(cc)后的返回值应为 A) 2 B) 5 C) 6 D) 125、如果 int i=16, j=23 ; 执行 printf(%x-%o,i, j)后输出为: A) 10-23 B) 10-27 C) 16-23 D) 16-2726、执行下列程序: #define MA(x, y) (x)*(y) int i = 2; i = 3/MA(i, i+1)+5; printf(“%dn”, i); 其输出应为: A) 5 B) 8 C) 0 D) 以上都错27、有一函数: int f(int a) auto int b = 0; static int c = 3; b = b+1; c = c+1; return(a+b+c); 如果有int i, j; 则执行两次调用:i=f(2); j=f(2) 后, i, j值为: A) i = 7, j = 7 B) i = 7, j = 8 C) i = 8, j = 7 D) i = 8, j = 828、有一函数: int f(char *s) int k = 0; while (*s) k = k*10+*s+-0; return(k); 调用f(“1234”)的返回结果是: A) “1234” B) 1234 C) “4321” D) 432129、static int a = 1,2,3, *p, *q; p = a+1; q = p+; 执行该程序段后, p和q所指向的单元的内容分别为: A) (*p) = 1, (*q) = 2 B) (*p) = 2, (*q) = 3 C) (*p) = 3, (*q) = 2 D) 以上都错30、static struct int x, y3; a3 = 1,2,3,4,5,6,7,8,9,10,11,12, *p; p = a; 则*(int *)(p+1)+2) = ? A) 3 B) 7 C) 10 D) 以上都错二、填空题1、用for循环打印 1 4 7 10 13 16 19 22 25 , 其语句应为:for (i=1; i0)? x*f(x-1):3); i=f(f(1);6、执行完下列语句段后, s和f值分别为: _char s20;double f;sscanf(“%s%lf 12.4%s%f12.5”, “%s %lf”, s, &f);7、对于char c; 若已知其值为小写字母, 将其转换为相应大写字母的表达式为_8、对于如下类型定义A:typedef int (*A10)(); 也可以用以下方式分开定义:typedef _; /*先定义PT*/typedef PT A10 ;9、将p说明为字符数组指针,数组大小为10,可写为:_10、如下函数void f(char *s, char *t) int i;i=0;while (si=ti) i+; 等价于:void f(char *s, char *t)while (_ = *t+);11、int i=0, s=0;while (inext)s += _;13、下列程序判断字符串s是否对称,对称则返回1,否则返回0; 如f(“abcba”)返回1, f(“abab”)返 回0;int f(_)int i=0,j=0;while(sj) j+;for ( j-; ij & _; i+, j-) ;return _;14、下面是用二分法从数组vn中查找数x的函数,返回值为x所在下标(若找到)或-1(没找到):binsearch(int x, int v, int n)int low, high, mid;low=0; high=n-1;while (low=high) mid = _;if (xvmid) low = mid +1;else return _;return -1;15、下面程序验证哥德巴赫猜想, 即寻找2到1000间满足“偶数=素数1+素数2”(如10=3+7)的所有偶数。素数指只能被1和自身整除的正整数,如1,2,3,17等。#include #define MAX 500int prime(int n) /* 判断n是否为素数 */ int i;for (i=2; i=n-1; i+)if (!(n%i) break;return _;main() int i, j;for (i=1 ; i=500; i+)for (j=1; j2*i; j+=2)if (_) printf(“%d = %d +%dn”, 2*i, j, 2*i-j); /*若2*i为两个素数之和 */break;16、对于整型变量i,j执行scanf(%d%*d%d,&i, &j);当输入2 3 4 5 6后 i=_ j= _17、对于 int *p, *q, i=5, j=6;执行: p = &i; q = p; p = &j;后 (*p)=_ _ , (*q)= _18、f( int m ) int i, j; for( i=0; i=0; j-) printf(“%1d%c,i+j, j?*:#); 如果调用f(3)将输出_19、void f( int *a, int b ) static int k=0; *a += +k; b +=2; 若执行 i=2; j=4; f( &i, j ); f( &j, i ) 后 i= _, j= _20、用for循环打印 0 1 2 0 1 2 0 1 2; for( i=1; i=9; i+ ) printf(%2d, _);21、定义一个返回整型的函数指针p,应写为 _ 22、定义字符指针数组arr, 数组大小为20,应写为 _23、程序 void f( char cc ) char ch; int i=0,j=0; while ( cci!=NULL ) i+; i -; for( ;ji; i-,j+ ) ch = ccj; ccj = cci; cci = ch;等价于程序 void f( char *cc ) char *p1, *p2, ch; p1=p2=cc; while(_) p2+; p2 - -; while( p1p2 ) ch = *p2; _ = *p1; _ = ch; _; p2 - -; 24、程序: int f( int n ) if(n=1) return n; else return f(n-1)+f(n-2); 等价于程序: int f( int n ) _; t0=0; t1=1; t=n; while (_) t = _; t0 = t1; t1 = t; n - -; return _; 25、下列函数strcmp(s1, s2)是字符串比较, 根据s1,s2大小分别返回负数(s1s2). 请将缺少的部分补上。 strcmp(_) for(; *s1!=_; +s1, +s2) if (*s1!= *s2) break; return (_); 26、下列函数f(A, n, x)将正整数x插入已从小到大排序好的数组A中. 数组A当前分量个数为 n. 例如, 当A的前5个分量为(2,3,9,12,15), n=5时, 调用f(A,n,10)后, n变为6, A的前6个 量为:(2,3,9,10,12,15)。 void f(_) int t, i; i=n; An+1=_; while (i=0) & (_) t=Ai; Ai=Ai+1; Ai+1=t; i - -; n+; 27、本程序从一个文件中from.txt读出内容,除去其中的数字后写入另一文件to.txt。请将程序 中所缺的部分补上。 #include int main() FILE *fr, *to; int cc; if (_) printf( Can not open file- form.txt ); return 1; if (_) printf( Can not open file- to.txt ); return 1; while ( ( cc = getc( fr ) ) != EOF ) if ( cc9 ) _; _; 三、程序阅读理解,并回答相应问题1、#include int a34=1,2,3,4,5,6,7,8,9,10,11,12;main()int s, i;for(s=0, i=0; i3; i+)s+= *(*a+i);printf(“%d ”, s); for(s=0, i=0; i3; i+)s+= *(a+i);printf(“%d ”, s); 问题: 上述程序运行后, 将输出_2、#include int x,y,z,w;void p(int x, int *y) int z;+x;+*y;z=x+*y;w+=x;printf(“%3d%3d%3d%3dn”, x,*y,z,w);main()x=y=z=w=2;p(y, &x);printf(“%3d%3d%3d%3dn”, x,y,z,w);问题: 上述程序运行后, 第一行将输出_ 第二行将输出_3、#include int a25;void p1(int v) int i, j, temp;for (i=1; i=0 & vjvj+1; j-) temp=vj; vj=vj+1; vj+1=temp;void p2(int v1, int v2)int i=0, j=0;while (i5 & jv2j) printf(%d , v1i+);else printf(%d , v2j+);while (i5) printf(%d , v1i+);while (j5) printf(%d , v1j+);printf(n);main() int i,j;for (i=0; i2; i+)for(j=0; j5; j+)scanf(%d, &aij);p1(a0);p1(a1);for (i=0; i2; i+)for(j=0; j5; j+)printf(%d , aij);printf(n);p2(a0, a1);问题: 当输入5 9 1 12 10 7 3 11 4 10时, 上述程序运行后, 第一行将输出_ 第二行将输出_4、#include void p( int r, int s, int t ) int i,j,x; i=s; j=t; x=rs; while( i j ) while ( ( i = x ) ) /* NOTE 1*/ j-; ri=rj; while ( ( i j ) & ( ri = x ) ) /* NOTE 2*/ i+; rj=ri; ri=x; main() int i,n,a100; scanf(%d,&n); for( i=1; i=n ; i+ ) scanf( %d, &ai ); p( a, 1, n ); for( i=1; i=x改为rj=x,同时将作NOTE 2 标记的一行中的ri=x 对于问题一中的相同输

温馨提示

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

评论

0/150

提交评论