版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
21/21C语言程序设计综合练习题一、选择题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)有以下程序段:intm=0,n=0;charc=′a′;scanf(″%d%c%d″,&m,&c,&n);printf(″%d,%c,%d\n″,m,c,n);若从键盘上输入:10A10<回车>,则输出结果是A)10,A,10B)10,a,10C)10,a,0D)10,A,0格式字符%d用于输入整数,%c用于输入字符。在输入时,系统把第一个10作为整数10赋给m,把随后的A作为字符赋值给c,后面的10作为整数赋给n,最后输出的结果为10,A,10printf语句中,屏幕输出时所显示的间隔符应与输出格式项之间的间隔符一致。C(6)有以下程序:main(){inti=1,j=1,k=2;if((j++k++)&&i++)printf(″%d,%d,%d\n″,i,j,k);}执行后输出结果是A)1,1,2B)2,2,1C)2,2,2D)2,2,3C语言中,执行“‖”运算的两个操作数,若有1个值为1,则整个表达式的值都为1。若该运算符左边操作数的值为1,则就不继续执行其右边的操作数,故最终i,j,k的值为2,2,2。D(7)有以下程序:main(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf(″%d\n″,k);}执行后输出结果是A)58B)56C)45D)24程序的功能是计算数组中满足条件的数的累加和(遇到第一个偶数为止)。B(8)有以下程序:main(){inti=10,j=1;printf(″%d,%d\n″,i--,++j);}执行后输出结果是A)9,2B)10,2C)9,1D)10,1自增运算符“++”和自减运算符“--”放在变量之后表示,在使用变量之后,再使变量的值加1或减1。若放在变量之前则表示在使用变量之前,先使变量的值加1或减1。C(9)有以下程序:intf1(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;}main(){inta=4,b=3,c=5,d,e,f;d=f1(a,b);d=f1(d,c);e=f2(a,b);e=f2(e,c);f=a+b+c-d-e;printf(″%d,%d,%d\n″,d,f,e);}执行后输出结果是A)3,4,5B)5,3,4C)5,4,3D)3,5,4函数f1()的功能是返回两数中的较大值,函数f2()的功能是返回两数中的较小值,所以经过两次赋值后,d=5,e=3,f=a+b+c-d-e=4。D(10)若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是A)int*i=NULL;B)float*f=NULL;scanf(″%d″,i);*f=10.5;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)typedefstructB)structcolorcl{intred;{intred;intgreen;intgreen;intblue;intblue;}COLOR;}COLORcl;C)structcolorD)struct{intred;{intred;intgreen;intgreen;intblue;intblue;}cl;}cl;选项A)是把结构体类型改名后定义为变量cl。选项C),D)则是在定义结构体类型时定义变量,而选项B)不符合结构体类型定义的语法规则。D(13)下列选项中正确的语句组是A)chars[8];s={″Beijing″};B)char*s;s={″Beijing″};C)chars[8];s=″Beijing″;D)char*s;s=″Beijing″;C语言不允许通过赋值语句给字符数组赋值,故选项A),C)不正确,而“{}”是在定义变量的同时对变量进行初始化时使用,在赋值时不能使用。B(14)下列函数定义中,会出现编译错误的是A)max(intx,inty,int*z)B)intmax(intx,y){*z=x>y?x:y;}{intz;z=x>y?x:y;returnz;}C)max(intx,inty)D)intmax(intx,inty){intz;{return(x>y?x:y);}z=x>y?x:y;return(z);}定义函数时,若需要声明形式参数时,则每个形式参数都必须单独声明类型D(15)有以下程序:fun(inta,intb){if(a>b)return(a);elsereturn(b);}main(){intx=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf(″%d\n″,r);}程序运行后的输出结果是A)3B)6C)8D)12此题考查了带返回值的函数的调用。fun()函数的功能是求出两个数的
最大数并返回主函数r=fun(fun(x,
y),2*z)处。执行过程为先调用函数fun(x,y)求得两数中的较大者,再进行自身的递归调用,此时函数中的两个参数为刚求得的数和2*z(即12)传递给子函数,找出两数中的大数。二、填空题算术运算符与关系运算符优先次序______算术运算>关系运算a和b值分别为4和5,则!a||b的值为___1___,4&&0||2的值为______。判别某一年Year是否闰年,用逻辑表达式表示______.(year%4==0&&year%100!=0)||year%400==04下面程序的运用结果是:。3和5voidswap(int*a,int*b){int*t;t=a;a=b;b=t;}mian(){intx=3,y=5,*p=&x,*q=&y;swap(p,q);printf(“%d%d/n”,*p,*q);}5.下面程序的运用结果是:。typedefunionstudent{charname[10];longsno;charsexfloatscore[4];}STU;mian(){STUa[5];printf(“%d/n”,sizeof(a));}【答案】80【解析】sizeof(a)==sizeof(floatscore[4])*5=16*5=80
union的大小为最大成员的大小6、执行以下程序后,输出“#”号的个数是。#include<stdio.h>main(){inti,j;for(i=1;i<5;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++){n[i]=n[i-1]*2+1;printf(″%d″,n[i]);}}【答案】1
3
7
15
【解析】循环的作用是控制数组中后一个元素的值是前一个元素值的两倍加1。8、以下程序运行后的输出结果是inta=5;fun(intb){staticinta=10;a+=b++;printf(″%d″,a);}main(){intc=20;fun(c);a+=c++;printf(″%d\n″,a);}【答案】30
25
【解析】当调用fun()时把c的值传给形参b,在执行子函数fun()中的a+=b++时,实际上静态变量a起作用,因此a的值变为30,然后回到主函数,执行a+=c++,此时起作用的是外部变量a,因此外部变量a的值由5变为25。9、以下程序运行后输入3,abcde<回车>,则输出的结果是。#include<string.h>move(char*str,intn){chartemp;inti;temp=str[n-1];for(i=n-1;i>0;i--)str[i]=str[i-1];str[0]=temp;}main(){chars[50];intn,i,z;scanf(″%d,%s″,&n,s);z=strlen(s);for(i=l;i<=n;i++)move(s,z);printf(″%s\n″,s);}【答案】cdeab
【解析】本题主要考查函数move()的功能。经过分析可知,每次调用该函数时,都是把最后一个字符移到串的最前端,而原先的第一个字符至倒数第二个字符顺次后移。
10、已有定义如下:structnode{intdata;structnode*next;}*p;以下语句调用malloc()函数,使指针p指向一个具有structnode类型的动态存储空间。请填空。p=(structnode*)malloc();【答案】sizeof(struct
node)
【解析】本题考查了结点的动态申请。动态申请需用到的函数为malloc(),malloc()中的参数应为结点占用的存储空间的大小,此题申请的结点要用来存放struct
node类型的数据,因此申请的结点大小恰好可以存放struct
node类型的数据,而sizeof()函数的作用是求得类型或数据占用的存储空间的大小。
三、改错题1题:为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换;输出数组元素。程序中共有4条错误语句,请改正错误。main(){
inta[10];
voidinput();
voidoutput();
voidmax_min();
input(a,10);
max_min(a,10);
output(a,10);}voidinput(int*arr,intn){int*p,i;
p=arr;
printf("pleaseenter10integers:\n");
for(i=0;i<n;i++)/**********FOUND**********/
sca("%d",&p++);}voidmax_min(int*arr,intn){
int*min,*max,*p,t;
min=max=arr;
for(p=arr+1;p<arr+n;p++)
if(*p>*max)/**********FOUND**********/
*max=*p;
elseif(*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;}voidoutput(int*arr,intn){
int*p,i;
p=arr;
printf("Thechangedarrayis:\n");/**********FOUND**********/
while(i=0;i<n;i++);
printf("%3d",*p++);
printf("\n");}1.scanf("%d",p++);scanf("%d",arr[i]);scanf("%d",p+i);scanf("%d",arr+i);2.if(*p>*max)if(*max<*p)3.if(max==arr)4.for(i=0;i<n;i++)for(i=0;n>i;i++)for(p=arr;p<arr+n;)for(i=0;i<=n-1;i++)for(i=0;n-1>=i;i++)for(p=arr;p<=arr+n-1;)for(p=arr;arr+n-1>=p;)2题:用起泡法对n个整数从小到大排序。程序中共有3条错误语句,请改正错误。/**********FOUND**********/voidsort(intx,intn){
inti,j,k,t;
for(i=0;i<n-1;i++)/**********FOUND**********/
for(j=0;j<n-i;j++)/**********FOUND**********/
if(x[i]>x[i+1])
{t=x[j];x[j]=x[j+1];x[j+1]=t;}}main(){
inti,n,a[100];
printf("pleaseinputthelengthofthearray:\n");
scanf("%d",&n);
for(i=0;i<n;i++)scanf("%d",&a[i]);
sort(a,n);
printf("outputthesortedarray:\n");
for(i=0;i<=n-1;i++)
printf("%5d",a[i]);
printf("\n");}1.voidsort(int*x,intn)voidsort(intx[],intn)2.for(j=0;j<n-1-i;j++)for(j=0;n-1-i>j;j++)for(j=0;j<n-(1+i);j++)for(j=0;n-(1+i)>j;j++)for(j=0;j<=n-2-i;j++)3.if(x[j]>x[j+1])if(x[j+1]<x[j])4.sort(a,n);(3)函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给num1和num2分别输入49
和21,则输出的最大公约数为7。
请改正程序中的错误,使它能得出正确的结果。intfun(inta,intb){
intr,t;
if(a<b){
t=a;/**********FOUND**********/
b=a;/**********FOUND**********/
a=t;}r=a%b;while(r!=0){
a=b;
b=r;/**********FOUND**********/
r=a/b;}/**********FOUND**********/
returna;}main(){
intnum1,num2,a;
scanf("%d%d",&num1,&num2);
a=fun(num1,num2);
printf("themaximumcommondivisoris%d\n\n",a);}1.a=b;2.b=t;3.r=a%b;4.returnb;return(b);return(b);(4)fun函数的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线上的元素之和sum。
请改正程序中的错误,使它能得出正确的结果。#include"stdio.h"intfun(){
inta[3][3],sum;
inti,j;/**********FOUND**********/
a=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)/**********FOUND**********/
scanf("%d",a[i][j]);
for(i=0;i<3;i++)/**********FOUND**********/
sum=sum+a[i][j];/**********FOUND**********/
printf("sum=%f\n",sum);}main(){
fun();}1.sum=0;2.scanf("%d",&a[i][j]);3.sum=sum+a[i][i];sum+=a[i][i];4.printf("sum=%d\n",sum);(5)在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。
例如,数组中元素的值依次为39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。
请改正程序中的错误,使它能得出正确的结果。doub
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025内蒙古测铖矿业开发有限责任公司招聘(第三批)综合排名笔试历年参考题库附带答案详解
- 2025中国石油天然气管道工程有限公司招聘30人笔试历年参考题库附带答案详解
- 2025上海隧道工程有限公司越江项管部招聘40人笔试历年参考题库附带答案详解
- 松香蒸馏工班组考核评优考核试卷含答案
- 商洽函就供应链合作模式调整与物流成本优化进行讨论(3篇)范文
- 余热利用工岗前技能认知考核试卷含答案
- 室内木装修工岗前理论实践考核试卷含答案
- 泥釉浆料制备输送工7S执行考核试卷含答案
- 信号设备组调工岗前技能评估考核试卷含答案
- 市场调研与分析工具指南
- GB/T 47442.1-2026油气区二氧化碳地质利用与封存潜力评价方法第1部分:地质利用
- 2026年青海省西宁市社区工作者考试试题解析及答案
- GB/T 32826-2026光伏发电系统建模导则
- 部编版小学语文五年级下册期末测试卷含答案
- 健康管理技术与实施方案手册
- 血凝的基本知识课件
- 腾讯专有云TCE工程师认证复习备考试题库大全(含答案)
- 2023年《全国生态环境保护大会》专题PPT
- 《上令封德彝举贤》中考文言文阅读试题2篇(含答案与翻译)
- 小学生必背古诗75首+80首(精排+目录)
- GB/T 296-2015滚动轴承双列角接触球轴承外形尺寸
评论
0/150
提交评论