C考试题库答案
![C考试题库答案](https://img.360docs.net/imgb5/05g8mnppua37fn5y9knp-51.webp)
![C考试题库答案](https://img.360docs.net/imgb5/05g8mnppua37fn5y9knp-a2.webp)
1、编写一计算阶乘的函数fac,在主函数中从键盘输入一个正整数,
调用阶乘函数fac计算阶乘并输出计算结果。
#include
long fac( int n)
{long f;
if (n==0)
f=1;
else
f=n* fac(n-1);
return f;
}
main( )
{long y;
int n;
printf("pleace intup one number:");
scanf("%d",&n);
y=fac(n);
printf("%d!=%ld",n,y);
}
2、编写一个求x的y次幂的函数pw,在main函数中从键盘输入a、b的值,然后调用pw函数求a的b次幂,并输出结果。
#include
long pw(int x,int y)
{
long s=1;
int i;
for(i=1;i<=y;i++)
s=s*x;
return s;
}
main()
{
long sum;
int a,b;
printf("\nEnter a,b:");
scanf("%d%d",&a,&b);
sum=pw(a,b);
printf("The sum is %ld",sum);
}
3、写一函数max,计算三个数中最大数。在主函数中输入三个数,
调用该函数求出其中最大数并输出。(要求:三个数为实数)
#include
int max(int a,int b,int c){
if(a>b)
max=a;
else
max=b;
if(max max=c; return max; } main(){ int x,y,z; int m; printf("\nEnter x,y,z:"); scanf("%d%d%d",&x,&y,&z); m=max(x,y,z); printf("the max is %d.",m); }_ 4、写一个函数计算两个正整数的最大公约数,在主函数中用scanf输入m, n两个正整数,调用函数后,打印函数返回值(即这两个正整数的最大公约数)。 #include int gcd(int m,int n){ if(m%n==0) return n; else return gcd(n,m%n); } main(){ int a,b,c,temp; scanf("%d%d",&a,&b); if(a temp=a; b=temp; a=b;} c=gcd(a,b); printf("%d",c);} 5、编写一个函数,该函数的功能是判断一个整数是不是素数,在main函数中 调用该函数,输出200以内所有的素数。(待定) #include void f(int n){ (原题:输出1-1000以内所有的素数,并按每行5个输出。)int i; for(i=2;i if(n%i==0) break; printf("%d\t",n); } main() { int j; for(j=2;j<200;j++) f(j); } 6.请编一个自定义函数,功能:将给定的字符串中的所有字母改为小写字母。字符串在主函数中从键盘任意输入(容许包含空格) 7、编写一个函数,该函数的功能是判断一个整数是不是素数,在main函数 中输入一个整数,调用该函数,判断该数是不是素数,若是则输出“yes”, 否则输出“no” #include void f(int n){ int i; for(i=2;i if(n%i==0) break; if(i==n) printf("yes"); else printf("no"); } main(){ int m; printf("\nEnter the m:"); scanf("%d",&m); f(m);} 8、将1--1000中所有21的倍数存到一个一维数组中,再按每行5个数据输出到屏幕上。 #include main(){ int i,j=0,a[50]; for (i=1;i<=1000;i++) { if (i%21==0){ a[j]=i; printf("%5d",a[j]); if (j%5==4) printf("\n"); j++; }}} 8、在屏幕上打印以下图案:(要求打印N行,N用符号常量定义为7) * ** *** **** ***** ****** ******* #include #define N 7 main(){ int i,j,m; for(i=1;i<=N;i++){ for(j=1;j<=N-i;j++) printf(" "); for(m=1;m<=i;m++) printf("*"); printf("\n"); } } 9、输出所有在正整数200和300之间能被6整除、但不能被4整除的数,并统计这样的数有多少个。 #include main() {int i,j=0; for (i=200;i<=300;i++) {if (i%6==0&&i%4!=0) { j++; printf("%d\n",i); } } printf("%d\n",j); } 10、求S=1/1+1/2+1/3+……+1/100(精确到小数点后三位)。 #include main() { int i; float sum=0; for(i=1;i<=100;i++) {sum=sum+1.0/i;} printf("1/1+1/2+...+1/100=%7.3f\n",sum); } 11. 编程计算1到20的平方和,并输出结果。(要求用for循环) #include main() { int i; long s=0; for(i=1;i<=20;i++) s=s+i*i; printf("%ld",s); } 12. 编写一个程序从键盘任意个整数,求均值及低于均值的个数, 输出到屏幕。 #include main(){ int n; int a[1000],i,j=0; long s=0; float ave; printf("\nEnter the nums:"); scanf("%d",&n); printf("\nEnter the xs:"); for(i=0;i scanf("%d",&a[i]); s=s+a[i]; } ave=s*1.0/n; printf("The ave is %f. ",ave); for(i=0;i if(a[i] j++; printf(" %d",j); } 13. 编写一个程序从键盘输入10个学生的成绩到数组score中,将最高分、最低分输出。 main(){ int score[10]; int i; int max, min; for(i=0;i<10;i++) scanf("%d",&score[i]); max=min= score [0]; for(i=0;i<10;i++){ if(max < score [i]) max=score[i]; if(min > score [i]) min=score[i]; } printf("The max is %d.The min is %d.",max,min); } 14. 在main()函数中输入一个人的年龄和性别,女士55岁退休,男士60岁退休。编写一个函数根据年龄和性别判断一个人士工作还是退休,若工作,则输出“Working!”,退休则输出“Retired!” #include main(){ int s,a; scanf("%d%d",&s,&a); if(s=0) if(a<=55) printf("she is work!"); else printf("she has Retired!"); else if(a>60) printf("he is work!"); else printf("he has Retired !"); } 12、编写一个函数求一个实数的绝对值。然后在main函数中用scanf输入 任意个实数,调用该函数求它的绝对值并输出。 #include float fab(float x) { if(x>0) return x; else return -x; } main() { float n; float s; printf("\nEnter n:"); scanf("%f",&n); s=fab(n); printf("The fab is %f\t",s); }} 13、编写一个求1——n内的偶数和的函数,在main()函数中输入n,然后 调用该函数求1——n的偶数和并输出。 #include long sum(int n){ int i; long sum=0; for(i=1;i<=n;i++){ if(i%2==0) sum=sum+i; } return sum; } main(){ int n; long s; printf("\nEnter n:"); scanf("%d",&n); s=sum(n); printf("The s is %ld",s); } 14、编写一个求1——n内的奇数和的函数,在main()函数中输入n,然后调用该函数求1——n的奇数和并输出。 #include long sum(int n){ long s=0; int i; for(i=1;i<=n;i++){ if(i%2!=0) s=s+i; } return s; } main(){ int n; long s; printf("\nEnter n:"); scanf("%d",&n); s=sum(n); printf("The s is %ld",s); } 15、编写函数打印以下图形,将图形中的行数作为函数的形参。在main() 函数中输入行数n,调用该函数打印行数为n的图形。(如:输入5,则打印出5行的三角形) ***** **** *** ** * #include void print(int n){ int i,j; for(i=0;i for(j=n-i;j>=1;j--) printf("*"); printf("\n"); } } main(){ int n; printf("\nEnter n:"); scanf("%d",&n); print(n); } 16、编写一个函数,将摄氏温度转换成华氏温度,转换公式为:f=1.8*c+32.0。 在main函数中调用该函数,计算并在屏幕上显示从摄氏0度到100度,每隔10度转换一次的华氏温度。 #include float f(int c){ float f; f=1.8*c+32.0; return f; } main(){ int i; float s; for(i=0;i<=100;i=i+10){ s=f(i); printf("%f\n",s); } } 15(1)编写一个函数,将三个数按由小到大的顺序排列并输出。在main函数中输入三个数,调用该函数完成这三个数的排序。 #include void sort(int a,int b,int c){ int temp; if(a>b){ temp=a; a=b; b=temp; } if(a>c){ temp=a; a=c; c=temp; } if(b>c){ temp=b; c=temp; } printf("The sort is %d,%d,%d",a,b,c); } main(){ int x,y,z; printf("\nEnter x,y,z:"); scanf("%d%d%d",&x,&y,&z); sort(x,y,z); } 15(2)编写一个函数,将三个数按由大到小的顺序排列并输出。在main函数中输入三个数,调用该函数完成这三个数的排序。 #include void sort(int a,int b,int c){ int temp; if(a temp=a; a=b; b=temp; } if(a temp=a; a=c; c=temp; } printf("The sort is %d,%d,%d",a,b,c); } main(){ int x,y,z; printf("\nEnter x,y,z:"); scanf("%d%d%d",&x,&y,&z); sort(x,y,z); } 16、编写一个函数,该函数的功能是打印1——n中所有7的倍数,在 main()中输入n,调用该函数输出结果。 #include void print(int n){ int i; for(i=1;i<=n;i++) if(i%7==0) printf("%d\t",i); } main(){ printf("\nEnter n:"); scanf("%d",&n); print(n); } 17、写一个函数判断一个正整数是否为奇数,在主函数中用scanf输入正整数m,调用函数后,根据函数返回值判断这个正整数是否为奇数,若是则输出“yes”,否则输出“no” #include int odd(int n){ if(n%2!=0&&n>0) return 1; else return 0; } main(){ int m; int s; printf("\nEnter m:"); scanf("%d",&m); s=odd(m); if(s==0) printf("no"); else printf("yes"); } 18、写一个函数判断一个正整数是否为偶数,在主函数中用scanf输入正整数m,调用函数后,根据函数返回值判断这个正整数是否为偶数,若是则输出“yes”,否则输出“no” #include int even(int n){ if(n>0&&n%2==0) return 1; else return 0; } main(){ int m; int s; scanf("%d",&m); s=even(m); if(s==1) printf("yes"); else printf("no"); } 写一个函数,判断某一个四位数是不是玫瑰花数(所谓玫瑰花数即 该四位数各位数字的四次方和恰好等于该数本身,如:1634=14+64+34+44)。在主函数中调用该函数,输出所有玫瑰花数。 void rose(int n){ int a,b,c,d; a=n/1000; b=n/100%10; c=n/10%10; d=n%10; if(a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d==n) printf("%d\t",n); } main(){ int i; for(i=1000;i<10000;i++) rose(i); } 19、写一个函数,判断某一个四位数是不是玫瑰花数(所谓玫瑰花数即 该四位数各位数字的四次方和恰好等于该数本身,如:1634=14+64+34+44)。在主函数中从键盘任意输入一个四位数,调用该函数,判断该数是否 为玫瑰花数,若是则输出“yes”,否则输出“no”。 int rose(int n){ int a,b,c,d; a=n/1000; b=n/100%10; c=n/10%10; d=n%10; if(a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d==n) return 1; else return 0; } main(){ int m; int s; printf("\nEnter m<4nums>:"); scanf("%d",&m); s=rose(m); if(s==1) printf("yes"); else printf("no"); } 20、编写一个函数,判断某一个三位数是不是水仙花数(所谓水仙花数 即该三位数各位数字的立方和恰好等于该数本身,如:153=13+53+33) 。在主函数中调用该函数,输出所有水仙花数。 void daffodil(int n) { int a,b,c; a=n/100; b=n/10%10; c=n%10; if(a*a*a+b*b*b+c*c*c==n) printf("%d\t",n); } main() { int i; for(i=100;i<1000;i++) daffodil(i); } 21、编写一个函数,函数的功能是求出所有在正整数M和N之间能被5整除但不能被3整除的数并输出,其中M<N。在主函数中调用该函数求出100 至200之间,能被5整除、但不能被3整除的数。 main() {int n=200,m=100; void fn(int x,int y); fn(m,n);} void fn(int x,int y) {int j; for(j=x;j<=y;j++) if(j%5==0&&j%3!=0) printf("%5d",j);} int dhj(int x,int y) {int n; for(n=x;n<=y;n++) if(n%5==0&&n%3!=0) printf("%d\t",n);} 22、编写一个函数,其功能是;检验一个输入的四位数字是否是闰年, 如果是闰年则返回1,否则返回0。在主函数中从键盘输入一个四位数XXXX ,调用该函数进行判断,如果是则输出”yes”,否则输出”no”(提示 :如果该四位数能被4整除但不能被100整除,则是闰年;如果该四位数能被400整除,则是闰年) int leap(int y) { int r=0; if(y%4==0&&y%100!=0||y%400==0) r=1; else r=0; main() {int y; printf("lnput year:"); scanf("%d",&y); if(leap(y)==1) printf("yes"); else printf("no"); } 23、编写一个函数求两数中的较大数,在main()函数输入三个数,调用该 函数求这三个数的较大数并在屏幕上输出。 float max(float a,float b) {float t=a; if(b>t) t=b; return t;} main() {float a,b,c; printf("lnput a,b,c:"); scanf("%f %f %f",&a,&b,&c); printf("%f",max(max(a,b),c));} 24写一函数min,返回三个数中最小数。在主函数中用键盘输入三个数, 调用该函数求出其中最小数并输出。(要求:三个数为实数) float min(int a,int b,int c){ float temp; if(a>b) { temp=a; a=b; b=temp; } if(a>c){ temp=a; a=c; c=temp; } return a; } main(){ float x,y,z,s; scanf("%f%f%f",&x,&y,&z); s=min(x,y,z); printf("the smallest number is %f",s); } 25、编写一个函数计算n!。在主函数中调用该函数计算1!+2!+3!+ (10) long fac(int n){ long s=1; int i; for(i=1;i<=n;i++) s=s*i; return s; } main(){ int j; int sum=0; for(j=1;j<=10;j++) sum=sum+fac(j); printf("\nThe sum is %ld",sum); } 26、编写一个求直角三角形的面积的函数。在main函数中从键盘输入直角三角形的两个直角边,然后调用该函数求该直角三角形的面积 (精确到小数点后2位)。 float s(int a,int b){ float s; s=a*b/2.0; return s; } main(){ int a,b; float area; float s(int a,int b); scanf("%d%d",&a,&b); area=s(a,b ) ; printf("%.2f",area); } 27、编写一个求圆的面积的函数。在main函数中从键盘输入半径,然后调用该函数求该圆的面积(精确到小数点后2位)。 #define PI 3.14 float area(int r){ float s; s=PI*r*r; return s; } main(){ int r; float s; printf("\nEnter r:"); scanf("%d",&r); printf("%.2f",s); } 28某商场根据客户购物的数量打折,根据商品的单价p,数量n,编写函数 fun计算应付款。在main()函数中输入单价和数量,调用函数后,输出应 付款(打折方法:购物数量10件及以上打9折,20件及以上打8折,10件以下不打折,结果保留2位小数)。 float fun(float p,int n){ float s; if(n<10) s=p*n; else if(n>=10&&n<20) s=p*n*0.9; else if(n>=20) s=p*n*0.8; return s; } main(){ int n; float p; float sum; printf("\nEnter p,n:"); scanf("%f%d",&p,&n); sum=fun(p,n); printf("%.2f",sum); } 36、写一个函数,判断给定的三边长能否构成直角三角形,能构成直角三角形,则返回整数1,否则返回整数0。在main()函数中输入三边长,调用该函数,若是直角三角形,则输出“yes”, 否则,输出“no”。 int right_triangle(int a,int b,int c){ int temp;