C程序设计复习题答案.docx
- 文档编号:8674074
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:17
- 大小:22.68KB
C程序设计复习题答案.docx
《C程序设计复习题答案.docx》由会员分享,可在线阅读,更多相关《C程序设计复习题答案.docx(17页珍藏版)》请在冰豆网上搜索。
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
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 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); } 输出结果为: 8 2. voidmain() {chars[]"Yes\n/No",*ps=s; puts(ps+4); *(ps+4)=0; puts(s); } 输出结果: /No Yes 3. 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 sum=sum+arr[i]; return(sum); } 5.给出以下程序的运行结果: voidmain() {inta,b,c;a=25b=025;c=0x25;printf("%d,%d,%d\n",a,b,c); } 运行结果: 25,21,37 6.给出有下面一段程序的运行结果。 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); } 运行结果: 24 7.给出有下面一段程序的运行结果。 #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! =1 2! =2 3! =6 4! =24 5! =120 8.给出有下面一段程序的运行结果。 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”); else printf(__“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%5.2f",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)); } 8)下面程序的功能是在三个字符串中找出最小的,请填空: #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])<0? str[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语言源程序文件的后缀是__.cpp_________,经编译后生成的文件的后缀是__.obj_______,连接后生成的文件的后缀是.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=1.0/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"stdio.h" #include"conio.h" 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"stdio.h" #include"conio.h" 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++; else others++; } 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("成绩是%5.1f,相应的等级是%c.\n",score,grade); } 2.输入一数组各元素值,将这个数组中的值按逆序重新存放(如原来顺序为5,4,3,2,1要求改为1,2,3,4,5)。 #include #defineN5 voidmain() { inta[N],i,temp; printf("Enterarray: \n"); for(i=0;i scanf("%d",&a[i]); printf("arraya: \n"); for(i=0;i printf("%4d",a[i]); for(i=0;i {temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp; } printf("\nNow,arrawa: \n"); for(i=0;i printf("%4d",a[i]); printf("\n"); } 3、将一个2×3的二维数组中行与列的元素互换并存到另一个二维数组中。 设原数组的初值为{{1,2,3},{4,5,6}}。 参考程序: #include voidmain() {inta[2][3]={{1,2,3},{4,5,6}}; intb[3][2],i,j; printf("arraya: \n"); for(i=0;i<=1;i++) {for(j=0;j<=2;j++) {printf("%5d",a[i][j]); b[j][i]=a[i][j];/*行列元素互换*/ } printf("\n"); } printf("arrayb: \n"); for(i=0;i<=2;i++) {for(j=0;j<=1;j++) printf("%5d",b[i][j]); printf("\n"); } } 4.用选择法对10个数排序(由小到大)。 要求从键盘输入这10个数。 #include voidmain() { inti,j,min,temp,a[11]; printf(“enterdata: \n”); for(i=1;i<=10;i++) { printf(“a[%d]=”,i); scanf(“%d”,&a[i]); } printf(‘\n”); printf(“Theorginalnumbers: \n”); for(i=1;i<=10;i++) printf(“%5d”,a[i]); printf(“\n”); for(i=1;i<=9;i++) { min=i; for(j=i+1;j<=10;j++) if(a[min]>a[j])min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf(“\nThesortednumbers: \n”); for(i=1;i<=10;i++) printf(“%5d”,a[i]); printf(“\n”); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 复习题 答案