您的当前位置:首页正文

C语言程序设计的试题及答案

2020-08-03 来源:好走旅游网
C语言程序设计的试题及答案(4)

c=swap(a,b); printf(\"%d%d\\n\

40. #include void fun(int n) { if(n==1) printf(\"*\\n\"); else { printf(\"-\"); fun(n-1); } } void main() { int i,j=0; for(i=1;i<4;i++) fun(i); printf(\"XiaoXin!\"); } 解答: 1. p=27 2. 运行结果:12345 3. 3 4. 5 3 32 5. 2 6. 11 21 31 7. 3 7 5

8. 6 7 8 5 5

9. 012345 10. a1=1 a2=3 a3=2 11. 10,20,30 12. a=2,b=3 a=2,b=3 13. 10,20,30 14. a=1.0000 15. 567 16. 4 17. 3.000000 18. 80,-20 19. -1 20. j=12 21. 4,3,5 22. 18 23. Hello, world! Hello, world! Hello, world! 24. x=3; 25. x=22 26. i = 7; j = 6; x = 7 i = 2; j = 7; x = 5

27. 7 28. (1) x = 2 y = 3 z = 0 (2) x = 4 y = 9 z = 5 (3) x = 2 y = 3 z = 0 29. 10, 20, 40, 40 30. 125 31. 3,0,-90,23,6,10 32. sum=6 33. i=20 i=40 34. j=9 35. c=1 36. +4++2+ 37. 8 38. c=33 39. 389 40. * -* --* XiaoXin!

三.补充程序 1. 定义了一个 max 函数,找两个整数的最大值,其位置在 main 之后. #include \"stdio.h\" ________________________ int main() {

int

x,y,z;

printf(\"input

two

numbers:\\n\");

scanf(\"%d%d\{

________________________;

________________________;

if(a>b)w=a;

else

w=

b;

printf(\"maxmum=%d\return 0; } int max(int a,int b) ________________________; } 2. 用函数 nzp 判别一个整数 a 的值,若大于 0 则输出该值,若小于等于 0 则输出 0 值。 #include \"stdio.h\"

________________________nzp(________________________) printf(\"input

number

a:\\n\");

{ if(v>0)

________________________ else printf(\"%d \} int main() { int a;

scanf(\"%d\

________________________ return 0; } 3. 主函数调 f1 计算 n 阶乘. #include \"stdio.h\" ________________________ int main() { int n; long s; scanf(“%d”,&n); ________________________ printf(\"\\ns=%ld\\n\return 0; } long f2(int n) { ________________________

int i; for(i=1;i<=n;i++) c=c*i; ________________________ } 4. 主函数调 fun 计算 1+1/2!+1/3!+...+1/30!的和. #include \"stdio.h\" ________________________ ________________________

int

main()

{

int

n;

float

s;

printf(\"1+1/2!+1/3!...+1/30!=%f\\n\

return 0; } float fun() { int n; float t=1; ________________________ for(n=1;n<=30;n++) { t*=1/n; s+=t; } ________________________ } 5. 数组 a 中存放了一个学生 5 门课程的成绩,求平均成绩。 #include \"stdio.h\" ________________________ int main() { float sco[5],av; int i; printf(\"\\ninput 5 scores:\\n\"); for(i=0;i<5;i++) scanf(\"%f\________________________ printf(\"average score is %5.2f\

return 0; } float aver(float a[]) { int i; float s=a[0]; ________________________

for(i=1;i<5;i++)

s=s+a[i];

av=s/5;

________________________ } 6. 用递归法计算 n! #include \"stdio.h\" ________________________ int main() { int n; long y; printf(\"\\ninput a inteager number:\\n\"); scanf(\"%d\________________________ printf(\"%d!=%ld\{ long f; if(n<0) printf(\"n<0,input error\"); else if(n==0||n==1) f=1; else f=ff(n-1)*n; ________________________ }

7. 输入正方体的长宽高 l,w,h。求体积及三个面 x*y,x*z,y*z 的面积。 #include \"stdio.h\" int s1; ________________________ int vs( int a,int b,int c) { ________________________ v=a*b*c; s1=a*b; s2=b*c;

s3=a*c; ________________________ } int main() { int v,l,w,h; printf(\"\\ninput

length,width

and

height\\n\");

scanf(\"%d%d%d\________________________

printf(\"v=%d s1=%d s2=%d s3=%d\\n\输入两个正整数 num1,num2,求其最大公约数. #include \"stdio.h\" ________________________ int main() { int d; int num1,num2; printf(\"please

input

two

numbers:\\n\");

scanf(\"%d,%d\

________________________

printf(\"gongyueshu:%d\\n\{ ________________________ while(b) { temp=a%b; a=b; b=temp; } ________________________ } 9. 利用递归函数调用方式,输出 6 个数字。 #include \"stdio.h\" ________________________ int main() { int w=5; fun(w);

printf(\"\\n\");

return

0;

}

________________________fun(________________________)

{ if(k>0) ________________________; printf(“%d”,k); } 10. 主函数调 printstar 打印一串星形图案. #include \"stdio.h\" ________________________ int main() { ________________________ ; return 0;

}

________________________printstar(________________________)

{ printf(“*************\\n”); }

解答: 1. int max(int a,int b); z=max(x,y); int w; return w; 2. void int v printf(\"%d\

long c=1; return c; 4. float fun(void); s=fun(); float s=0; return s;

5. float aver(float a[]); av=aver(sco); float av; return av; 6. long ff(int n); y=ff(n); long return f; 7. int s2,s3; int v; return v;

v=vs(l.w,h);

8.

int

gongyue(int

a,int

b);

d=gongyue(num1,num2);

int temp; return a; 9. void fun(int k); void int k; fun(k-1); 10. void printstar(void); printstar(); void void 四.改错题 解答: 五.编程一 解答: 六.编程二 1. 编程实现:任意输入两个正整数,求它们的最大公约数和最小公倍数。要求最大公约数 通过自定义函数来输出。 2. 编程实现:求出 10~10000 之内的所有素数。要求素数判断通过自定义函

数来实现。 3. 编程实现:输出所有的“水仙花数” 。所谓“水仙花数”是指一个 3 位数,其各位数字立 方和等于该数本身。例如:153 是一个“水仙花数” ,因为 。要求水仙花数的判断通过自定 义函数来实现。 4. 编程实现:打印出 2~1000 之间的所有完数。所谓完数,是指这样的数,该数的各因子之 和正好等于该数本身,例如:6=1+2+3;28=1+2+4+7+14;因此,6、28 都是完数。要求完数 的' 判断通过自定义函数来实现。 5. 编程实现:打印出 10~9999 之间的所有回文数,要求每 10 个数一行输出。要求回文数的 判 断通过自定义函数来实现。 6. 编程实现:打印出 1~9999 之间的所有同构数,所谓同构数是指一个数如果出现在该数平

方的右端,该数就是同构数。如 5,25 都是同构数。要求同构数的判断通过自定义函数来实 现 。 7. 给定一 5*5 的整型矩阵,求所有正对角线元素之和,并以矩阵的形式输出矩阵的值。要 求 :对角线元素之和及矩阵输出分别通过两个自定义函数来实现。 8. 编程实现:输入一 4*4 的矩阵的值,求出每行的最大值并输出其所在列号。要求:通过 通 过自定义函数实现矩阵的输入输出。 9. 编程实现:任意给定一个十进制的整数,将其转换成二进制,按位将其存放到数组中, 然后输出,要求数制转换通过自定义函数来实现。

10. 编程实现:任意输入一个正整数,编程求出它是几位数并将其逆序输出。要求通过自定 义函数实现求是几位数,该函数原形为:int ni(int x,int a[]);函数返回值是该数是几位 数,x 为给定的数,a 中存放该数的各个位。 11. 编写程序从键盘输入 x 和 n 的值,求 xn (n 为大于等于零的整数) ,要求用 n 递归函数求 x 。

12. 编写实现:输入两个正整数 m,n(m>n) ,计算从 m 个元素中任意取 n 个元素的组合,计 算机

公式为: 要求通过递归函数求阶乘。

13. 编程实现:从键盘任意输入 10 个不相同的整数,然后,输入要查找的数 x,如果在这 10 个 数中找到 x,则打印“Found!” ;如果找不到,则打印“Not found!” 。要求通过自定义函数

实现查找功能。 14. 从键盘输入某班 20 个学生的成绩和学号,然

后从键盘任意输入一个学生的学号,查找 出 他的成绩并输出,若未找到,给出相应提示。要求通过自定义函数实现查找功能。 15. 编程实现:从键盘任意输入某班 20 个学生的姓名和成绩,输出最高分及不及格学生的 人 数。要求分别用两个自定义函数求最高分和不及格人数。 16. 编程实现:输入 2 个降序排列的整数数列,将这两个数列合并存放到另一个数组中,要 求 每个数都一次到位,不得在新数组中重新排序。要求数列合并通过自定义函数来实现。 17. 编程实现:输入 N 名职工的姓名及计算机水平考试的成绩,输出及格人数和及格的职工 信 息。要求:职工信息的输入和输出分别通过自定义函数来实现。

18. 编程实现:从键盘输入 10 名学生的信息,包括学号、姓名、成绩,用一个排序函数 sort 完成学生成绩降序排列,并输出学生排序后的结果。 19. 编程实现:任意输入一组不多于 20 个的升序排列的若干个整数,任意输入不多于 10 个 的 整数(-1 作为输入结束标志) ,将其插入到该序列中,使其依然有序。要求:通过自定义函 数实现将一个整数插入到一个有序序列中,使其依然有序。 20. 一个班级有 30 个学生,每个学生有学号、姓名及数学、语文、计算机成绩、平均成绩。 要求编程实现以下功能: 1) 从键盘上输入 30 个学生的信息,平均成绩通过公式:平均成绩=(数学+语文+计算 机 )/3 计算得出。 2) 输出所有平均成绩大于等于 85 的学生姓名(要求用自定义函数实现该功能)。 解答: 1. #include \"stdio.h\" int GreatComDiv(int m,int n); int LeaseComMul(int m,int n); void main() { int m,n,t; printf(\"请输入 m 和 n 的值:\"); scanf(\"%d%d\

{ printf(\"输入错误!请重新输入!\\n\"); scanf(\"%d%d\} if(m

int

LeaseComMul(int

m,int

n)

{int

greatcomdiv;

greatcomdiv=GreatComDiv( m, n); return m*n/greatcomdiv; }

2. #include \"stdio.h\" int sushu(int n); void main() { int n; printf(\"input n:\\n\"); scanf(\"%d\是素数\\n\else printf(\"%d 不是素数\\n\} int sushu(int n) { int i; for(i=2;i

return 1; }

3. 编程实现:输出所有的“水仙花数” 。所谓“水仙花数”是指一个 3 位数,其各位数字立 方和等于该数本身。例如:153 是一个“水仙花数” ,因为 。要求水仙花数的判断通过自定 义函数来实现。 #include \"stdio.h\" int fun(int n); void main() {int i; for(i=100;i<=999;i++) if (fun(i))printf(\"%d\\n\a,b,c; a=n/100;b=n/10%10;c=n%10; }

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

4. #include \"stdio.h\" int wanshu(int n); void main() { int n; printf(\"input n:\\n\"); scanf(\"%d\是完数\\n\不是完数\\n\i,s=0; for(i=1;i<=n/2;i++) if(n%i==0) s+=i; if(s==n) return 1; else return 0;

}

5. 方法一: #include \"stdio.h\" int huiwen(int n); void main() { int n; printf(\"input n:\\n\"); scanf(\"%d\if (huiwen(n)) printf(\"%d 是回文数\\n\不是回文数\\n\

~

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