当前位置:文档之家› c语言复习题答案

c语言复习题答案

c语言复习题-20101~5 ABCDB 6~10 BADAD 11~15 DABAB 16~20 ADDDC1. 编程计算1!+2!+3!+……+n!的值,其中n的值由用户输入。

#include <stdio.h>main(){long term = 1,sum = 0;int i,n;scanf(“%d”,&n);for (i = 1; i <= n; i++){term = term * i;sum = sum + term;}printf("1!+2!+...n! = %ld \n", sum);}2. 从键盘任意输入某班20个学生的成绩,打印最高分,并统计不及格学生的人数。

要求按如下函数原型进行编程,分别计算最高分和统计不及格学生的人数:int FindMax(int score[], int n);int CountFail(int score[], int n);#include <stdio.h>int FindMax(int score[], int n);int CountFail(int score[], int n);main(){int i, score[20],max,count;for (i=0; i<20; i++){scanf("%d",&score[i]);}max = FindMax(score, 20);printf("max = %d\n",max);count = CountFail(score, 20);printf("count = %d\n",count);}int FindMax(int score[], int n){int max,i;max = score[0];for (i=0; i<20; i++){if (score[i] > max) max = score[i];}return max;}int CountFail(int score[], int n){int count,i;count = 0;for (i=0; i<20; i++){if (score[i] < 60) count ++;}return count;}3.一个班有6位同学,每位同学包括学号、姓名、数学、物理、计算机成绩和总分,要求输入学号、姓名、数学、物理、计算机成绩,计算出每位同学的总分,并按总分降序输出。

要求每位同学的信息定义成一个结构体。

#include <stdio.h>struct student{long num ;char name[10];int mt;int ph;int cm;int sum;}stu[6],temp;void main(){int i,j;for(i=0;i<6;i++){scanf("%ld%s%d%d%d",&stu[i].num, stu[i].name, &stu[i].mt, &stu[i].ph, &stu[i].cm);stu[i].sum=0;stu[i].sum= stu[i].mt+stu[i].ph+stu[i].cm;}for(i=0;i<5;i++)for(j=i+1;j<6;j++){if(stu[j].sum< stu[i].sum){temp= stu[i];stu[i]= stu[j];stu[j]=temp;}}for(i=0;i<6;i++){printf("%ld\t%s%5d%5d%5d%5d",stu[i].num, stu[i].name, stu[i].mt,stu[i].ph,stu[i].cm, stu[i].sum);printf("\n");}}4. 判断101-200之间有多少个素数,并输出所有素数。

#include <stdio.h>#include <math.h>void main(){int m,i,h=0,leap=1;printf("\n");for(m=101;m<=200;m++){for(i=2;i<=sqrt(m+1);i++){if(m%i==0){leap=0;break;}}if(leap) {printf("%-4d",m);h++;}if(h%10==0) printf("\n");leap=1;}printf("\nThe total is %d",h);}5.编写程序,输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

#include <stdio.h>void main(){char c;int letters=0,space=0,digit=0,others=0;printf("please input some characters\n");while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letters++;else if(c==' ')space++;else if(c>='0'&&c<='9')digit++;elseothers++;}printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,space,digit,others);}6.编一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串,请用指针完成。

#include <stdio.h>void main( ){static char x[ ]="computer";char *p;for(p=x;p<x+7;p+=2)putchar(*p);printf("\n");}7.编一程序,将字符串中的第m个字符开始的全部字符复制成另一个字符串。

要求在主函数中输入字符串及m的值并输出复制结果,在被调函数中完成复制。

#include <stdio.h>#include <string.h>void copystr(char *p1,char *p2,int m){int n=0;while(n<m-1){p2++,n++; }while(*p2!='\0'){*p1=*p2;p1++;p2++; }*p1='\0';}void main( ){int m;char str1[80],str2[80];printf("Input a string:\n");gets(str2);printf("Input m:\n");scanf("%d",&m);if(strlen(str2)<m)printf("Err input!\n");else {copystr(str1,str2,m);printf("Result is:%s\n",str1);}}8.一个求从100米高度自由落下,每次落地后又反弹回原来高度的一半,再落下,求它在第10次落地时共经过多少米?第10次反弹多高?编写程序求解该问题。

#include <stdio.h>void main(){float sn=100.0,hn=sn/2;int n;for(n=2;n<=10;n++){sn=sn+2*hn;/*第n次落地时共经过的米数*/hn=hn/2; /*第n次反跳高度*/}printf("the total of road is %f\n",sn);printf("the tenth is %f meter\n",hn);}9.编一程序,将2000年到3000年中的所有闰年年份输出并统计出闰年的总年数,要求每10个闰年放在一行输出。

#include <stdio.h>main( ){int year=0,number=0;for(year=2000;year<3000;year++){if((year%4==0&&year%100!=0)||year%400==0){printf("%6d",year);number++;if(number%10==0) printf("\n");}}printf("\ntotal number of leap year is %d",number);}10 试编一程序完成以下功能:定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每5个数求出一个平均值,放在另一数组中并输出。

#include <stdio.h>main(){int a[30],b[6], sum=0,k,j=0;for(k=0;k<30;k++)a[k]=(k+1)*2;for(k=0;k<30;k++)if(k%5= =0) {b[j]=sum/5; j++; sum=0; }else sum=sum+a[k];for(j=0;j<6;j++)printf(“%4d”,b[j]);}11.编一程序,从键盘输入10个整数并保存到数组,要求找出最小的数和它的下标,然后把它和数组中最前面的元素对换位置。

main( ){int i,array[10];int min,k=0;printf(“\nPlease input array 10 elements\n”);for(i=0;i<10;i++)scanf(“%d”,&array [i]);printf(“Before exchange:\n”);for(i=0;i<10;i++)printf(“%5d”,array[i]);min=array[0];for(i=1;i<10;i++)if(min>array[i]){min= array[i]; k=i; }array[k]=array[0];array[0]=min;printf(“\nAfter exchange:\n”);for(i=0;i<10;i++)printf(“%5d”,array[i]);printf(“\nk=%d\nmin=%d\n”,k,min);}12. 试编程完成如下功能:输入一个不多于4位的整数,求出它是几位数,并逆序输出各位数字。

相关主题