您的当前位置:首页C考试题库答案

C考试题库答案

2020-03-02 来源:乌哈旅游
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\ y=fac(n);

printf(\"%d!=%ld\}

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\ sum=pw(a,b);

printf(\"The sum is %ld\}

3、写一函数max,计算三个数中最大数 。在主函数中输入三个数, 调用该函数求出其中最大数并输出。(要求:三个数为实数) #include

int max(int a,int b,int c){

int max; if(a>b) max=a; else

max=b; if(maxmain(){ int x,y,z; int m;

printf(\"\\nEnter x,y,z:\");

scanf(\"%d%d%d\ m=max(x,y,z);

printf(\"the max is %d.\}_

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\ if(aprintf(\"%d\

5、编写一个函数,该函数的功能是判断一个整数是不是素数,在main函数中 调用该函数,输出200以内所有的素数。(待定) #include

void f(int n){ (原题:输出1-1000以内所有的素数,并按每行5个输出 。) int i;

for(i=2;iif(i==n)

printf(\"%d\\}

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;iprintf(\"yes\"); else

printf(\"no\"); }

main(){ int m;

printf(\"\\nEnter the m:\"); scanf(\"%d\ 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\ 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\ } }

printf(\"%d\\n\}

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\}

11. 编程计算1到20的平方和,并输出结果。(要求用for循环)

#include main()

{ int i; long s=0;

for(i=1;i<=20;i++) s=s+i*i;

printf(\"%ld\}

12. 编写一个程序从键盘任意个整数,求均值及低于均值的个数, 输出到屏幕。 #include main(){ int n;

int a[1000],i,j=0; long s=0; float ave;

printf(\"\\nEnter the nums:\"); scanf(\"%d\

printf(\"\\nEnter the xs:\"); for(i=0;iave=s*1.0/n;

printf(\"The ave is %f. \ for(i=0;iprintf(\" %d\}

13. 编写一个程序从键盘输入10个学生的成绩到数组score中,将最高分、 最低分输出。 main(){ int score[10]; int i;

int max, min; for(i=0;i<10;i++)

scanf(\"%d\ 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.\}

14. 在main()函数中输入一个人的年龄和性别,女士55岁退休,男士60岁退休。编写一个函数根据年龄和性别判断一个人士工作还是退休,若工作,则输出“Working!”,退休则输出“Retired!” #include main(){ int s,a;

scanf(\"%d%d\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\ s=fab(n);

printf(\"The fab is %f\\}}

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\ s=sum(n);

printf(\"The s is %ld\}

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\ s=sum(n);

printf(\"The s is %ld\}

15、编写函数打印以下图形,将图形中的行数作为函数的形参。在main() 函数中输入行数n,调用该函数打印行数为n的图形。(如:输入5,则打 印出5行的三角形) ***** **** *** ** *

#include void print(int n){ int i,j;

for(i=0;i=1;j--)

printf(\"*\"); printf(\"\\n\"); } }

main(){ int n;

printf(\"\\nEnter n:\"); scanf(\"%d\ 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\ } }

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;

b=c; c=temp; }

printf(\"The sort is %d,%d,%d\}

main(){ int x,y,z;

printf(\"\\nEnter x,y,z:\");

scanf(\"%d%d%d\ sort(x,y,z); }

15(2)编写一个函数,将三个数按由大到小的顺序排列并输出。在main函数 中输入三个数,调用该函数完成这三个数的排序。 #include

void sort(int a,int b,int c){ int temp; if(aif(aprintf(\"The sort is %d,%d,%d\}

main(){ int x,y,z;

printf(\"\\nEnter x,y,z:\");

scanf(\"%d%d%d\ 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\\}

main(){

int n;

printf(\"\\nEnter n:\"); scanf(\"%d\ 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\ 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\ 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\\}

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\ 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\\}

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\int dhj(int x,int y) {int n;

for(n=x;n<=y;n++) if(n%5==0&&n%3!=0) printf(\"%d\\

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;

return r;} main() {int y;

printf(\"lnput year:\"); scanf(\"%d\ 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\ printf(\"%f\

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\ s=min(x,y,z);

printf(\"the smallest number is %f\}

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\}

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\ area=s(a,b ) ;

printf(\"%.2f\}

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\

s=area(r);

printf(\"%.2f\}

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\ sum=fun(p,n);

printf(\"%.2f\}

36、写一个函数,判断给定的三边长能否构成直角三角形,能构成直角三角形, 则返回整数1,否则返回整数0。在main()函数中输入三边长,调用该函数,若是 直角三角形,则输出“yes”, 否则,输出“no”。 int right_triangle(int a,int b,int c){ int temp; if(cif(cif(a*a+b*b==c*c)

return 1; else

return 0; }

main(){ int x,y,z; int s;

printf(\"\\nEnter x,y,z:\");

scanf(\"%d%d%d\ s=right_triangle(x,y,z); if(s==1)

printf(\"yes\"); else

printf(\"no\"); }

30、写一个函数计算两个正整数的最小公倍数,在主函数中用scanf输入 m,n两个正整数,调用函数后,打印这两个正整数的最小公倍数。 int f(int a,int b){ int i,temp; if(ab=temp;}

for(i=a;i<=a*b;i++)

if(i%a==0&&i%b==0){ return i; break; } }

main(){ int m,n,s;

printf(\"\\nEnter m,n:\"); scanf(\"%d%d\ s=f(m,n);

printf(\"%d\}

31、编写一个函数,判断某一个三位数是不是水仙花数(所谓水仙花 数即该三位数各位数字的立方和恰好等于该数本身,如: 153=1*1*1+5*5*5+3*3*3)。在主函数中从键盘任意输入一个三位数

调用该函数,判断该数是否为水仙花数,若是则输出\"yes\否则输出\"no\"。 int fn(int n) {

int a,b,c,t=0; a=n%10;

c=n/100;

b=(n-c*100)/10;

if(n==a*a*a+b*b*b+c*c*c) t=1; return t; }

#include main() {

int i,leap; clrscr();

for(i=100;i<1000;i++) {

leap=fn(i); if(leap==1)

printf(\"yes\"); else

printf(\"No\"); } }

32、编写一个程序从键盘输入三个整型数据,按从大到小的顺序输出。 #include main()

{int a,b,c; int t; clrscr();

scanf(\"%d%d%d\if(aprintf(\"%4d%4d%4d\

编写一个程序从键盘输入三个整型数据,求它们的和及平均值并在 屏幕上显示(平均值精确到小数点后两位)。 main()

{int a,b,c;flaot ave,sum=0;

scanf(\"%d%d%d\sum=a+b+c; ave=sum/3;

printf(\"%f%f\

33、设a,b是这个直角三角形的两个直角边,用scanf输入a,b的值,计算 并输出直角三角形的周长。(结果保留2位小数)。 #include #include

float perimeter(int m,int n) { double x,y,z;

x=m*m+n*n;

y=sqrt((double)x); z=m+n+y; return z;} main() {int a,b; float l;

float perimeter(int a,int b); scanf(\"%d%d\ l=perimeter(a,b ) ; printf(\"%.2f\}

34、用scanf输入半径r的值,求以此为半径的园的面积。将结果输出 到屏幕上(要求将л=3.14159定义为符号常量,结果保留2位小数)。 #include #define PI 3.14159 main () {float r,s;

scanf(\"%f\ s=PI*r*r;

printf(\"\\n%8.2f\}

35、编写程序,从键盘输入圆柱体的底面半径r和高h,求圆柱体的体积 并输出(л=3.14159,结果保留2位小数)。 #include #define PI 3.14159 main () {float r,h,v;

scanf(\"%f%f\ v=PI*r*r*h;

printf(\"\\n%8.2f\}

36用scanf输入一个梯形的上底(a)下底(b)和高(h),求这个梯形的 面积(s)。(结果保留2位小数)。 #include main ()

{float a,b,h,s;

scanf(\"%f,%f,%f\ s=(a+b)*h/2.0;

printf(\"\\n%8.2f\}

编程计算1到20的平方和,并输出结果。(要求用for循环) main() {

float s; int i;

for(i=1;i<=20;i++) s+=i*i;

printf(\"s=%f\}

求 S=1/1+1/2+1/3+……+1/100(精确到小数点后三位)。 main() {int i;

float sum=0;

for(i=1;i<=100;i++) {sum=sum+1.0/i;}

printf(\"\\n1/1+1/2+...+1/100=%7.3f\\n\38同11题

39、编写一个程序从键盘输入10个整数,求均值及低于均值的个数 ,并结果用空格隔开输出到屏幕。(采用预定义N为10)。 #include #define N 10 main(){

int i,j,a[N],sum=0,count; float v;

for (i=0;iscanf(\"%d\ sum=sum+a[i]; }

v=sum*1.0/N; for (j=0;jif (a[j]printf(\"\\nvalue=%f,count=%d\

40、将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\ if (j%5==4) printf(\"\\n\"); j++; } }

}

41、编写一个程序,输出下面数列的前20项 0 , 1,1,2,3,5,8,13,21,24 #include main(){

int a[20]={0},i; a[0]=0;a[1]=1; for (i=2;i<20;i++) a[i]=a[i-1]+a[i-2]; for (i=0;i<20;i++) printf(\"%6d\}

42、求解一个一元二次方程(分别考虑幂为零次,一次,二次情况)? 详见:教科书P60例3-1

43、假设某人有钱百枚,希望买一百只鸡,公鸡6圆一只,母鸡4圆一只,小鸡0.5圆一只。试问可以包含几只公鸡,几只母鸡,几只小鸡? 详见:教科书P65例3-3

44、任意输入等比数列的初值和一个公比,求等比数列的前20项的和 #include main(){ long a,q; double sum; int i;

printf(\"Enter a,q:\");

scanf(\"%ld%ld\ sum=a;

for(i=1;i<=20;i++){ printf(\"%ld+\ a=a*q;

sum=sum+a ;}

printf(\"\\nsum=%lf\}

编写一个程序,从键盘读入两个实数a和n,计算并输出a+aa+aaa+……+aaaa….a (n个a)的值。

#include main(){

int a,n,t=a,s=0; int i;

printf(\"Enter a,n:\"); scanf(\"%d%d\ for(i=1;i<=n;i++){ t=t*10+a; s=s+t;

printf(\"%d+\

printf(\"\\b=%d\}

请编写一个程序,计算1-1/2+1/3-………+1/99-1/100。 main(){ int i,p=1; float sum=0;

for(i=1;i<=100;i++){ sum=sum+p*1.0/i; p=-p; }

printf(\"\\n1/1-1/2+...-1/100=%7.3f\\n\}

因篇幅问题不能全部显示,请点此查看更多更全内容