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

下载本文档

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

文档简介

C程序设计复习题答案C程序设计复习题答案C程序设计复习题答案C程序设计复习题答案编制仅供参考审核批准生效日期地址:电话:传真:邮编:程序设计基础复习题答案填空题1、C语言所提供的实型变量分为两种类型,它们是float和double。2、一个C源程序中至少应包含一个主函数或main函数。3.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+’8’-’3’的值为102。4.在标准C语言中,输入操作是由库函数scanf()完成的,输出操作是由库函数printf()完成的。5.对以下说明:intc[10]={116,125,218,312,100,40,13,67,186};c[4]的值为100。6.在C语言中,引用数组元素时,引用数组元素时,其数组下标的数组类型允许

是整型常量或整型表达式。7.设y为int型变量,请写出描述“y是偶数”的表达式(y%2)==0。8.设inti=0,j=1,k=2,a=3,b=4;执行表达式(a=i<j)&&(b=j>k)的值为0。9.与表达式a+=b等价的另一书写形式是a=a+b。10.有以下定义和语句inta[3][2]={1,2,3,4,5,6,},*p[3];p[0]=a[1];则*(p[0]+1)所代表的数组元素是a[1][1]。11.代表一个反斜杠字符“\”的转义字符是'\\'。12.变量的指针就是变量的地址,存放变量地址的变量就是指针变量,它用来指向另一个变量。13.++i和i++的不同之处在于i++是先使用i的值后,再执行i=i+1;而++i是先执行i=i+1后,再使用i的值。14.设x、y和z是int型变量,且x=3,y=4,z=5,则表达式!((x<y)&&!z||1)值为0。15.已知函数intf(intk){return((k<0)1:f(k-2)+2);}

则f(3)的值是5。16.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。 17.计算表达式:x=(i=4,j=10,k=24)后,x的值为24。18.若a和b均是int型变量,且a和b的初值均为5,则计算表达式a+=b++后,a的值为10,b的值为6。19.设inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则表达式*(p+8)的值是9。20.若有以下定义:

chara;intb;

floatc;doubled;

则表达式a*b+d-c值的类型为double。21.*(p++)和*(++p)作用不同,它们的意义分别是*(p++)先取*p的值,后使p加1,*(++p)先使p加1,再取*p

二、程序理解题请给出运行以下程序的输出结果:1.#include<>voidmain(){intu=24,v=16,w;while(v){w=u%v;u=v;v=w;}printf("%d\n",u);}输出结果为:82.voidmain(){chars[]"Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);}输出结果:/NoYes3.

main(){intp[7]={11,13,14,15,16,17,18};inti=0,j=0;while(i<7&&p[i]%2==1)j+=p[i++];printf("%d\n",j);}输出结果:24。4、下列程序的运行结果是total=144。voidmain(){ intarr_sum(intarr[],intn);inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int*p,total;p=a[0];total=arr_sum(p,12);printf(“total=%d\n”,total);}intarr_sum(intarr[],intn){ inti,sum=0;for(i=0;i<n;i++)sum=sum+arr[i]; return(sum);}5.给出以下程序的运行结果:voidmain(){inta,b,c;a=25;b=025;c=0x25;printf("%d,%d,%d\n",a,b,c);}运行结果:25,21,376.给出有下面一段程序的运行结果。voidmain(){intp[7]={11,13,14,15,16,17,18};inti=0,,j=0;while(i<7&&p[i]%2==1)j+=p[i++];printf("%d\n",j);}运行结果:247.给出有下面一段程序的运行结果。#include<>intfac(intn){ staticintf=1; f=f*n; return(f);}voidmain(){ inti; for(i=1;i<=5;i++) printf("%d!=%d\n",i,fac(i));}答案:1!=12!=23!=64!=245!=1208.给出有下面一段程序的运行结果。main(){inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};inti=0,j=0,s=0;while(i++<4){if(i==2||i==4)continue;j=0;do{s+=a[j];j++;}while(j<4);}printf("%d\n",s);}运行结果:92三、程序填空题1.以下程序可判断输入的一个整数是否能被5或13整除,若能整除,输出“yes”并换行,否则输出“no”并换行。请填空。#include<>voidmain(){intk;printf(“Enteraintnumber:”);scanf(“%d”,&k);if____(k%5==0||k%13==0)__________printf(“yes\n”);elseprintf(__“no\n”______);}2.下面程序是将键盘输入的英文字符全改为小写英文字符输出,用换行符结束循环。请填空。#include<>voidmain(){charc;while((c=getchar())!='\n'){if(c>='A'||c<='Z')c=c+32;printf("%c",c);}printf("\n");}3.有一个一维数组score,内放10个学生成绩,求平均成绩,请填空。

#include<>floataverage(floatarray[10]);voidmain(){floatscore[10],aver;inti;printf("input10scores:\n");for(i=0;i<10;i++)scanf("%f",&score[i]);printf("\n");aver=average(score);printf("averagescoreis%",aver);}floataverage(floatarray[10]){inti;floataver,sum=array[0];for(i=1;i<10;i++)sum=sum+array[i];aver=sum/10;returnaver;}4.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。Voidmain(){inti,a[20],sum,count;sum=count=0;for(i=0;i<20;i++)scanf("%d",&a[i]);for(i=0;i<20;i++){if(a>0){count++;sum+=a[i];}}printf("sum=%d,count=%d\n",sum,count);}5.下面程序可以逐行输出由language数组元素所指向的5个字符串。请填空。#include<>voidmain(){char*language[]={“BASIC”,“FORTRAN”,“PROLOG”,“JAVA”,“C++”};char**q;intk;for(k=0;k<5;k++){q=language+k;printf(“%s\n”,*q);}}6.以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。

#include<>

voidmain()

{charstr[81],*sptr;

inti;

for(i=0;i<80;i++)

{str[i]=getchar();

if(str[i]=='\n')break;

}

str[i]='\0';

sptr=str;

while(*sptr)putchar(*sptr++);

}7、程序的功能是用递归方法计算第五位学生的年龄,请填空。递归公式如下: 10(n=1)age(n)= age(n-1)+2(n>1)程序:intage(intn){ intc;if(n==1) c=10;else c=age(n-1)+2;return(c);}voidmain(){ printf(“age:%d\n”,age(5));}下面程序的功能是在三个字符串中找出最小的,请填空:#include<>#include<>voidmain(){chars[20],str[3][30];inti;for(i=0;i<3;i++)gets(str[i]);strcpy(s,(strcmp(str[0],str[1])<0str[0]:str[1]));if(strcmp(str[2],s)<0)strcpy(s,str[2]);print(“%s\n”,s);}9)以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。请填空。#include<>voidmain(){int*a,*b,*c,num,x,y,z;a=&x;b=&y;c=&z;printf(“输入3个整数:”);scanf(“%d%d%d”,a,b,c);printf(“%d,%d,%d\n”,*a,*b,*c);num=*a;if(*a>*b)num=*b;if(num>*c)num=*c;printf(“输出最小整数:%d\n”,num);}10.C语言源程序文件的后缀是,经编译后生成的文件的后缀是,连接后生成的文件的后缀是.exe。11.从键盘输入一个大写字母,要求改用小写字母输出。请填空:#include<>voidmain(){ charc1,c2;c1=getchar();printf(“%c,%d\n”,c1,c1);c2=c1+32;printf(“%c,%d\n”,c2,c2);}12.以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。请填空:

#include<>

voidmain()

{charstr[81],*sptr;

inti;

for(i=0;i<80;i++)

{str[i]=getchar();

if(str[i]=='\n')break;

}

str[i]='\0';

sptr=str;

while(*sptr)putchar(*sptr++;

}13.输入三角形的三边长,求三角形面积。请填空:voidmain(){ floata,b,c,s,area; scanf(“%f,%f,%f”,&a,&b,&c); s=2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n”,a,b,c,s);printf(“area=%7.2f\n”,area);}14.判断m是否素数。请填空:#include<>#include<>voidmain(){intm,i,k;scanf("%d",&m);k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>k)printf("%disaprimenumber\n",m);elseprintf("%disnotaprimenumber\n",m);}15.以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。如’a’变成‘f’,’w’变成’b’。请填空:#include<>voidmain(){charc;c=getchar();if(c>=’a’&&c<=’u’)c=c+5;elseif(c>=’v’&&c<=z)c=c-21;putchar(c);}16.输入三个整数x,y,z,请把这三个数由小到大输出。请填空:#include""#include""main(){intx,y,z,t;scanf("%d%d%d",&x,&y,&z);if(x>y){t=x;x=y;y=t;}/*交换x,y的值*/if(x>z){t=z;z=x;x=t;}/*交换x,z的值*/if(y>z){t=y;y=z;z=t;}/*交换z,y的值*/printf("smalltobig:%d%d%d\n",x,y,z);}17.求1!+2!+3!+4!+…+20!的值。请填空:#include<>voidmain(){floats=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}printf("1!+2!+...+20!=%c\n",s);}18.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。请填空:#include""#include""main(){charc;intletters=0,space=0,digit=0,others=0;printf("pleaseinputsomecharacters\n");while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letters++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseothers++;}printf("allinall:char=%dspace=%ddigit=%dothers=%d\n",letters,space,digit,others);}19.以下程序是通过指针操作,找出三个整数中的最小值并输出。请填空:#include<>voidmain(){int*a,*b,*c,num,x,y,z;a=&x;b=&y;c=&z;printf(“输入3个整数:”);scanf(“%d%d%d”,a,b,c);printf(“%d,%d,%d\n”,*a,*b,*c);num=*a;if(*a>*b)num=*b;if(num>*c)num=*c;printf(“输出最小整数:%d\n”,num);}20.下面程序的功能是打印100以内个位数为6且能被3整除的所有数。请填空。#include<>voidmain(){inti,j;for(i=0;i<10;i++){j=i*10+6;if(j%3!=0)continue;printf(“%d”,j);}}四、编程题1.给学生成绩,要求输出成绩等级‘A’‘B’‘C’‘D’‘E’。90分以上为‘A’,80-89分为‘B’,70-79分为‘C’,60-69分为‘D’,60分以下为‘E’。#include<>voidmain(){ floatscore; chargrade; printf("请输入学生成绩:"); scanf("%f",&score); while(score>100||score<0) { printf("\n输入有误,请重输!"); scanf("%f",&score); } switch((int)(score/10)) { case10:case9:grade='A';break; case8:grade='B';break; case7:grade='C';break; case6:grade='D';break; case5: case4: case3: case2: case1: case0:grade='E'; } printf("成绩是%,相应的等级是%c.\n",score,grade);}2.输入一数组各元素值,将这个数组中的值按逆序重新存放(如原来顺序为5,4,3,2,1要求改为1,2,3,4,5)。#include<>#defineN5voidmain(){ inta[N],i,temp; printf("Enterarray:\n"); for(i=0;i<N;i++) scanf("%d",&a[i]); printf("arraya:\n"); for(i=0;i<N;i++) printf("%4d",a[i]); for(i=0;i<N/2;

温馨提示

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

评论

0/150

提交评论