《C程序设计》期末复习练习题及参考答案(1).doc
《《C程序设计》期末复习练习题及参考答案(1).doc》由会员分享,可在线阅读,更多相关《《C程序设计》期末复习练习题及参考答案(1).doc(12页珍藏版)》请在咨信网上搜索。
《C次序 方案 》期末复习练习 题及参考答案 (1) 一、单项选择 题 1. 以下不克不迭 对二维数组a停顿精确 初始化的语句是 A〕int a[2][3]={0}; B〕int a[][3]={{1,2},{0}}; √C〕int a[2][3]={{1,2},{3,4},{5,6}}; D〕int a[][3]={1,2,3,4,5,6}; 2.有以下次序 片断 float fun(int x,int y〕 { return(x+y);} main(){ int a=2,b=5,c=8; printf〔"%3.0f\n",fun((int)fun(a+c,b),a-c)〕; } 次序 运行 后的输出结果是: A)编译出错 √B)9 C)21 D)9.0 3.假设 有以下调用 语句,那么不精确 的fun函数的函数原型是 main() { … int a[50],n; … fun(n, &a[9]); … } A〕void fun〔int m, int x[]〕; B〕void fun〔int s, int h[41]〕; C〕void fun〔int p, int *s〕; √D〕void fun〔int n, int a〕; 4.下面次序 片断 的实行 结果是: #define MAX 10 int a[MAX], i; main( ) { printf("\n"); sub1( ); sub3(a); sub2( ); sub3(a); } sub2( ) {int a[MAX], i, max=5; for(i=0; i<max; i++) a[i]=i; } sub1( ) {for(i=0; i<MAX; i++) a[i]=i+i;} sub3(int a[ ]) { int i; for(i=0; i<MAX; i++)printf("%d",a[i]); printf("\n"); } A) 0 2 4 6 8 10 12 14 16 18 0 1 2 3 4 10 12 14 16 18 B) 0 1 2 3 4 0 2 4 6 8 10 12 14 16 18 C) 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 √D) 0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 18 5. 以下次序 实行 后的输出结果是 #include <stdio.h> main() { int a[3][3], *p, i; p = &a[0][0]; for (i=1; i<9; i++){p[i]=i+1;} printf("%d\n",a[1][2]); } A〕3 √B〕6 C〕9 D〕随机数 6. 以下关于 C语言 次序 的描画精确 的选项是〔 〕。 √A)main〔〕函数可以 在任何所在 出现。 B)main〔〕函数必须 出现在次序 的结实 位置。 C)main〔〕函数必须 出现在所欲函数之前。 D)main〔〕函数必须 出现在所有 函数之后。 7. 用C语言 编写的C次序 称为〔 〕。 √A) 源次序 B) 目标 次序 C) 汇编次序 D) 命令 次序 8. 设有定义 int a = 5, b; 实行 以下语句后,b的值不为2的是〔 〕。 √A) b=a%2; B) b=a/2; C) b=6-(--a); D) b=2; 9. 以下次序 实行 后的输出结果是〔 〕。 #include <stdio.h> int main() { int x = 0, a = 10, b = 20, c = 15; if(a > b) if(b < c) x = 1; else x = 2; printf("%d\n",x); return 0; } √A) 0 B) 1 C) 2 D) 3 10. 已经清楚 字母'b'的ASCII码值为98,如ch为字符型变量,这表达 式ch='b'+'5'-'2' 的值是〔 〕。 A) 'd' √B) 'e' C) 100 D) 102 11. 有以下次序 #include<stdio.h> main() { static char a[ ]="language",b[ ]="programe"; char *p1,*p2; int k; p1=a; p2=b; for(k=0;k<=7;k++)if(*(p1+k) == *(p2+k)) printf("%c",*(p1+k)); } 次序 的输出结果是〔 〕。 √A) gae B) gue C) gua D) gam 12. 有以下次序 #include <stdio.h> void main() { int i,j=4; for (i=j; i<=2*j; i++) switch(i/j) { case 0: case 1:printf("*");break; case 2:printf("#"); } } 次序 的输出结果是〔 〕。 √A) ****# B) *#**# C) #**# D) **## 13. 有以下次序 main() { int i,j,x =0; for(i=0;i<2;i++) { x++; for(j=0;j<3;j++) {if(j%2) continue; x++; } x++; } printf("x=%d\n",x); } 次序 的输出结果是〔 〕。 √A) x=8 B) x=5 C) x=7 D) x=6 14. 以下次序 实行 后的输出结果是〔 〕。 #include <stdio.h> int main() { int x = 1, y = 0, a = 0, b = 0; switch (x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++; b++; break; case 3: a++; b++; } printf("a = %d,b = %d\n",a,b); return 0; } A) a = 1,b = 0 B) a = 2,b = 2 C) a = 1,b = 1 √D) a = 2,b = 1 15. 假设 有下面的语句,那么精确 的说法是〔 〕。 int a[10] = {6, 7, 8, 9, 10}; A) 将5个初值依次赋给a[1]至a[5]。 √B) 将5个初值依次赋给a[0]至a[4]。 C) 将5个初值依次赋给a[6]至a[10]。 D) 因为 数组长度与初值的个数纷歧 样,因而 此语句不精确 。 16. 有以下函数定义 ,那么以下差错 的函数调用 是〔 〕。 int Mul(int a, int b) { return a*b;} A) if(Mul(x,y)); B) z= Mul( Mul(x,y), Mul(x,y) ); √C) z= Mul( Mul(x,y), x, y ); D) Mul(x, y); 17. 以下次序 的运行 结果是〔 〕。 #include <stdio.h> float fun(int x, int y) {return x+y; } int main() { int a = 2, b = 5, c = 8; printf("%3.0f\n",fun( (int)fun(a + c, b), a -c) ); return 0; } A) 编译出错 √B) 9 C) 21 D)9.0 18. 以下次序 的运行 结果是 int k=0; void fun(int m) {m+=k;k+=m;printf("m=%d k=%d ",m,k++);} main() {int i=4; fun(i++); printf("i=%d k=%d\n",i,k); } A)m=4 k=5 i=5 k=5 √B)m=4 k=4 i=5 k=5 C)m=4 k=4 i=4 k=5 D)m=4 k=5 i=4 k=5 19. 有以下次序 main() { int i,s=1; for (i=1;i<50;i++) if(!(i%5)&&!(i%3)) s+=i; printf("%d\n",s);} 次序 的输出结果是 A)409 B)277 C)1 √D)91 20. 假设 变量已正判定 义,有以下次序 段 int a=3,b=5,c=7; if(a>b) a=b; c=a; if(c!=a) c=b; printf("%d,%d,%d\n",a,b,c); 其输出结果是 A)次序 段有语法错 √B)3,5,3 C)3,5,5 D)3,5,7 21. 假设 有定义 :float x=1.5;int a=1,b=3,c=2;,那么精确 的switch语句是 A)switch(x) {case 1.0:printf("*\n"); case 2.0:printf("**\n");} B)switch((int)x); {case 1:printf("*\n"); case 2:printf("**\n");} √C)switch(a+b) {case 1:printf("*\n"); case 2+1:printf("**\n");} D)switch(a+b) {case1:printf(**\n);} casec:printf(**\n);} 22. 以下次序 的输出结果是 #include "stdio.h" main() { int i,a=0,b=0; for(i=1;i<10;i++) { if(i%2==0) {a++; continue;} b++;} printf("a=%d,b=%d",a,b); } A)a=4,b=4 √B)a=4,b=5 C)a=5,b=4 D)a=5,b=5 二、填空题 1、C语言 中全然 的数据典范 有: 整型 、 实型 、 字符型 。 2、在次序 方案 中,需要 用到常量Pi,其中 为结实 值3.14。假设将Pi定义 为标志 常量,其代码为: #define Pi 3.14 ;假设将Pi定义 为常变量,其代码为: const float Pi=3.14; 。 3、设a是一维数组,p是指向数组元素的指针变量,且初始化为p = a;假设要通过指针p引用数组a的下标为i的那个 元素,其代码为: *(p+i) 。 4、实行 以下语句int a=8; a+=a-=a*a; 后,a的值是 - 112 。 5、有如下语句:char A[ ]={〞I am a student〞}; 该字符串的长度是 14 ,A[3]= ’m’ 。 6、标志 〞a〞跟 ’a’的区不是 〞a〞是字符串常量,而’a’是字符常量。 7、所谓“指针〞的确是 所在 。 “&〞运算符的感染 是 取运算东西 的所在 。 “*〞运算符的感染 是 取指针变量所指的内容。 。 三、次序 运行 结果分析题 1.#include <stdio.h> struct STU { char num[10]; float score[3]; }; main() { struct STU s[3]={{"20021",90,95,85}, {"20022",95,80,75}, {"20023",100,95,90}}, *p=s; int i; float sum = 0; for (i=0; i<3; i++) {sum = sum + p->score[i]; } printf("%6.2f\n",sum); } 次序 的运行 结果是:270.00 2.#include <stdio.h> main( ) { char s[100]; char c, i; scanf("%c", &c); scanf("%d", &i); scanf("%s", s); printf("%d,%c,%s\n", c, i, s); } 已经清楚 字符’a’的ASCII码值为97,那么当次序 输出:a<空格>97<空格>123<回车>,次序 运行 结果是:97,a,123 3.#include <stdio.h> int a=13, b=8; int max(int a, int b) { int c; c=a>b?a: b; return(c); } main( ) { int a=5; printf("Max=%d\n", max(a, b)); } 次序 运行 结果是:Max=8 4.以下次序 的输出结果是______________。 #include <stdio.h> int main() { int i,j; for(i = 0; i < 4; i++) { for(j = 0; j < i; j++) putchar('#'); for(j = 0; j < 4; j++) putchar('*'); printf("\n"); } return 0; } 次序 运行 结果是: 5. 当运行 以下次序 时,运行 结果是____3628800_____。 #include <stdio.h> int main() { int fun(int n); int n = 10, y; y = fun(10); printf("%d\n",y); return 0; } int fun(int n) { int f; if(n < 0) {f = 0;printf("error!");} else if( n == 0 || n == 1) f = 1; else f= fun(n -1) * n; return f; } 6.以下函数int strcmp(char *p1,char *p2)比较输出字符串是否 相当 ,假设 相当 那么前去 0,否那么前去 其他 值。当运行 以下次序 时,运行 结果是___-7_____。 #include <stdio.h> #define N 10 int strcmp(char *p1,char *p2) { int k; if(p1 == NULL || p2 == NULL) return -1; //揣摸 p1跟 p2是否 为空指针 while(1) {if( k = *p1 - *p2)break; else if (*p1 == 0 ||*p2 == 0) break; p1++ ; p2++ ; } return k; } int main() { char a[]="China"; char b[]="Japan"; printf("%d", strcmp(a, b)); return 0; } 7.以下次序 的功能 为:已经清楚 数组array中以保存 num个有效整数,并按从小到大年夜 排序,现在再输出一个整数x,并拔出到数组中,保持 数组的数有序,同时更新num的值。假设 输出要拔出的数:70 那么拔出一个数后的数组包含 5个数,次序 运行 结果是:24 55 70 99 110 #include <stdio.h> void fun(int *w, int x, int *n) { int i, p; p = 0; w[*n] = x; while(x > w[p]) p++; for(i = *n; i > p; i --) w[i] = w[i-1] ; w[p] = x; ++ *n ; } int main() { int array[60] = {24, 55, 99, 110}; int num = 4,x,i; printf("请输出要拔出的数:"); scanf("%d",&x); fun(array,x,&num); printf("拔出一个数后的数组包含 %d个数,分不为:\n",num); for(i = 0; i < num; i++) printf("%d ", array[i] ); printf("\n"); return 0; } 8.下面次序 的输出结果是__ xyabcABC __。 #include<stdio.h> #include<string.h> main() { char str1[20]="abc", *p1=str1,*p2="ABC", str[50]= "xyz"; strcpy(str+2, strcat(p1,p2)); printf("%s\n", str); } 9. 当运行 以下次序 时,运行 结果是____________。 #include <stdio.h> void search_s(int (*p)[5],int n,int m,int re[4][2]); void main() { int score[4][5]={ {60,90,92,66,55}, {75,40,58,40,90}, {60,80,66,90,55}, {78,45,56,90,57} }; int result[4][2]={0}; //第一列表示 称心 条件 ,第二列表示 平均分数 search_s(score,4,5,result); for(int i=0;i<4;i++) if(result[i][0] == 1) printf("No.%d has selected, The average is %d\n",i+1,result[i][1]); } void search_s(int (*p)[5],int n,int m,int re[4][2]) { int i,j; int flag; int sum,temp; for(i=0;i<n;i++) { sum = 0; flag = 0; for(j=0;j<m;j++) { temp = *(*(p+i)+j); sum = sum + temp; if( temp < 60) { if(flag == 1) { re[i][0] = 1; } else flag = 1; } } re[i][1] = sum/m; } } 四、次序 填空题 1.阅读 次序 ,在标有下划线的空白 处填入适当 的表达 式或语句,使次序 残缺并符合 题目 恳求 。由键盘输出一个班的某课程的后生成 果,打算 其平均分,然后 输出。〔注:应用 静态数组实现 〕 #include <stdio.h> #include <stdlib.h> main() { int *p=NULL,n,i,sum; printf("please enter array size: "); scanf("%d", &n ); p=(int *)malloc(n* sizeof(int)); if (p==NULL) { printf("no enough memory!\n"); exit(0); //或者 return ; } printf("please enter the score: "); for(i=0;i<n;i++) { scanf("%d",p+i); } sum=0 ; for(i=0;i<n;i++) { sum=sum+*(p+i) ; } printf("aver=%d\n",sum/n); free(p); } 2.输出一个字符数小于100的字符串string,然后 在string所保存 字符串中的每个字符间加一个空格。 #include<stdio.h> #define MAX 100 void CopyString(char c[],char s[]); void Insert(char s[]); main() { char string[MAX]; scanf("%s",string); Insert(string); printf("%s",string); } void CopyString(char c[], char s[]) { int i; for (i=0; s[i]!='\0'; i++) { c[i] = s[i]; } c[i] = '\0'; } void Insert(char srcStr[]) { char strTemp[MAX]; int i = 0, j = 0; CopyString(strTemp, srcStr); while (strTemp[j] != '\0') { srcStr[i] = strTemp[j]; i++; j++; srcStr[i] = ' '; i++; } srcStr[i] = '\0'; } 3.以下次序 从键盘上输出整数n,输出2到n之间的所有 素数。其中 函数getprime求解2到n之间〔包含 2与n〕的所有 素数并保存 在数组a中,同时前去 素数的个数。揣摸 整数m是否 为素数可以 采用以下方法:依次揣摸 m是否 为2到m-1之间各个素数的倍数,假设都不克不迭 整除,那么m是素数。 #include <stdio.h> int main() { int getprime(int a[],int n); int a[100],n,k,i; scanf("%d",&n); k=getprime(a,n); for (i=0;i<k;i++) printf("%d ",a[i]); printf("\n"); return 0; } int getprime(int a[],int n) {/*求解2到n之间的所有 素数,保存 到数组a中,并前去 其个数*/ int m,i,k=0; for ( m=2; m<=n ; m++ ) { /*依次揣摸 m是否 为素数*/ for ( i=0; i<k; i++ ) /*对已求解素数停顿循环 */ if ( m%a[i]==0 ) /*揣摸 是否 为已求解素数的倍数*/ break ; /*假设整除,那么m不是素数*/ if (i==k) a[k++] = m; /*m为素数,保存 到数组a中*/ } return k ; /*前去 素数个数*/ } /*假设输出20,那么输出2 3 5 7 11 13 17 19*/ 精选可编辑- 配套讲稿:
如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。
关于本文