




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计综合练习题一 、选择题C(1)以下叙述中正确的是 A)C语言比其他语言高级 B)C语言可以不用编译就能被计算机识别执行 C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D)C语言出现的最晚,具有其他语言的一切优点a.错误,c语言是由B语言发展过来,是低级语言向高级语言发展的过渡语言,而且更偏向底层java和C#才算是高级语言b、明显错误,C语言是编译型语言,需要编译执行d、这就错的更离谱了,现在微软都在研制F#,C怎么可能最晚?再说,java和c#都比它晚了,再说一下,C语言的主要优点是简洁紧凑、可移植性强,由指针这一特色,更能操作底层,它没有java的跨平台性,没有C#的通俗性。最后,说下C,早期的C在贝尔实验室研制出来的,用于做数值计算和一些数学模型的求解,所以更接近自然语言和数学语言B(2)在一个C语言程序中 A)main()函数必须出现在所有函数之前 B)main()函数可以在任何地方出现 C)main()函数必须出现在所有函数之后 D)main()函数必须出现在固定位置B(3)下列关于C语言用户标识符的叙述中正确的是 A)用户标识符中可以出现下划线和中划线(减号) B)用户标识符中不可以出现中划线,但可以出现下划线 C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头 D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头A不能出现中划线C下划线可以放在开头D数字不能放开头D(4)下列关于单目运算符+,-的叙述中正确的是 A)它们的运算对象可以是任何变量和常量 B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量 C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量 D)它们的运算对象可以是char型变量、int型变量和float型变量A(5)有以下程序段: int m=0,n=0;char c=a; scanf(%d%c%d,&m,&c,&n); printf(%d,%c,%dn,m,c,n); 若从键盘上输入:10A10回车,则输出结果是 A)10,A,10 B)10,a,10 C)10,a,0 D)10,A,0格式字符%d用于输入整数,%c用于输入字符。在输入时,系统把第一个10作为整数10赋给m,把随后的A作为字符赋值给c,后面的10作为整数赋给n,最后输出的结果为10,A,10 printf语句中,屏幕输出时所显示的间隔符应与输出格式项之间的间隔符一致。C(6)有以下程序: main() int i=1,j=1,k=2; if(j+k+)&i+) printf(%d,%d,%dn,i,j,k); 执行后输出结果是 A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3C语言中,执行“”运算的两个操作数,若有1个值为1,则整个表达式的值都为1。若该运算符左边操作数的值为1,则就不继续执行其右边的操作数,故最终i,j,k的值为2,2,2。D(7)有以下程序: main() int p7=11,13,14,15,16,17,18,i=0,k=0; while(iy?x:y; int f2(int x,int y) return xy?y:x; main() int a=4,b=3,c=5,d,e,f; df1(a,b);d=f1(d,c); e=f2(a,b);e=f2(e,c); f=a+b+c-d-e; printf(%d,%d,%dn,d,f,e); 执行后输出结果是 A)3,4,5 B)5,3,4 C)5,4,3 D)3,5,4函数f1()的功能是返回两数中的较大值,函数f2()的功能是返回两数中的较小值,所以经过两次赋值后,d=5,e=3,f=a+b+c-d-e=4。D(10)若程序中已包含头文件stdioh,以下选项中,正确运用指针变量的程序段是 A) int*i=NULL; B) float*f=NULL; scanf(d,i); *f=105; C) chart=m, *c=&t; D) long*L; *c=t; L=0;选项C)显然不对。选项A),B),D)从语法上讲都是可以的,但内存中地址为NULL,即地址0的单元不能随意存放用户数据,因为这样可能会破坏其他程序。选项D)中尽管用了0(在内存中也为0),但并未向该单元存放数据,故该项正确。C(11)已定义c为字符型变量,则下列语句中正确的是 A)c=97; B)c=97; C)c=97; D)c=a;字符常量是用单撇号括起来的一个字符或一串字符,故选项A)不正确。选项B),D)均为字符串。而选项C)是把ASCII码值为97的字符赋给了变量c。B(12)以下选项中不能正确把cl定义成结构体变量的是 A)typedef struct B)struct color cl int red; int red; int green; int green; int blue; int blue; COLOR; COLORcl; C)struct color D)struct int red; int red; int green; int green; int blue; int blue; cl; cl;选项A)是把结构体类型改名后定义为变量cl。选项C),D)则是在定义结构体类型时定义变量,而选项B)不符合结构体类型定义的语法规则。D(13)下列选项中正确的语句组是 A)char s8; s=Beijing; B)char *s;s=Beijing; C)char s8;s=Beijing; D)char *s;s=Beijing;C语言不允许通过赋值语句给字符数组赋值,故选项A),C)不正确,而“”是在定义变量的同时对变量进行初始化时使用,在赋值时不能使用。B(14)下列函数定义中,会出现编译错误的是 A)max(intx,inty,int*z) B) int max(int x,y) *z=xy ? x:y; intz; z=xy ? x:y; return z; C)max(intx,inty) D)int max(intx,inty) intz; return(xy?x:y); z=xy?x:y;return(z); 定义函数时,若需要声明形式参数时,则每个形式参数都必须单独声明类型D(15)有以下程序: fun(inta,intb) if(ab)return(a); elsereturn(b); main() int x=3, y=8, z=6, r; r=fun(fun(x, y),2*z); printf(dn,r); 程序运行后的输出结果是 A)3 B)6 C)8 D)12此题考查了带返回值的函数的调用。fun()函数的功能是求出两个数的最大数并返回主函数r=fun(fun(x,y),2*z)处。执行过程为先调用函数fun(x,y)求得两数中的较大者,再进行自身的递归调用,此时函数中的两个参数为刚求得的数和2*z(即12)传递给子函数,找出两数中的大数。二、填空题1. 算术运算符 与关系运算符优先次序_ 算术运算关系运算2. a和b值分别为4和5,则!a|b的值为_1_ , 4 & 0 | 2的值为_。3. 判别某一年Year是否闰年,用逻辑表达式表示_. (year4=0&year100!=0)|year400=04下面程序的运用结果是: 。3和5void swap(int *a,int *b) int *t;t=a; a=b; b=t;mian() int x=3, y=5, *p=&x, *q=&y; swap(p,q); printf(“%d%d/n”,*p,*q); 5.下面程序的运用结果是: 。typedef union student char name10; long sno;char sexfloat score4; STU; mian() STU a5; printf(“%d/n”,sizeof(a);【答案】80 【解析】sizeof(a) = sizeof(float score4)*5=16*5=80union的大小为最大成员的大小 6、执行以下程序后,输出“#”号的个数是 。 #include main() int i,j; for(i=1;i5;i+) for(j=2;j=i;j+) putchar(#); 【答案】6 【解析】 第一层循环条件成立时,i的值分别为1,2,3,4。而第二层循环条件成立时i的值只能是2,3,4。j=i共执行6次。7、以下程序运行后的输出结果是 main() inti,n=0,0,0,0,0 for(i=l;i=4;i+) ni=ni-1*2+1; printf(d,ni); 【答案】13715【解析】循环的作用是控制数组中后一个元素的值是前一个元素值的两倍加1。8、以下程序运行后的输出结果是 int a=5; fun(int b) static int a=10; a+=b+; printf(d,a); main() intc=20; fun(c); a+=c+; printf(dn,a); 【答案】30 25【解析】当调用fun()时把c的值传给形参b,在执行子函数fun()中的a+=b+时,实际上静态变量a起作用,因此a的值变为30,然后回到主函数,执行a+=c+,此时起作用的是外部变量a,因此外部变量a的值由5变为25。9、以下程序运行后输入3,abcde,则输出的结果是 。 #include move(char*str,int n) chartemp;inti; temp=strn-1; for(i=n-1;i0;i-) stri=stri-1; str0=temp; main() char s50; int n,i,z; scanf(d,s,n,s); z=strlen(s); for(i=l;i=n;i+) move(s,z); printf(sn,s); 【答案】cdeab【解析】本题主要考查函数move()的功能。经过分析可知,每次调用该函数时,都是把最后一个字符移到串的最前端,而原先的第一个字符至倒数第二个字符顺次后移。10、已有定义如下: struct node intdata; struct node*next; *p; 以下语句调用malloc()函数,使指针p指向一个具有struct node类型的动态存储空间。请填空。 p=(struct node*)malloc( );【答案】sizeof(structnode)【解析】本题考查了结点的动态申请。动态申请需用到的函数为malloc(),malloc()中的参数应为结点占用的存储空间的大小,此题申请的结点要用来存放structnode类型的数据,因此申请的结点大小恰好可以存放structnode类型的数据,而sizeof()函数的作用是求得类型或数据占用的存储空间的大小。三、改错题1题:为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换;输出数组元素。程序中共有4条错误语句,请改正错误。main()int a10;void input();void output();void max_min();input(a,10);max_min(a,10);output(a,10);void input(int *arr,int n) int *p,i; p=arr; printf(please enter 10 integers:n); for(i=0;in;i+)/*FOUND*/ sca(%d,&p+); void max_min(int *arr,int n) int *min,*max,*p,t; min=max=arr; for(p=arr+1;p*max) /*FOUND*/ *max=*p; else if(*p*min) min=p; t=*arr;*arr=*min;*min=t;/*FOUND*/ if(max=arr) max=min; t=*(arr+n-1);*(arr+n-1)=*max;*max=t;void output(int *arr,int n) int *p,i; p=arr; printf(The changed array is:n);/*FOUND*/while(i=0;i*max) if(*max*p)3.if(max=arr)4.for(i=0;ii;i+) for(p=arr;parr+n;) for(i=0;i=i;i+) for(p=arr;p=p;)2题:用起泡法对n个整数从小到大排序。程序中共有3条错误语句,请改正错误。/*FOUND*/void sort(int x,int n)int i,j,k,t;for(i=0;in-1;i+)/*FOUND*/ for(j=0;jxi+1) t=xj;xj=xj+1;xj+1=t; main()int i,n,a100;printf(please input the length of the array:n);scanf(%d,&n);for(i=0;in;i+)scanf(%d,&ai);sort(a,n); printf(output the sorted array:n);for(i=0;i=n-1;i+) printf(%5d,ai);printf(n);1.void sort(int *x,int n) void sort(int x,int n)2.for(j=0;jj;j+) for(j=0;jj;j+) for(j=0;jxj+1) if(xj+1xj)4.sort(a,n);(3)函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给num1和num2分别输入49 和21,则输出的最大公约数为7。 请改正程序中的错误,使它能得出正确的结果。int fun(int a,int b)int r,t;if(ab)t=a;/*FOUND*/b=a;/*FOUND*/a=t;r=a%b;while(r!=0)a=b;b=r;/*FOUND*/r=a/b;/*FOUND*/return a;main()int num1,num2,a;scanf(%d%d,&num1,&num2);a=fun(num1,num2);printf(the maximum common divisor is %dnn,a);1.a=b;2.b=t;3.r=a%b;4.return b; return (b); return(b);(4) fun函数的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线上的元素之和sum。 请改正程序中的错误,使它能得出正确的结果。#include stdio.hint fun() int a33,sum; int i,j;/*FOUND*/ a=0; for(i=0;i3;i+) for(j=0;j3;j+)/*FOUND*/ scanf(%d,aij); for(i=0;i0) sum+=si;c+; i+; /*FOUND*/sum=c;/*FOUND*/return c;main()int x1000;int i=0;do scanf(%d,&xi);while(xi+!=0);pri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 发展对象培训班开班仪式
- 人教版四年级数学下册集体备课教案
- 冻干粉灯检培训
- 工程部培训先进经验分享
- 九年级英语上册 Unit 4 I used to be afraid of the dark Section B(3a-Self Check)教学设计(新版)人教新目标版
- 部门人品培训
- 人教部编版八年级历史上册第6课戊戌变法教学设计
- 财税销售培训
- 2024-2025学年第一学期《德法》复习提纲练习卷含答案
- 绿色思维:环保教育策略
- 湖北省武汉市2025届高中毕业生四月调研考试数学试卷及答案(武汉四调)
- 《结膜炎诊断与治疗》课件
- 2025东风汽车校招人才测评题库
- 云南黔滇行2024-2025学年中考道德与法治试题(含答案)
- 吉林2025年03月长春新区面向社会公开选聘8名各产业招商办公室负责人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 微风发电项目可行报告
- 医院防雷电安全应急预案
- 2025年中小学生安全教育日知识竞赛考试题(附答案)
- 2025年4月自考00152组织行为学押题及答案
- 2025【英文合同】授权代理合同英文范本
- 北师大版2025二年级语文下册期中考试综合检测
评论
0/150
提交评论