ImageVerifierCode 换一换
格式:DOC , 页数:22 ,大小:144KB ,
资源ID:8744191      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8744191.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(C语言综合练习题及详解.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

C语言综合练习题及详解.doc

1、综 合 练 习 题 一、从下列四个供选择的答案中选出正确的一个答案 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 先计算a--==b++的值:

2、 a--的值为15,执行后a=14;b++的值为12,执行后b=13;15==12为假 执行a/5即14/5值为2 结果: a = 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) y= -1; else if (!x) y=0; else y=1; 等价于: A) y=0; if (x>=0) if (x) y=1; else y= -1

3、 B) if (x!=0) if (x>0) y=1; else y= -1; else y=0; C) if (x<0) y= -1; if (x!=0) y=1; else y=0; D) y= -1; if (x!=0) if (x>0) y=1; else y=0; 语句if (x<0) y= -1; else if (!x) y=0; else y=1; 等价于: if (x < 0) y = -1; else { if (!x) y = 0;

4、 else y = 1; } 即: -1 x < 0 y = 0 x = 0 1 x > 0 5、循环 for(i=0, j=5; ++i!=--j; ) printf(“%d %d”, i, j); 将执行 A) 6次 B) 3次 C) 0次 D) 无限次 i = 0, j = 5, (++iè1) != (--jè4) 成立: i = 1, j = 4 i = 1, j = 4, (++iè2) !=

5、 (--jè3) 成立: i = 2, j = 3 i = 2, j = 3, (++iè3) != (--jè2) 成立: i = 3, j = 2 …… 6、下列程序段执行后s值为: int i=5, s=0; do if (i%2) continue; else s+=i; while (--i); A) 15 B) 9 C) 6 D) 以上均不是 写成规范形式: do if (i % 2) continue; else

6、 s += i; while (--i); i = 5, s = 0: i % 2 = 1: i = 4 i = 4, s = 0: i % 2 = 0: s = 0 + 4 = 4; i = 3 i = 3, s = 4: i % 2 = 1: i = 2 i = 2, s = 4: i % 2 = 0: s = 4 + 2 = 6; i = 1 i = 1, s = 6: i % 2 = 1: i = 0 7、对于int a,要使((1<<2>>

7、1)|a)==a; 则a 可以是: A) 2 B) 6 C) 10 D) 2,6,10均可 1: 0000 0000 0000 0001 1<<2: 0000 0000 0000 0100 1<<2>>1: 0000 0000 0000 0010 (1<<2>>1) | 2: 0000 0000 0000 0010 (2) (1<<2>>1) | 6: 0000 0000 0000 0110 (6) (1<<2>>1) | 10: 0000 0000 0000

8、 1010 (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) 以上均不是 DD(2*3,2+3) èSQ(2*3)-SQ(2+3) è2*3*2*3-2+3*2+3 è43 9、对于以下结构定义: struct { int len; char *str; } *p; *p->str++中的++加在 A) 指针str上 B) 指针p上

9、 C) str所指的内容上 D) 以上均不是 优先级: “->” > “*” = “++”, ++是右结合 *p->str++ çè *((p->str)++) 例子: 假如有 p len 12 str H e l l o , w o r l d ! \0 则*p->str++的值为 ‘H’, 执行后, str指向’e’单元. 10、将s所指节点加到p所指节点之后(如下图), 其语句应为: next . .

10、 p next s A) 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 (a>b) k=0; else k=1; (int a, b, k) 等价于: A) k=(a>b)?1:0; B) k=a>b;

11、 C) k=a<=b; D) 以上均不是 12、对于int i; char c, s[20];从输入序列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个字节,则si

12、zeof(st)的值为: struct st { char a[10]; union { int i; double y; } }; A) 18 B) 20 C) 12 D) 以上均不是 14、对于以下程序段, 运行后i值为: enum WEEKS {1,2,3,4,5,6,7} ; enum WEEKS a=1; int i=0; switch (a) { case 1: i=1; case 2: i=2; default: i=3; } A)

13、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及argv[3]分别为: A) 3 “456” B) 3 “ABC” C) 4 “456” D) 4 “ ABC” argv[

14、0] “TEST” argv[1] “123” argv[2] “456” argv[3] “ABC” 17、如下程序段: int c[]={1, 7, 12}; int *k; k=c; printf("next k is %d",*++k); 其输出应为: A) 2 B) 7 C) 1 D)以上均不对 k

15、 1 c[0] 7 c[1] 12 c[2] 18、如果变量xx有如下类型: struct { char a1; 1 int a2; 2 } xx; 如果sizeof(xx)的值为3, 则: union { char a1; int a2; int a3; } yy; 则

16、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 )&~( a2<<2 )后 xx 的值为: A) 0 B)

17、1 C) 10 D) 以上都错 7: 0000 0000 0000 0111 7<<1: 0000 0000 0000 1110 1<<2: 0000 0000 0000 0100 ~(1<<2): 1111 1111 1111 1011 & 0000 0000 0000 1010 0000 0000 0000 1010 (10) 21、执行 i=3; if(i>3) if ( i<4 ) i=1 else i=2; 后i

18、的值应为: A) 1 B) 2 C) 3 D) 语句错误 22、执行下列程序: #define MA(x, y) ( (x)*(y) ) i=5; i=MA(i,i+1)-7; 后变量i的值应为: A) 30 B) 19 C) 23 D) 1 MA(i,i+1)-7 è ((i) * (i+1)) – 7 è (5 * 6 ) – 7 è 23 23、执行下列程序: int i, j; i = 3/2 + 7/2 == 5; j

19、 = 45 % 11 + (((7>8) ? 14:21) == 14); 后变量i,j的值应为: A) i=0 j=1 B) i=1 j=1 C) i=0 j=2 D) i=1 j=2 i = ((3/2 + 7/2) == 5) = ((1+3) == 5) = (4 == 5) = 0; j = 1 + (21 == 14) = 1 + 0 = 1 24、如果char cc[]="12345",做sizeof(cc)后的返回值应为 A) 2 B) 5 C) 6 D) 1 sizeof()返回参数对象的字

20、节数: 这里的参数是字符数组cc,有6个元素. 25、如果 int i=16, j=23 ; 执行 printf("%x--%o",i, j)后输出为: A) 10--23 B) 10--27 C) 16--23 D) 16--27 26、执行下列程序: #define MA(x, y) (x)*(y) int i = 2; i = 3/MA(i, i+1)+5; printf(“%d\n”, i); 其输出应为: A) 5 B) 8 C) 0 D) 以上都错

21、 3/MA(i,i+1)+5 è 3/(i)*(i+1)+5 è 3/2*3+5 è 8 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 =

22、7, j = 8 C) i = 8, j = 7 D) i = 8, j = 8 注意静态局部变量static int c;的含义 第一次调用f(2): 开始时: b = 0, c = 3 执行: b = 0 + 1 = 1, c = 3 + 1 = 4; 返回: a+b+c=2+1+4=7; 调用结束后: 静态局部变量c=4保持不变; 第二次调用f(2): 开始时: b = 0, c = 4 执行: b = 0 + 1 = 1, c = 4 + 1 = 5;

23、 返回: a+b+c=2+1+5=8; 调用结束后: 静态局部变量c=5保持不变; 28、有一函数: 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) 4321 while循环等价于: while (*s) k = k * 10 + (*s++) – ‘0’;

24、 该函数的作用:将数字字符串转换成相应的整数. 29、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) 以上都错 1 a[0] p 2 a[1]

25、 3 a[2] a 30、static struct { int x, y[3]; } a[3] = {{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) 以上都错 p 1 a[0] 2 3

26、 4 p+1 5 a[1] 6 7 8 9 a[2] 10 11 12 二、填空题 1、用for循环打印 1 4 7 10 13 16 19 22

27、25 , 其语句应为: for (i=1; i<=9; i++) printf(“%3d”, _3*i-2__); 2、执行完下列语句段后, i,j值分别为:___355,350__ int i, j; j=10*(i=5); i+=j*=i+2; 第一条语句执行后: i = 5, j = 50 执行第二条语句: i+=j*=i+2 è i += (j *= (i+2)) è i += (j *= 7) è i += (j = 50*7) è i = 5 + 350 = 355, j = 350 3、执行完下列语句段后, i值为:__5__ sta

28、tic int a[3][4]={{1,2,3},{4,5,6}}, i; i= a[0][5]; a[0][0] 1 X a[0][1] 2 X+2 a[0][2] 3 X+4 a[0][3] ? X+6 a[1][0] 4 X+8 a[1][1] 5 X+

29、10 a[1][2] 6 X+12 a[1][3] ? X+14 a[2][0] ? X+16 a[2][1] ? X+18 a[2][2] ? X+20 a[2][3] ? X+22 a[0][5]的地址: X+(0*4+5)*2 = X + 10, 即对应于a[1][1

30、]。 4、执行完下列语句段后, i值为:__4___ int i; int f(int x) { static int k = 0; x+=k++; return x; } i=f(2); i=f(3); 5、执行完下列语句段后, i值为:__18__ int i; int f(int x) { return ((x>0)? x*f(x-1):3); } i=f(f(1)); 调用f(1): (1>0) 成立,执行1*f(0)=f(0), 调用f(0) = 3 所以,f(1)=3; 调用f(3)

31、 f(3) = 3 * f(2) f(2) = 2 * f(1) = 2 * 3 = 6 所以 f(3) = 3 * 6 = 18 6、执行完下列语句段后, s和f值分别为: __”%s%lf”, 12.4__ char s[20]; double f; sscanf(“%s%lf 12.4%s%f12.5”, “%s %lf”, s, &f); 函数sscanf()的一般形式: sscanf(char *buffer, char *format, var1, var2, var3, …) 它的含义:从缓冲区buffer中按照格式字符串f

32、ormat读入变量var1,var2,var3,…的值。 7、对于char c; 若已知其值为小写字母, 将其转换为相应大写字母的表达式为 ___c – ‘a’ + ‘A’______ 8、将p说明为字符数组指针,数组大小为10,可写为:__char (*p)[10];__ 9、用typedef定义类型CP,以表示一个指向含有10个字符型元素的指针数组类型。 typedef char *CP[10]; 四个步骤: (1) char *ptr[10]; (2) char *CP[10]; (3) typedef char *CP[10]; (4)

33、 CP *ptr[10]; 10、如下函数 void f(char *s, char *t) { int i; i=0; while (s[i]=t[i]) i++; } 等价于: void f(char *s, char *t) { while (_*s++_ = *t++); } 11、int i=0, s=0; while (i

34、序段为: struct nlist { int inf; struct nlist *next; } *head, *p; long s; for (p=head, s=0; _p != NULL_ ; p = p->next) s += __p->inf__; 13、下列程序判断字符串s是否对称,对称则返回1,否则返回0; 如f(“abcba”)返回1, f(“abab”)返回0; int f(__char s[]_) a b c b a \0 { int i=0,

35、j=0; while(s[j]) j++; for ( j--; i=j__; } 14、下面是用二分法从数组v[n]中查找数x的函数,返回值为x所在下标(若找到)或-1(没找到): binsearch(int x, int v[], int n) { int low, high, mid; low=0; high=n-1; while (low<=high) { mid = _ (

36、low+high)/2_; if (xv[mid]) low = mid +1; else return __ mid_; } return -1; } 15、下面程序验证哥德巴赫猜想, 即寻找2到1000间满足“偶数=素数1+素数2”(如10=3+7)的所有偶数。素数指只能被1和自身整除的正整数,如1,2,3,17等。 #include #define MAX 500 int prime(int n) /* 判断n是否为素数 */ {

37、int i; for (i=2; i<=n-1; i++) if (!(n%i)) break; return _ i==n_; } main() { int i, j; for (i=1 ; i<=500; i++) for (j=1; j<2*i; j+=2) if (_prime(j) && prime(2*i-j)_) { printf(“%d = %d +%d\n”, 2*i, j, 2*i-j); /*若2*i为两个素数之和 */ break; }} 16、对于整型变量i,j执行scan

38、f("%d%*d%d",&i, &j);当输入2 3 4 5 6后 i=_ 2_ j= _4__ 17、对于 int *p, *q, i=5, j=6;执行: p = &i; q = p; p = &j;后 (*p)=_ 6_ , (*q)= __5__ 18、f( int m ) { int i, j; for( i=0; i=0; j--) printf(“%1d%c",i+

39、j, j?'*':'#'); } 如果调用f(3)将输出__2*1*0#3*2*1#4*3*2#__ 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= __3__, j= __6___ i 2 è 3 j 4

40、i 3 j 4 è 6 k 0 è 1 k 1 è 2 a b 4 è 6 a b 3 è 5 20、用for循环打印 0 1 2 0 1 2 0 1 2; for( i=1; i<=9; i++ ) printf("%2d", __(i-1)%3__); 21、定义一个返回整型的函数指针p,应写为 _int (*p)();_ 22、定义字符指针数组arr, 数组大小

41、为20,应写为 __char *arr[20];__ 23、程序A void f( char cc[] ) { char ch; int i=0,j=0; while ( cc[i]!=NULL ) i++; i --; for( ;j

42、 } } 等价于程序B void f( char *cc ) { char *p1, *p2, ch; p1=p2=cc; while(_*p2_) p2++; p2 - -; while( p1

43、 _p1++_; p2 - -; } } 24、程序A: int f( int n ) { if(n<=1) return n; else return f(n-1)+f(n-2); } 等价于程序B: int f( int n ) { _int

44、 t0,t1,t_; t0=0; t1=1; t=n; while (_n>=2_) { t = _t0+t1_; t0 = t1; t1 = t; n - -; } return _t_; } 25、下列函数strcmp(s1, s2)是字符串比较, 根据s1,s2大小分别返回负数(s1

45、s2). 请将缺少的部分补上。 strcmp(_char *s1, char *s2_) { for(; s1!=_ ‘\0’_; ++s1, ++s2) if (*s1!= *s2) break; return (_*s1-*s2_); } 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

46、的前6个量为:(2,3,9,10,12,15)。 A[0] A[1] A[2] A[3] A[4]A[5] void f(_int A[], int n, int x_) 2 3 9 12 15 x { int t, i; i=n; A[n+1]=_ x_; i while ((i>=0) && (_A[i]>A[i+1]_)) { t

47、A[i]; A[i]=A[i+1]; A[i+1]=t; i - -; } n++; } 27、本程序从一个文件中from.txt读出内容,除去其中的数字后写入另一文件to.txt。请将程序中所缺的部分补上。 #include int main() { FILE *fr, *to; int cc; if (_(fr=fopen(“fr.txt”, “r”)) ==

48、 NULL_) { printf( " Can not open file--> form.txt " ); return 1; } if (_(to=fopen(“to.txt”, “w”)) == NULL _) { printf( " Can not open file--> to.txt " ); return 1; } while ( ( cc = getc( fr ) ) != EOF ) if ( cc

49、<'0' || cc>'9' ) _putc(cc, to)_; _fclose(fr), fclose(to)_; } 三、程序阅读理解,并回答相应问题 1、 #include int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; main() { int s, i; for(s=0, i=0; i<3; i++) s+= *(*a+i); printf(“%d ”, s); for(s=0, i=0; i<3; i++) s+= **(a+i);

50、 printf(“%d ”, s); } 问题: 上述程序运行后, 将输出__6 15__ a[][ 0] a[][1] a[][2] a[][3] a[0] 1 2 3 4 a[1] 5 6 7 8 a[2] 9 10 11 12 由于:*(a

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服