1.用递归方法求n!。
#include<stdio.h> int main() { int fac(int n); int n, y; printf("input an integer numbers:"); scanf_s("%d", &n); y = fac(n); printf("%d!=%d\n", n, y); return 0; } int fac(int n) { int f; if (n < 0) printf("n<0,data error!"); else if (n == 0 || n == 1) f = 1; else f = fac(n - 1)*n; return(f); }
运行结果:
2.hanoi塔问题,输出移动盘子的步骤
#include<stdio.h> int main() { void hanoi(int n, char one, char two, char three); int m; printf("input the number of diskes:"); scanf_s("%d", &m); printf("The step to move %d diskes:\n", m); hanoi(m, 'A', 'B', 'C'); return 0; } void hanoi(int n, char one, char two, char three) { void move(char x, char y); if (n == 1) move(one, three); else { hanoi(n - 1, one, three, two); move(one, three); hanoi(n - 1, two, one, three); } } void move(char x, char y) { printf("%c-->%c\n", x, y); }运行结果:
3.输入10个数,输出其中值最大的元素和该数是第几个数
#include<stdio.h> int main() { int max(int x, int y); int a[10], m, n, i; printf("enter 10 integer numbers:"); for (i = 0; i < 10; i++) scanf_s("%d", &a[i]); printf("\n"); for (i = 0, m = a[0], n = 0; i < 10; i++) { if (max(m, a[i]) > m) { m = max(m, a[i]); n = i; } } printf("The largest number is %d\nit is the %dth number.\n", m, n + 1); return 0; } int max(int x, int y) { return(x > y ? x : y); }运行结果:
4.有一个一维数组score,内放10个学生成绩,求平均成绩
#include<stdio.h> int main() { float average(float array[10]); float score[10], aver; int i; printf("input 10 scores:\n"); for (i = 0; i < 10; i++) scanf_s("%f", &score[i]); printf("\n"); aver = average(score); printf("average score is %5.2f\n", aver); return 0; } float average(float array[10]) { int i; float aver, sum = array[0]; for (i = 1; i < 10; i++) sum = sum + array[i]; aver = sum / 10; return(aver); }运行结果: