实验三
#include<stdio.h> char score_to_grade(int score); int main() { int score; char grade; while(scanf("%d",&score)!=EOF) { grade=score_to_grade(score); printf("分数:%d,等级:%c\n\n",score,grade); } return 0; } char score_to_grade(int score) { char ans; switch(score/10) { case 10: case 9:ans='A';break; case 8:ans='B';break; case 7:ans='C';break; case 6:ans='D';break; defult: ans='E'; } return ans; }
根据分数判断等级
形式参数为int
返回值为char
没有break程序将继续执行
实验二
#include<stdio.h> int sum_digits(int n); int main() { int n; int ans; while(printf("Enter n:"),scanf("%d",&n)!=EOF) { ans = sum_digits(n); printf("n=%d,ans=%d\n\n",n,ans); } return 0; } int sum_digits(int n) { int ans=0; while(n!=0) { ans+=n%10; n/=10; } return ans; }
计算各个位数的和
第一个为递归函数,一直执行到n为0,将其最后一位加到ans上;第二个为迭代函数,除去最后一位数再次使用函数,并加上个位数。
实验三
#include<stdio.h> int power(int x,int n); int main() { int x,n; int ans; while(printf("Enter x and n:"),scanf("%d %d",&x,&n)!=EOF) { ans =power(x,n); printf("n=%d,ans=%d\n\n",n,ans); } return 0; } int power(int x,int n) { int t; if(n==0) return 1; else if(n%2) return x*power(x,n-1); else { t=power(x,n/2); return t*t; } }
结果
求x的n次方
n为0时返回
n为奇时,使用power(x,n-1),并乘x;
n为偶,使用power(x,n/2),并平方;
实验4
#include <stdio.h> int is_prime(int n) { if(n == 1||n == 2) return 0; else { int i; for(i = 2;i <= n/2;i ++) { if(n%i == 0) return 0; } return 1; } } int main() { int i, sum = 0; printf("100以内的孪生素数:\n"); for(i = 1;i <= 98;i ++) { if(is_prime(i)&&is_prime(i+2)) { printf("%d %d\n", i, i+2); sum ++; } } printf("100以内的孪生素数共有%d个.",sum); }
结果
实验五
#include<stdio.h> int t=1; void hanoi(unsigned n,char a,char b,char c) { if (n == 1) { printf("%d:将第%d个盘子从%c移动到%c\n", t, n, a, c); t++; return; } else { hanoi(n - 1, a, c, b); printf("%d:将第%d个盘子从%c移动到%c\n", t, n, a, c); t++; hanoi(n - 1, b, a, c); } } int main() { int n; int t; while (scanf("%d", &n) != EOF) { hanoi(n, 'A', 'B', 'C'); printf("\n一共移动了%d次\n\n", t - 1); t=1; } }
结果
实验6
#include<stdio.h> int func(int n,int m); int func1(int n,int m); int main() { int n,m; int ans; while(scanf("%d%d",&n,&m)!=EOF) { ans =func1(n,m); printf("n=%d,m+%d,ans = %d\n\n",n,m,ans); } return 0; } int func(int n,int m) { int ans=1; for (int i = n; i >= (n - m + 1); i--) { ans *= i; } for (int i = m; i >= 1; i--) { ans /= i; } return ans; } int func1(int n, int m) { if (n == 0 && m != 0) { return 0; } if (m == 0) { return 1; } else { return func1(n - 1, m) + func1(n - 1, m - 1); } }
结果
实验7
#include <stdio.h> #include <stdlib.h> void print_charman(int n); int main() { int n; printf("Enter n: "); scanf("%d", &n); print_charman(n); return 0; } void print_charman(int n) { int i,j,k; for(i=n;i>=1;i--){ for(k=i;k<n;k++) { printf("\t"); } for(j=1;j<=2*i-1;j++) { printf(" o\t"); } printf("\n");
for(k=i;k<n;k++) { printf("\t"); } for(j=1;j<=2*i-1;j++) { printf("<H>\t"); } printf("\n"); for(k=i;k<n;k++) { printf("\t"); } for(j=1;j<=2*i-1;j++) { printf("I I\t"); } printf("\n"); printf("\n"); } }
结果