C程序设计基础练习题3及答案_第1页
C程序设计基础练习题3及答案_第2页
C程序设计基础练习题3及答案_第3页
C程序设计基础练习题3及答案_第4页
C程序设计基础练习题3及答案_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、单选题1、‎下列合法的字符串常量是()。A.'56'B."56"C.'\t'D.56正确答案:B解析:A、单引号内只能一个字符,或转义字符,才是字符常量2、‍已知字母A的ASCII码为十进制的65,下面程序的输出是()。‍intmain()‍{charch1,ch2;‍ch1='A'+'5'-'3';‍ch2='A'+'6'-'3';‍printf("%d,%c",ch1,ch2);‍}‎A.B,CB.不确定的值C.C,DD.67,D正确答案:D解析:D、数字字符的ASCII码与数字一样,按序递增,所以,'5'-'3'结果为2,字母字符的ASCII码与字母顺序一样,按序递增,所以,'A'+'5'-'3'='A'+2='C',按%d输出,输出它的ASCII为67同理,ch2='D',按%c输出,结果为D3、‎若变量c为char类型,能正确判断出c为小写字母的表达式是()。A.(c>='a')||(c<='z')B.(c>='a')&&(c<='z')C.('a'<=c)and('z'>=c)D.'a'<=c<='z'正确答案:B4、‎有如下程序段,执行该程序段后,x的值为()。‎inta=14,b=15,x;‎charc='A';‎x=(a&&b)&&(c<'B');A.falseB.0C.1D.14正确答案:C解析:C、非0即为真,a&&b结果为1,c<'B'结果为1,因此,x=1&&1,结果为15、‏若有下列类型说明语句:‏charw;intx;floaty;doublez;‏则表达式w*x+z-y值的正确数据类型为()。A.charB.doubleC.floatD.int正确答案:B解析:B、z是double型,因此,隐式转换规则,其它类型都将转为double型,结果为double6、若有下列类型说明语句:intx;doubley;则表达式x-y值的正确数据类型为()。A.floatB.doubleC.charD.int正确答案:B解析:B、根据隐式自动转换规则,int与double运算,int将自动转为double型7、‍下面()将十进制数转为八进制数输出。A.printf("%c",50);B.printf("%d",50);C.printf("%x",50);D.printf("%o",50);正确答案:D8、‎下面()将十六进制数转为八进制输出。A.printf("%d",050);B.printf("%o",0x50);C.printf("%x",50);D.printf("%o",050);正确答案:B9、‎以下说法正确的是()A.C语言程序总是从第一个定义的函数开始执行B.C语言程序中,被调用的函数必须在main()函数中定义C.C语言程序总是从主函数main()开始执行。D.C程序中的main()函数必须放在程序的开始处正确答案:C解析:A、从主函数开始执行B、被调用的函数必须在main()函数外定义D、可以放在程序的任何位置10、‏下面函数定义正确的是()。‏注意:形参的格式A.doublefun(doubleu;doublev){returnu+v;}B.doublefun(floatu,floatv){returnu+v;}C.doublefun(doubleu,v){returnu+v;}D.doublefun(u,v){floatu,v;returnu+v;}正确答案:B解析:A、形参间不能用分号C、形参定义错误,v没有定义类型D、形参定义错误,u,v没有定义类型11、‎以下函数fun的返回值类型为()。fun(doublex){……}‏A.voidB.无法确定类型C.doubleD.int正确答案:D解析:D、没有写函数类型,默认为int型12、‌C语言中函数返回值类型由()决定。A.return语句中的表达式类型B.调用该函数的主调函数类型C.定义函数时指定的函数类型D.函数参数类型正确答案:C解析:A、由定义函数时指定类型,当表达式类型与它不一致时,要转换成函数类型13、voidarea(intlength,intwidth){ints;s=length*width;printf(“长%d,宽%d的长方形面积是%d\n”,length,width,s);}‎有如上求长方形面积函数,正确的调用方法是()。‎‎提示:‎本题area是无返回值的函数。A.c=area(1,2);B.area(1,2);C.area();D.c=area();正确答案:B解析:A、错误。area无返回值,不能放在表达式中C、少实参14、‏intarea(intlength,intwidth){ints;s=length*width;returns;}有如上求长方形面积函数,正确的调用方法是()。提示:本题area是有返回值的函数。‏A.area(1);B.area();C.c=area(1,2);D.c=area("12","34");正确答案:C解析:A、实参个数与形参不一致D、实参为字符串型,与形参类型不一致15、​​编写函数area(intlength,intwidth),函数的功能是:求长方形面积,并打印输出面积值。​下面()是正确的。提示:本题area没有要求返回值。‏A.voidarea(intlength,intwidth){ints;s=length*width;returns;}B.intarea(intlength,intwidth){ints;s=length*width;returns;}C.voidarea(intlength,intwidth){ints;s=length*width;printf(“长方形面积是%d\n”,s);}D.intarea(intlength,intwidth){ints;s=length*width;printf(“长方形面积是%d\n”,s);}正确答案:C解析:A、有返回值,函数类型应为int型。此外,函数内没有输出s,与题意不符。B、函数内无printf语句,与题目要求不符。D、无return语句,无返回值,area函数类型应为void16、‌编写函数area(intlength,intwidth),函数的功能是:求长方形面积,并返回面积值。下面()是正确的。‎A.intarea(intlength,intwidth){ints;s=length*width;returns;}B.voidarea(intlength,intwidth){ints;s=length*width;printf(“长方形面积是%d\n”,s);}C.intarea(intlength,intwidth){ints;s=length*width;printf(“长方形面积是%d\n”,s);}D.voidarea(intlength,intwidth){ints;s=length*width;returns;}正确答案:A解析:B、没有用return返回面积,与题意不符。C、无return语句,无返回值,area函数类型应为void。此外,没有用return返回面积,与题意不符。D、有返回值,函数类型应为int型。17、‎以下叙述中错误的是()。A.函数中定义的变量默认是自动变量B.staticintx;则x会被初始化为0C.函数形参是存储类型为自动类型的局部变量D.全局变量的存储类别是auto型的。正确答案:D解析:D、全局变量的存储类别默认是extern型18、​下列叙述错误的是()。A.形参是局部变量B.主函数中定义的变量在整个程序中都有效C.其他函数中定义的变量在主函数中不能使用D.复合语句中定义的变量只在该复合语句中有效正确答案:B解析:B、主函数中定义的变量也是局部变量,只能在主函数中使用19、‏当全局变量与函数内部的局部变量同名时,则在函数内部()。A.全局变量与局部变量都无效B.全局变量有效C.局部变量有效D.全局变量与局部变量都有效正确答案:C解析:C、公共作用域范围内,全局变量暂时被同名局部变量屏蔽。假设每个函数是一间教室,函数中的变量(局部变量)比作教室内的椅子,每间教室可以使用自己的椅子,不能使用其它教室的椅子。全局变量比作公共场所的椅子,大家都可以使用。因此,某学生即可以使用公共场所的椅子,又可以使用自己教室的椅子,但进入教室后,他使用的是教室内的椅子,即函数内的变量20、下面程序运行中,x被分配---释放存储空间,总共有()次这样的过程。#include<stdio.h>voidproc(inta);intmain(){proc(2);proc(3);}voidproc(inta){staticintx;....;}全局变量、static型变量在编译时,给变量分配存储空间;整个程序运行结束,释放变量所占的存储空间。本题x是静态存储变量。‏A.1B.2C.0D.3正确答案:A解析:A、x是静态存储变量,与全局变量一样,只分配1次存储空间,整个程序运行结束,才释放空间21、下面程序运行中,形参a被分配---释放存储空间,总共有()次这样的过程。#include<stdio.h>voidproc(inta);intmain(){proc(1);proc(2);proc(3);}voidproc(inta){a=2;....;}​提示:本题a是局部变量,作用域只在proc函数内(1)定义变量a时,给a分配存储空间。(2)proc函数执行结束,a消失,释放a所占的存储空间​A.2B.4C.3D.1正确答案:C解析:C、形参a是局部变量,每次执行proc函数时,给a分配存储空间,执行结束,释放存储空间。proc被调用3次,所以形参a被分配---释放存储空间3次22、‎程序输出结果为()‎#include<stdio.h>‎voidproc();‎intmain()‎{‎intx=1;//定义局部变量x,局部变量只在本函数中有效‎proc();​‎printf("%d\n",x);‎}‎voidproc()‎{‎intx;//定义局部变量x,局部变量只在本函数中有效‎x=2;‎}​A.2B.main,proc函数中都定义了变量x,程序错误C.1D.0正确答案:C解析:B、C语言允许在不同的函数中使用同名变量,且不同函数中变量互不影响C、main,proc函数中都定义了变量x,但main中的x只在main中可使用,proc中的x只在proc中可使用,互不干扰。例如,2间教室都有黑板,但上面可书写各自的内容,互不影响。main、proc可视为2间教室,其中的x变量可视为黑板23、‍下面程序的执行结果为()。‍#include<stdio.h>‍voidproc();‍intmain()‍{‍intx=8;//定义局部变量x,局部变量只在本函数中有效‍proc();‍printf("%d\n",x);‍return0;‍}‍voidproc()‍{‍x=100;‍}​A.100B.8C.编译不能通过D.随机数正确答案:C解析:C、变量在使用前要定义,但proc中的x没有定义二、多选题1、‎编程统计某高速收费站单向通过的车辆数量,该高速为3车道,一次通过的车不超过3辆。‎程序功能:通过车辆时,输入相应的数(1-3之间),程序进行累加;当输入字符s时,输出当前通过的车辆总和;当输入e时,输出通过的车辆总数,并结束程序。‎程序有一个空,请选择正确的答案。‎#include<stdio.h>‎intmain()‎{‎charc1;‎inttotal=0;‎printf("\t\t\t\t计数程序\n\n");//输出提示菜单‎printf("s---显示当前通过的车辆总数\t1-3---新增车辆数\te---显示通过的车辆总数,并结束程序\n\n");‎do‎{‎//输入一个字符‎ if(c1=='s')‎ printf("当前通过的车辆总数是:%d\n",total);‎ elseif(c1=='1')‎ total=total+1;‎‎ elseif(c1=='2')‎ total=total+2;‎ elseif(c1=='3')‎ total=total+3;‎}while(c1!='e');‎printf("总过的车辆总数是:%d\n",total);‎return0;‎}‎输入、输出样例如下图:A.getchar();B.scanf("%c",&c1);//%c前有空格C.scanf("%c",&c1);D.c1=getchar();正确答案:B、C、D解析:A、输入一个字符,但没有保存下来,后面if中的变量c1没有值B、输入一个字符,可以跳过空格、tab与回车C、输入一个字符,并赋值给变量c1D、输入一个字符,并赋值给变量c12、​用for循环语句编程输出A~Z之间的所有大写字母,字母之间以空格分隔,要求一行输出8个字符。下面的程序有一个空,请选择恰当的循环语句完善程序。​#include<stdio.h>​intmain()​{​charc;​intcount=0;​{​printf("%c",c);​count++;​if(count%8==0)//每8个字符换行​printf("\n");​}​return0;​}​A.for(c=1;c<=26;c++)B.for(c='a';c<='z';c++)C.for(c=65;c<=90;c++)D.for(c='A';c<='Z';c++)正确答案:C、D解析:A、如果用此循环,输出语句就要改为printf("%c",c+'A'-1);与字母字符的ASCII码值对应B、输出的是小写字母,与题意不符C、65-90是大写字母'A'-'Z'的ASCII标准码值,循环从'A'的ASCII码值遍历至'Z'的ASCII码值,printf("%c",c);则输出对应的字母D、可以使用字符常量做为循环变量的值,从'A'遍历至'Z',实质上使用的是字符的ASCII码值参与循环本题中用字母为循环变量的值比较方便,注意'A'与'Z'上要加单引号才是字符常量,才有ASCII码值三、填空题1、编写函数计算下面多项式的值,并返回值​编写main,输入x,调用该函数计算多项式的值并显示结果。请完善下面的程序:(有2个空,答案一行写一个,不要添加多余的空格)#include<stdio.h>doublef(doublex){2*x*x+3*x+1;//返回计算结果}intmain()​{doublex;printf("请输入x:");scanf("%lf",&x);printf("f(%.2f)的值是%.2f",x,);//调用f函数​return0;}正确答案:returnf(x)解析:第一个空,f函数是有返回值的,所以,必须有return语句第二个空,调用函数的格式是:函数名(实参),所以,应写f(x)2、​‏一个正整数如果恰好等于它的除自身外的因数之和,这个数称为“完数”。例如,6的因数有1、2、3,且6=1+2+3,因此6是“完数”。‏编写判别完数的函数wanshu(intx):功能判断x是否为完数,如果是,则返回1,不是,则返回0。‏编写main()中让x从1循环至1000,并调wanshu函数,如果返回值为1,则输出该数。‏请完善下面的程序:(有3个空,答案一行写一个,不要添加多余的空格)#include<stdio.h>intwanshu(intx){inti,r=0;for(i=1;i<x;i++){ if()//判断x能整除i?即判断i是否是x的因数​ r=r+i;//将因数累加进r中}if(r==x)//判断因数和是否等于x,是则返回1,不是,返回0 return1;else return;}intmain(){inti;for(i=1;i<=1000;i++){if()//调用wanshu函数,根据函数值,判断i是否为完数, printf("%d是完数\n",i);}return0;}正确答案:x%i==00wanshu(i)==1解析:第一个空:r保存因数和,当满足条件时,因数加入r。所以,条件应该是判断i是否是因数,应填x%i==0第二个空:题目要求不是完数,返回0。当不满足r==x,即因数和不是x,不是完数,所以,填0第三个空:要填的是判断i是完数的条件,满足,就输入i.在wanshu函数中,当是完数时,返回值是1,所以,应该填wanshu(i)==13、‎编写求最大公约数函数gcd:功能是求两数的最大公约数,并返回该数。‎main函数中调用该函数,并输出最大公约数。‎请填空完善程序。(有2个空,答案一行写一个,不要添加多余的空格)‎#include<stdio.h>‎intgcd(intm,intn)//求m,n的公约数的函数‎{‎intr;‎r=m;//r是公约数,初值为m‎while((m%r!=0)||(n%r!=0))//当r不是公约数时,循环直至找到公约数‎;//r减小1‎returnr;‎}‎intmain()‎{‎intm,n;‎printf("请输入两个数");‎

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论