实验三
实验任务一
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include<stdlib.h> 4 5 char score_to_grade(int score); 6 7 int main() { 8 int score; 9 char grade; 10 while (scanf("%d", &score) != EOF) { 11 grade = score_to_grade(score); 12 printf("分数: %d, 等级: %c\n\n", score, grade); 13 } 14 return 0; 15 } 16 17 char score_to_grade(int score) { 18 char ans; 19 switch (score / 10) { 20 case 10: 21 case 9: ans = 'A'; break; 22 case 8: ans = 'B'; break; 23 case 7: ans = 'C'; break; 24 case 6: ans = 'D'; break; 25 default: ans = 'E'; 26 } 27 return ans; 28 }

Q1:通过整除得到十位上的数,判断分数在哪个区间;整形;字符型
Q2:程序满足其中一行代码并运行完成后,会继续执行下一行代码,不会退出switch语句
实验任务二
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include<stdlib.h> 4 5 int sum_digits(int n); 6 int main() { 7 int n; 8 int ans; 9 while (printf("Enter n: "), scanf("%d", &n) != EOF) { 10 ans = sum_digits(n); 11 printf("n = %d, ans = %d\n\n", n, ans); 12 } 13 return 0; 14 } 15 16 int sum_digits(int n) { 17 int ans = 0; 18 while (n != 0) { 19 ans += n % 10; 20 n /= 10; 21 } 22 return ans; 23 }

Q1:算n的所有位数之和
Q2:能,第一种算法是累加,第二种是递归
实验任务三
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include<stdlib.h> 4 5 int power(int x, int n); 6 int main() { 7 int x, n; 8 int ans; 9 while (printf("Enter x and n: "), scanf("%d%d", &x, &n) != EOF) { 10 ans = power(x, n); 11 printf("n = %d, ans = %d\n\n", n, ans); 12 } 13 14 return 0; 15 } 16 17 int power(int x, int n) { 18 int t; 19 if (n == 0) 20 return 1; 21 else if (n % 2) 22 return x * power(x, n - 1); 23 else { 24 t = power(x, n / 2); 25 return t * t; 26 } 27 }

Q1:计算X的n次方
Q2:

实验任务四
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include<stdlib.h> 4 5 int is_prime(); 6 int main() { 7 int t; 8 printf("100以内的孪生素数:\n"); 9 int cnt; 10 for (t = 2, cnt = 0; t <= 98; ++t) { 11 if (is_prime(t) && is_prime(t + 2)) { 12 printf("%d %d\n", t, t + 2); 13 ++cnt; 14 } 15 } 16 printf("100以内的孪生素数共有%d个", cnt); 17 18 return 0; 19 } 20 21 int is_prime(int n) { 22 int i; 23 if (n <= 1) 24 return 0; 25 if (n == 2) 26 return 1; 27 if (n % 2 == 0) 28 return 0; 29 for (i = 3; i * i <= n; i+=2) { 30 if (n % i == 0) 31 return 0; 32 33 } 34 return 1; 35 }

实验任务五
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include<stdlib.h> 4 5 int func(int n, int m); // 函数声明 6 int main() { 7 int n, m; 8 int ans; 9 while (scanf("%d%d", &n, &m) != EOF) { 10 ans = func(n, m); // 函数调用 11 printf("n = %d, m = %d, ans = %d\n\n", n, m, ans); 12 } 13 return 0; 14 } 15 //函数定义 16 int func(int n, int m) { 17 int t, j, i,ans; 18 if (n < m) 19 return 0; 20 if (n == m) 21 return 1; 22 if (m == 0) 23 return 1; 24 else { 25 for (i = 1, t = 1; i <= m; ++i) { 26 t *= i; 27 } 28 for (i = (n - m + 1), j = 1; i <= n; ++i) { 29 j *= i; 30 } 31 ans = j / t; 32 33 return ans; 34 } 35 }

1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include<stdlib.h> 4 5 int func(int n, int m); // 函数声明 6 int main() { 7 int n, m; 8 int ans; 9 while (scanf("%d%d", &n, &m) != EOF) { 10 ans = func(n, m); // 函数调用 11 printf("n = %d, m = %d, ans = %d\n\n", n, m, ans); 12 } 13 return 0; 14 } 15 //函数定义 16 int func(int n, int m) { 17 int t, j, i,ans; 18 if (n < m) 19 return 0; 20 if (n == m) 21 return 1; 22 if (m == 0) 23 return 1; 24 else 25 return func(n - 1, m) + func(n - 1, m - 1); 26 }

实验任务六
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include<stdlib.h> 4 5 // 函数声明 6 int gcd(); 7 8 int main() { 9 int a, b, c; 10 int ans; 11 while (scanf("%d%d%d", &a, &b, &c) != EOF) { 12 ans = gcd(a, b, c); // 函数调用 13 printf("最大公约数: %d\n\n", ans); 14 } 15 return 0; 16 } 17 // 函数定义 18 int gcd(int a, int b, int c) { 19 int i, j; 20 if (a < b && a < c) 21 i = a; 22 else if (b < c && b < a) 23 i = b; 24 else 25 i = c; 26 for (j = i; j >= 1; --j) { 27 if (a % j == 0 && b % j == 0 && c % j == 0) 28 return j; 29 } 30 return j; 31 }

实验任务七
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include<stdlib.h> 4 5 // 函数声明 6 void print_charman(); 7 8 int main() { 9 int n; 10 printf("Enter n: "); 11 scanf("%d", &n); 12 print_charman(n); // 函数调用 13 14 return 0; 15 } 16 17 void print_charman(int n) { 18 for (int i = n; i >= 1; --i) { 19 int a = 2 * i - 1; 20 int b = n - i; 21 for (int s = 0; s < b; s++) 22 printf("\t"); 23 for (int j = 0; j < a; j++) 24 printf(" O \t"); 25 printf("\n"); 26 for (int s = 0; s < b; s++) 27 printf("\t"); 28 for (int j = 0; j < a; j++) 29 printf("<H>\t"); 30 printf("\n"); 31 for (int s = 0; s < b; s++) 32 printf("\t"); 33 for (int j = 0; j < a; j++) 34 printf("I I\t"); 35 printf("\n\n"); 36 } 37 }


浙公网安备 33010602011771号