《C程序设计》期末复习练习题及参考答案(4).doc
《《C程序设计》期末复习练习题及参考答案(4).doc》由会员分享,可在线阅读,更多相关《《C程序设计》期末复习练习题及参考答案(4).doc(12页珍藏版)》请在咨信网上搜索。
《C次序 方案 》期末复习练习 题及参考答案 (4) 一、单项选择 题 1.有如下次序 片断 : #include <stdio.h> main( ) { int a = 5, b = 4, x, y; x = 2 * a++; printf("a=%d, x=%d\n", a, x); y = --b * 2; printf("b=%d, y=%d\n", b, y); } 那么精确 的实行 结果是 。 A) a=6, x=10 b=3, y=8 √B) a=6, x=10 b=3, y=6 C) a=6, x=12 b=3, y=6 D) 以上均差错 2.有以下次序 片断 : typedef struct { int b; int p; }TYPEA; void f(TYPEA c) { c.b += 1; c.p += 2; } main() { TYPEA a ={1, 2}; f(a); printf("%d,%d\n", a.b, a.p); } 那么次序 运行 后的输出结果是 。 A) 2,3 B)2,4 C)1,4 √D)1,2 3.对于 以下次序 片断 ,描画精确 的选项是 。 int x= -1; do {x=x*x;}while(!x); A)是去世 循环 B)循环 实行 两次 √C)循环 实行 一次 D)有语法差错 4. 一个指针数组的定义 为 。 A) int (*ptr)[5]; √B) int *ptr[5]; C) int *(ptr[5]); D) int ptr[5]; 5. 以下选项中不是合理 用户标识符的是〔 〕。 A) Double √B) unsigned C) intege D) Char 6. 已经清楚 ch是字符型变量,以下不精确 的赋值语句是〔 〕。 √A) ch="a"; B) ch='a'; C) ch='\x61'+3; D) ch='\141'; 7. 经过下述赋值后,变量x的数据典范 是〔 〕。 int x=3; double y; y = (double) x; √A) int B) char C) float D) double 8. 假设 以下次序 运行 时给变量x输出12,那么次序 实行 后的输出结果是〔 〕。 int main() { int x, y; scanf("%d",&x); y = x > 12? x + 10: x – 12; printf("%d\n",y); } √A) 0 B) 10 C) 12 D) 22 9. 假设 有定义 :int a=7; float x=2.5,y=4.7; 那么表达 式x+a%3*(int)(x+y) %2/4的值是〔 〕。 A) 0.000000 √B)2.500000 C) 2.750000 D) 3.500000 10. 假设 有以下代码,那么以下表达 精确 的选项是〔 〕。 int t = 0; while(t = 1) {...} A) 循环 把持 表达 式的值为0 √B) 循环 把持 表达 式的值为1 C) 循环 把持 表达 式不合 法 D) 以上说法都差错 11. 已有定义 :char a[]="xyz", b[] = {'x','y','z'};, 以下表达 精确 的选项是〔 〕。 A) 数组a跟 b的长度一样。 B) a数组长度小于b数组长度。 √C) a数组长度大年夜 于b数组长度。D) 上陈说 法都差错 。 12. 设有定义 :int n1 = 0, n2, *p = &n2, *q = &n1;,那么以下赋值语句中与 n2 = n1;语句等价的是〔 〕。 √A) *p = *q; B) p = q; C) *p = &n1; D) p = *q; 13. 已经清楚 函数的调用 方法 :fread(buf, SIZE, count, fp);,其中 参数buf的含义 是〔 〕。 A) 一个整型变量,代表要读入的数据项总跟 。 B) 一个文件指针,指向要读的文件。 √C) 一个指针,指向要读入数据的存放所在 。 D) 一个存储区,存放待读的数据项。 14. 假设 有定义 :char *p = "abcd"; char c[]="abcd";,那么以下语句中差错 的选项是〔 〕。 A) printf("%c\n", *(p++) ); B) printf("%s\n", p ); √C) printf("%c\n", *(c++) ); D) printf("%s\n", c ); 15. 有以下次序 #include <stdio.h> int f(int x) { int y; if(x==0||x==1) return(3); y=x*x-f(x-2); return y; } main() { int z; z=f(3); printf("%d\n",z); } 次序 的运行 结果是〔 〕。 A)0 B)9 √C)6 D)8 16. 〔T3-39〕阅读 以下次序 ,那么运行 结果为〔 〕。 #include "stdio.h" fun() { static int x=5; x++; return x;} main() { int i,x; for(i=0;i<3;i++) x=fun(); printf("%d\n",x);} A)5 B)6 C)7 √D)8 17. 下面次序 段的运行 结果是〔 〕。 char str[]="ABC",*p=str; printf("%d\n",*(p+3)); A)67 √B)0 C)字符′C′的所在 D)字符′C′ 18. 下面的次序 段运行 后,输出结果是〔 〕。 int i,j,x=0; static int a[8][8]; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][j]=2*i+j; for(i=0;i<8;i++) x+=a[i][j]; printf("%d",x); A)9 B)不判定 值 √C)0 D)18 19. 以下次序 实行 后的输出结果是〔 〕。 void func(int *a,int b[]) { b[0]=*a+6; } main() { int a,b[5]; a=0; b[0]=3; func(&a,b); printf("%d\n",b[0]);} √A)6 B)7 C)8 D)9 20. 〔T3-28〕阅读 以下次序 段,那么次序 的输出结果为〔 〕。 #include "stdio.h" #define M(X,Y)(X)*(Y) #define N(X,Y)(X)/(Y) main() { int a=5,b=6,c=8,k; k=N(M(a,b),c); printf("%d\n",k); } √A)3 B)5 C)6 D)8 21. 对于 for(表达 式1; ;表达 式3)可理解为〔 〕。 A) for(表达 式1;0;表达 式3) √B) for(表达 式1;1;表达 式3) C) for(表达 式1;表达 式1;表达 式3) D) for(表达 式1;表达 式3;表达 式3) 22. 合理 的数组定义 是〔 〕。 A) int a[6]={"string"}; B) int a[5]={0,1,2,3,4,5}; C) char a={"string"}; √D) char a[]={0,1,2,3,4,5}; 23. 给出以下定义 : char x[ ]="abcdefg"; char y[ ]={'a','b','c','d','e','f','g'}; 那么精确 的表达 为〔 〕。 A) 数组x跟 数组y等价 B) 数组x跟 数组y的长度一样 √C) 数组x的长度大年夜 于数组y的长度 D) 数组x的长度小于数组y的长度 24. 定义 如下变量跟 数组: int i; int x[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; 那么下面语句的输出结果是〔 〕。 for(i=0;i<4;i++) printf("%3d",x[i][3-i]); A) 1 5 9 13 B) 1 6 11 16 √C) 4 7 10 13 D) 4 8 12 16 25. 有定义 语句: char s[10]; 假设 要从终端给s输出5个字符, 差错 的输出语句是〔 〕。 A)gets(&s[0]); B) scanf("%s",s+1); C)gets(s); √D)scanf("%s", s[1]); 26. 以下次序 的运行 结果是〔 〕。 #include <stdio.h> char fun(char *s) { if( *s >='a'&& *s <='z' ) *s=*s-32; return *s; } void main() { char a[20]="Welcome",*p,ch; for(p=a;*p!='\0';p++) { ch=fun(p); putchar(ch); } } √A) WELCOME B) Welcome C) COME D) WEL 27. 以下次序 的运行 结果是〔 〕。 #include <stdio.h> int fun(int x) { int y=1; static int z=4; z+=1;++y; return x+y+z ; } void main() { int i; for(i=1;i<=3;i++)printf("%3d",fun(i)); } √A) 8 10 12 B)8 10 12 C) 4 6 8 D) 4 6 8 28. 以下次序 的运行 结果是〔 〕。 #include <stdio.h> void main() { int a[3][4]={{1,2,3,4},{9,7,10,6},{-1,8,-5,5}}; int i,j,row=0,colum=0,max; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) { max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d",max,row,colum); } A) max=8,row=0,colum=2 B) max=4 ,row=2,colum=1 √C) max=10 ,row=1,colum=2 D) max=1 ,row=1,colum=2 29. 以下次序 的运行 结果是〔 〕。 #include <stdio.h> void swap(int b[]) { int *p,*p1,*p2; p1=&b[0]; p2=&b[1]; p=p1; p1=p1+1; p2=p; } void main() { int a[]={9,3}; swap(a); printf("%d,%d\n",a[0],a[1]); } A)3,9 B) 10,4 C) 10,3 √D) 9,3 30. 以下次序 的运行 结果是〔 〕。 #include <stdio.h> int b=3; int fun(int *a) { b+=*a; return(b); } void main() { int a=2, b=2; b+=fun(&a); printf("%d\n",b); } A)4 √B)7 C)5 D)8 二、填空题 1.C语言 源次序 文 件的扩大年夜 名是.C ,经过编译后,生成 文件的扩大年夜 名是.OBJ ,经过连接 后,生成 文件的扩大年夜 名是.EXE 。(小写也精确 ) 2.把a,b定义 成长 整型变量的定义 语句是long a,b;或者 long int a,b; 3.设x跟 y均为整型变量,且x=3,y=2,那么1.0*x/y表达 式的值为1.5 4.已有定义 :float x=5.5; x=(int)x+2; 那么printf("%f", x);的输出值为7.000000 5.已有定义 :int x=0,y=0;那么表达 式:(x+=2,y=x+3/2,y+5)后,变量x的值为 2 ,变量y的值为 3,表达 式的值为 8 。 6.实行 以下语句for(i=1;i++<=5;); 后,变量i的值为 7 。 7. 当有 char *a[5];其语义为定义 了一个名字为a的数组,有5个字符型指针的元素。对以下定义 式停顿说明: int (*b)[5];语义为: 定义 了一个名字为b的指针变量,它只能指向包含 5个int型元素的一维数组; int (*c)(char *),语义为: 定义 了一个名字为c的指针变量,它只能指向带有char *典范 形参, 前去 值典范 为int型的函数 ; 8. C语言 从源次序 的抄写 到上机运行 输出结果要经过: 编辑 、 编译 、 连接 、 运行 四个步伐 。 9. 设有命题:b介于a,c之间且a,b,c互不相当 ,写出对应的逻辑表达 式: a<b&&b<c || c<b&&b<a 。 10. 设有定义 :int n=123; float x=95.123; 写出语句 printf("%d,%05d,%4.1f,%1.2f",n,n,x,x);的运行 结果 123,00123,95.1,95.12 。 三、次序 运行 结果分析题 1. #include <stdio.h> main() { int n = 0; char c; while((c=getchar( )) != '\n') { if (c>='0' && c<='9') n = n * 10 + c - '0'; } printf("value=%d\n", n); } 次序 运行 时输出为:2020<回车> 时,那么次序 运行 结果是:2020 2. #include<stdio.h> main() { int a = 1, b = 0; switch (a) { case 1: switch (b) { case 0: a++; b++; printf("a=%d, b=%d\n", a, b); break; case 1: a++; b++; printf("a=%d, b=%d\n", a, b); break; } case 2: a++; b++; printf("a=%d, b=%d\n", a, b); break; } } 运行 结果是: a=2, b=1 a=3, b=2 3. #include<stdio.h> #include<string.h> main() { printf("%d\n", strlen("IBM\n012\1\\"));} 次序 运行 结果是:9 4. #include<stdio.h> main() { int i, a[10]; int *p; p = a; for (i=0; i<10; i++) { scanf("%d", p+i); } for (p=a; p<a+10; p++) { printf("%d\t", *p); } printf("\n"); for (p=a; p<a+10; p++) { if (*p % 2) printf("%d\t", *p); } } 次序 运行 时输出为:1<回车>2<回车>3<回车>4<回车>5<回车>6<回车>7<回车>8<回车>9<回车>10<回车> 时,那么次序 运行 结果为: 1 2 3 4 5 6 7 8 9 10 1 3 5 7 9 5. #include <stdio.h> int mod(int x, int y) { return (x % y);} main() { int m, n, r; scanf("%d %d", &m, &n); r = mod(m, n); while (r != 0) { m = n; n = r; r = mod(m, n); } printf("The Result is :%d\n", n); } 次序 运行 时输出:81<空格>18 <回车>,那么运行 结果是: The Result is : 9 6. 当运行 以下次序 时,运行 结果是__ Shanghai __。 #include <stdio.h> #include <string.h> #define MaxLen 20 void fun(char (*p)[MaxLen], int n) { char t[MaxLen]; int i,j; for(i = 0; i < n - 1; i++) for(j = i + 1; j < n; j++) if(strcmp(p[i],p[j]) > 0) {strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);} } int main() { char city[][MaxLen]={"Guangzhou","Beijing","Shenzhen","Shanghai"}; fun(city,4); printf("%s\n",city[2]); return 0; } 7.以下次序 的输出结果是______________。 #include <stdio.h> int main() { int i,j; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) { if(i <= j) printf("%-2d", j + 1); else { putchar('#'); putchar('*'); } } printf("\n"); } return 0; } 8. 当运行 以下次序 时,从键盘输出如下内容后回车:2673 ,那么下面次序 的运行 结果是___66977_________。 #include <stdio.h> int main() { int c; while( (c = getchar()) != '\n') { switch(c-'2') { case 0: case 1: putchar(c+4); case 2: putchar(c+4); break; case 3: putchar(c+3); case 4: putchar(c+3);break; } } printf("\n"); return 0; } 9. 有以下次序 D #include <stdio.h> void fun(char *t,char *s) { while(*t!=0) t++; while((*t++=*s++)!=0); } main() { char ss[10]="acc",aa[10]="bbxxyy"; fun(ss,aa); printf("%s,%s\n",ss,aa); } 次序 的运行 结果是__accbbxxyy,bbxxyy _____。 四、次序 填空题 阅读 次序 ,在标有下划线的空白 处填入适当 的表达 式或语句,使次序 残缺并符合 题目 恳求 。 1. 以下次序 将输出的十进制数以十六进制的方法 输出。 #include <stdio.h> main() { char b[17]= {"0123456789ABCDEF"}; int c[64],d, i=0, base = 16; long number; printf("请输出一个十进制数\n"); scanf("%ld", &number); do { c[i] = number % base; number = number / base; i++; }while (number != 0); printf("对应的十六进制数为: \n"); for(--i; i>=0; --i) { d = c[i]; printf("%c", b[d]); } printf("\n"); } 用户从键盘任意 输出一个数字表示 月份值n,次序 表示 该月份对应的英文表示 ,假设 n不在1~12之间,那么输出“Illegal month〞。 #include <stdio.h> main() { int n; static char monthName[][20]={ "Illegal month", "January","February","March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; printf("Input month number:"); scanf("%d", &n); if ((n <= 12) && (n >= 1)) {printf("month %d is %s\n", n, monthName[n]); } else {printf("%s\n", monthName[0]); } } 3.设有一元二次方程Ax2+Bx+C=0,以下次序 揣摸 方程根的情况,并打算 现实上 根,次序 中定义 变量a,b,c分差错 应方程的系数A、B、C,请补齐代码使次序 能够 精确 运行 。 #include <stdio.h> #include <math.h> int main() { ___ void fd(double, double, double); ____ double a,b,c; printf("请输出一元二次方程的系数:a=?,b=?,c=?\n"); scanf("a=%lf,b=%lf,c=%lf", ____&a, &b, &c _); fd(a,b,c); return 0; } void fd(double a, double b, double c) { double disc,x1,x2; if( fabs(a) <= 1e-6) { printf("不是一元二次方程\n" ); } disc = b * b - 4 * a * c; if(______fabs(disc)<=1e-6 _______) {printf("有2个相当 的实根:x1 = x2 = %8.4f\n",-b/(2 * a) );} else if( disc > 1e-6) { x1 = (-b + sqrt(disc) ) / ( 2 * a ); x2 = (-b - sqrt(disc) ) / ( 2 * a ); printf("有2个不相当 的实根:x1 = %8.4f, x2 = %8.4f\n", x1, x2 ); } else {printf("无实根\n" ); } } 精选可编辑- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C程序设计 程序设计 期末 复习 练习题 参考答案
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文