• 43.75 KB
  • 2022-04-22 11:48:31 发布

《C语言程序设计案例教程》练习题答案.docx

  • 31页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'任务一C程序设计概述一,填空题1.用C语言编写的程序称为源程序。2.C语言源程序的基本单位是若干函数。3.一个C语言源程序只能包含一个主函数。4.在C语言中,输入操作是由库函数scanf()完成的,输出操作是由库函数printf()完成的。5.C语言源程序文件的扩展名是.C,经过编译后,生成文件的扩展名是.obg,生成文件的扩展名是.exe。6.C语言注释所用到的符号是/**/和////。二,选择题1.C语言规定在源程序中,主函数的位置(C)A.必须在开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后2.下列程序错在(C)处A.main()B.floatx,yC.a=3:b=8D.a=b+c 3.以下说法正确的是(D)A.C语言程序总是从第一个定义的函数开始执行B.在C语言程序中,要调用一个定义的函数必须在主函数中定义C.C语言程序中的主函数必须在程序的开始部分D.C语言程序总是从主函数开始执行4.以下叙述正确的是(B)A.在C程序中,main函数必须位于程序的最前面B.C语言本身没有输入输出函数C.C程序的每行只能写一条语句D.在对每一个C程序进行编译的过程中,可发现注释中的拼写错误5.C语言程序的语句如果一行写不下时,可以(D)A.用分号换行B.在任意空格处换行C.用逗号换行D.用回车符换行任务二C语言程序设计的基本概念一.选择题1.下面不是C语言中整型常量的是(C)。A.03B.12C.059D.0xA8 2.下面程序段的输出结果是(B)。inti=65535;printf(“%d”,i);A.65535B.-1C.1D.03.以下不能用来表示整形常熟的进制形式为(A)。A.二进制B.八进制C.十进制D.十六进制4.下列程序段的输出结果是(D)。Inta=1,b=1,c=1;a=a+++b+++c;printf(“%d”,a);A.6B.5C.4D.35.C语言中的预算对象必须是整形的运算符是(C)。A.*=B.-C.%D.>=6.以下选项中的非法的表达式是(C)。A.a+1B.x=y=6C.7.9%8D.(int)6.587.若有以下程序段:Inta=1,b=2,c; C=1.0/b*a;则执行后c的值为(D)。A.0B.0.5C.1D.无结果8.C语言中的标识符只能有字母,数字和下划线组成,切第一个字符必须为(C)。A.字母B.下划线C.字母或下划线D.字母,数字或下划线9.若有以下定义,则能使职位3的表达式为(C)。Inta=7,b=12;A.B%=(A%=5)B.b%=(a-a%5)C.(b%=a)-(a%=5)D.b%=a-a%510.若有说明语句:charc=’ab’;则变量才(D)。A.包含一个字符‘a‘B.包含2个字符‘a’和‘b’C.包含3个字符‘a’,‘b’和‘’D.c的值不确定二丶填空题1.c语言的基本数据类型为整型变量,实行变量和字符型变量。 2.若有以下程序段:Inta=2,b=2;b+=(a++)+(++a)+(a++);则执行后c的值为11。3,以下程序的输出结果是2,3。main(){charx=’a’;y=x-32;printf(“%c”,y);}5.若有定义intx=3,y=2;floata=2.5,b=3.5;则表达式(x+y)%2+(int)(int)b的值为1。6.若a和b都是int类型的变量,切a=5,b=5,则执行表达式a+=b++后a的值为10,b的值为6。任务三顺序结构程序设计一,选择题1.使用scanf函数输入数据时,若输入数据的的类型与格式说明的类型不匹配时,系统将(B)。A.给出出错信息B.不给出出错信息,但最终不能得到正确的输入数据 C.不给出出错信息,但最终能得到正确的输入数据D.拒绝用户输入数据2.Putchar函数可以向终端输入(C)。A.一个字符串B.一个实型变量C.一个字符D..多个字符3.a,b,c被定义为int类型变量,若从键盘给a,b,c输入数据,正确的输入语句为(C)A.scanf(“%d%d%d”,&a,&b,&c);B.read(“%d%d%d”,&a,&b,&c);C.scanf(“%d%d%d”,a,b,c);C.write(“%d%d%d”&a,&b,&c);4.以下程序段的输出结果是(C)。inta=5678;printf(“%2d”,a);A.56B.78C.5678D.无结果显示5.printf函数中用到格式符%6s,其中的数字6表示输出的字符串占用6列。如果字符串长度大于6,则(B);如果字符串长度小于6,则(D)。A输出错误信息B.按原字符长度从左到右全部输出 C.按左对齐输出该字符,右补空格D.按右对齐输出该字符,左补空格6.阅读以下程序,当输入数据的形式为5,6,7,则正确的输入结果为()。Main(A){inta,b,c;scanf(“%d,%d,%d”,&a,&b,&c);printf(“a+b+c=%d”,a+b+c);}A.a+b+c=18B.a+b+c=11C.5+6+7=18D.无结果显示7.设a和b为float类型变量,则以下不合法的赋值语句为(B)A.++a;B.b=(a%5)/5;C=a+=b+8;D.a=b=6;8.若有以下程序段:Intx=0x6c,y=0x6c;x-=y;printf(“%x”,x);执行后输出结果是(B)。A.0x0B.0C.0x6cD.x9.若有以下程序: Main(){intk=2,i=2,m;m=(k+=i*=k);printf(“%d,%d”,m,i);}执行后输出结果是(D)。A.8,6B.7,4C.8,3D.6,410.若有如下程序:Inta=2010,b=2011;Printf(“%d”,(a,b));11.则以下描述中正确的是(C)A.输出语句中格式说明符的个数少于输项的个数,不能输出正确结果B.运行时产生错误信息C.输出结果为2011D.输出结果为2010二、填空题1.复合语句在语法上被认为是合法的。空语句的书写形式为””。2.假设变量X和Y均为整型变量,填写以下语句,使其可以实现不借助任何变量把X和Y中的值进行交换。 X+=Y;y=x-Y;x-=Y;3.若a为int类型的变量,则执行以下语句后X的值为-12。A=6;a+=a-=a+a4.以下程序的输出结果为11,013,OXB.Main(){Inta=11;Printf(“%d,%o,%x”,a,a,a);}5.执行以下程序时,如果从键盘上输入:aBcDeFg,则屏幕上的输出结果为ABCDEFG。#includemain(){charch;while((ch=getchar())!=`n`){If(ch>=`a`&&ch<=`z`)ch=ch-32;printf(“%c”,ch);} }6.有以下程序段:inta=0,b=0;charc=`a`;scanf(“%d,%d,%c”,&a&b&c);printf(“%d,%d,%c”,a,b,c);若从键盘上输入:6,8,则输入结果为6,8,’。任务四选择结构程序设计1.若变量c为char类型,能正确判断出c为小写字母的表达式是(D)。A.’a’<=c<=’z’B.(c>=’a’)||(c<=’z’)C.(‘a’<=c)and(‘z’>=c)D.(c>=’a’)&&(c<=’z’)2.下列程序的运行结果是(B)。Main(){inrx=6;If(x++>6)Printf(“%dn”,x);ElsePrintf(“%dn”,--x);}A.5B.6C.7D.8 3.如果a大于3并且小于等于8时为真,否则为假,一下表示正确的表达式是(C)。A.33||a<=8C.a>3&&aa<=8D.a>3&&a<84.下列条件语句中,功能与其他语句不同的是(D)。A.if(b)printf(“%dn”,x);elseprintf(“%dn”,y);B.if(b==0)printf(“%dn”,y);elseprintf(“%dn”,x);C.if(b!=0)printf(“%dn”,x);elseprintf(“%dn”,y);D.if(b==0)printf(“%dn”,x);elseprintf(“%dn”,y);5.设a,b和c都是int类型的变量,且a=3,b=4,c=5,则下列表达式中值为0的是(D)。A.a&&bB.a<=bC.a||++b&&b-cD.!(a=5)。4以下程序的输出结果是1。Main(){intp,a=35;If(p=a!=0)Printf(‘%dn”.p+10);}5.以下程序输出的结果是4。 Main(){intn=0,a=5,b=10;If(!n)b-=1;If(a)b-=2;If(b)b-=3;Printf(“%dn”,b);}6.以下程序输出的结果是Big!。Main(){intx;X=9If(x>3)If(x<5)Printf(“smail!”):ElsePrintf(“big!”):任务五循环程序结构设计一,填空题1.在C语言中有三种可以构成循环结构的循环语句,它们分别是while语句、do-while语句和for语句。2.用while语句来实现当型循环结构,用do-while语句来实现直到型循环结构。 3.在一个循环体内又完整地包含了另一个循环结构,称为嵌套。4.Break语句的功能跳出swiech语句或循环语句,除了可以在循环中使用外,还可以在switch结构中使用;continue语句的功能是结束本次循环。5.Goto语句一般常与关键字if在一起组合使用。二.阅读程序或程序段填写运行结果。1.设有以下程序:main(){intm1,m2;scanf(“%d”,&m2);while(m2!=0){m1=m2%10;M2=m2/10;Printf(“%3d”,m1);}}若从键盘上输入3286,程序运行后,结果为68232、以下程序运行后输出的结果是52main(){ Inti=10,j=0;do{J=j+I;i--;}while(i>2);printf(“%dn”,j);}3、定义有如下变量:intn=10:,则下列循环的输出结果是9,8,7While(n>7){n--;Printf(“%d”,n);}4、若有以下程序:main(){intm=2;do{printf(“%d”,++m);}while(!m);} 运行输出结果是36、运行下列程序后的输出结果是0main(){intn=4;while(n--)printf(“%3d”,--n);}任务六数组一.选择题1.以下能正确定义一堆数组的选项是(B)。A.ingnum[];B.#defineM5intN[M];C.intnum[0…15];D.intN=100;Intnum[N];2.下面对一维数组a初始化的正确方式(C)。A.inta[4]=(1,0,1,2);B.inta[4]={}C.inta[]={0};D.inta[4]={1,2,3,4,5};3.在语句Inta[8];之后,对a的正确引用是(A)。A.a[8]B.a[5.3]C.a(5)D.a[8-3]4.以下能正确定义二维数组的选项是(C)。A.intN=10,num[N][N];B.Inta[][];C.inta[2][3];D. inta[2][];5.以下能正确定义数组并正确赋值的语句是(A)。A.intN=10,num[N][N];B.inta[2][3]={{1,2},{3,4},{5,6}};C.inta[1][2]={{0},{1}};D.inta[2][]={{1,2},{3,4}};6.下面关于数组的描述正确的是(C)。A.数组的长度是固定的,数组元素的类型可以不同。B.数组的长度是可变的,数组元素的类型必须相同。C.数组的长度是固定的,数组元素的类型必须相同。D.数组的长度是可变的,数组元素的类型可以不同。7.不能把字符串“stud”赋给数组b的语句是(A)。A.charb[15];b=“stud”;B.charb[15]=“stud”;C.charb[15];strcpy(b,“stud”);D.charb[15]={‘s’,‘t’,‘u’,‘d’};8.若有以下说明:Inta[12]={1,2,3,4,5,6,7};charc=‘a’,d,g;则数值为4的表达式是(D)。A.a[g-c]B.a[4] C.a[‘d’-‘c’]D.a[‘d’-c]9.若有以下定义:charm[]=“number”;charn[]={‘n’,‘u’,‘m’,‘b’,‘e’,‘r’};则正确的叙述是(D)。A.数组m与数组n等价B.数组m与数组n长度相等C.数组m的长度大于数组n的长度D.数组m的长度小于数组n的长度10.判定字符串str1和str2是否相等,正确的语句是(C)。A.if(str1==str2)B.if(str1=str2)C.if(strcpy(str1,str2))D.if(!strcmp(str1,str2))二阅读程序填写运行结果1.设有以下程序:#include“stdio.h”#include“string.h”main(){ charss[10]=“12345”;stract(ss,“6789”);gets(ss);printf(“%sn”,ss);}当执行上面的程序,输出ABC时,输出的结果是ABC。2.设有以下程序:#include“stdio.h”#include“string.h”main(){chars1[20],s2[20];scanf(“%s%s”,s1,s2);if(strcmp(s1,s2))printf(“#”);elseprintf(“&”);printf(“%dn”,strlen(strcat(s1,s2)));}若从键盘输入number<回车>和number1<回车>,该程序运行后的结果是#25。 3.若有以下程序:main(){ints[4]={1,2,3,4},kfor(k=0;s[k]!‘’;k++)switch(k){case3:printf(“%d”,s[k-3]);continue;case2:printf(“%d”s[k-1]);continue;case1:printf(“%d”,s[k+1]);continuecase0:printf(“%d”,s[k+3]);}}则程序的运行结果是4321。4有以下程序:main(){ints[7]={11,13,14,15,16,17,18},i=0,k=0;while(i<7&&s[i]%2){k=k+s[i];i++;}print(“%dn”,k);} 该程序的运行结果是24。5.以下程序的输出结果是sun=10。main(){ints[4]={1,2,3,4},i,j=1,sum=0;for(i=3;i>=0;i--){sum+=s[i]*j;j*=10;}Printf(“sum=%dn”,sum);}任务七函数1.在定义函数时,若函数名后面的括号内包含若干个参数,则称该函数为有参函数;若函数名后面的括号内无任何参数,则称该函数为无参函数2.在C语言中,一个函数一般由两个部分组成,他们是函数名和函数体。3.实参位于主调函数中,而形参位于被调用函数中。4.在C语言中,只能通过return语句把函数的返回值带回给主调函数。5.实参函数的调用主要是为了执行某些特定的操作,主调函数与被调用函数之间不进行参数的传递。 6.一般被调用函数应放在主调函数之前定义,否则必须在调用函数之前,对被调用函数加以说明,但当函数的返回值为int型时,可以不必特别说明,系统对他们自动按整型处理。7.在发生函数调用时,数据的传递是单方向的,即只能由实参传给形参。二,选择题1.以下正确的函数定义形式是(C)A.intmax(intx,y)B.intmax(intx,inty);C.intmax(intx,inty)D.intmax(intx;inty)2.对于C语言函数,下列描述正确的是(C)A.C语言函数都是用户自定义的B.函数必须有返回值,否则函数将无法使用C.在C语言中,调用函数时,只能将实参的值传递给形参,形参的值不能传递给实参D.在一个C程序中,存在调用关系的所有函数必须放在同一个源程序文件中3.函数的实参不能是(A)A.变量B.常量C.语句D.函数调用表达式4.函数的返回值的类型是(A)A.函数的类型B.函数类型与return语句中表达式类型中较高的类型 C.return语句中表达式的类型D.函数的类型5.下列情况中,函数在调用前必须说明的是(A)A.定义函数时有类型说明,并且定义在后B.定义函数时有类型说明,并且定义在前C.具有int类型返回值D.定义函数时没有任何类型说明6.函数在传递值调用时,要求(C)A.实参与形参类型任意,个数相等B.实参与形参类型完全一致,个数相等C.实参与形参对应类型一致,个数相等D.实参与形参类型完全一致,个数不等7.下列说法错误的是(A)A.一个函数的类型为void,那么函数一定没有返回值B.函数的形参和实参可以是表达式C.只能调用已经定义了的函数,不能调用不存在的函数D.主函数可以调用任何类型的函数,包含用户自定义的函数8.返回值为void的函数,其定义是(B)A.调用函数之后,被调函数不返回B.调用函数之后,被调函数没有返回值 C.调用函数之后,被调函数的返回值为整形D.调用函数之后,被调函数的返回值为任意类型任务八指针一、选择题1、变量的指针,其含义是指该变量的()。A.值B.地址C.名D.一个标志2、函数的指针,其含义是指该函数的()。A.值B.一个标志C.入口地址D.语句地址3、如下程序段执行后,变量a的值是()。int*p,a=9,b=2;p=&a;a=*p+b;A.12B.11C.10D.编译错误4、以下程序的运行结果是()。voidpry(int*x){printf(“%dn”,++*x);}main(){inta=28;Pry(&a);} A.28B.29C.30D.315如下程序段中对数组元素的错误引用是()inta[10]={0,1,2,3,4,5,6,7,8,9},*p[3],**pp,i;clscr();for(i=0;i<3;i++)p[i]=&a[i*3];pp=p;App[1][1]Ba[9]Cp[3][1]D*(*(p+1)+2)6有以下程序段:ints[4][5],(*ps)[5];ps=s;对s数组元素的正确引用方式是()Aps+1B*(ps+3)Cps[0][2]D*(ps+1)+3二阅读程序填写运行结果1.执行下列程序后的输出结果是(3073)main(){staticinta[5]={104,206,3073,1654,278};int*p,max;p=a; for(p=a+1;pmax)max=*p;printf("%dn",max);}2.执行下列程序后的输出结果是876.main(){chars[]="9876",*p;for(p=s;p。二.选择题1.以下程序的输出结果是16。#defineMCRA(m)2*m#defineMCRB(n,m)2*MCRA(n)+mmain(){inti=2,j=3;printf("%dn",MCRB(j,MCRA(i)));}2.以下程序运行后输出的结果是8。#defineMA(x)x*(x-1)main(){inta=1,b=2; printf("%dn",MA(1+a+b));}3.以下程序运行后输出的结果是28。#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf("%dn",i);}4.以下程序运行后输出的结果100010。#defineN10#defines(x)x*x#definef(x)(x*x)main(){inti1,i2;i1=1000/s(N);i2=1000/f(N);printf("%d%dn",i1,i2);}5.以下程序运行后输出的结果是4,3。#definef(x)(x*x)main() {inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf("%d,%dn",i1,i2);}'