实验3
实验1
问题1:函数 score_to_grade 的功能是什么?形参类型、返回值类型分别是什么?
score_to_grade 函数的功能是将一个百分制的整数,转换为对应的等级(A/B/C/D/E),形参是 int score,类型为int整数类型,返回值类型为char(字符类型)
问题2:如果line21-28改成以下写法,代码存在哪些问题?请逐一指出。
case 穿透,所有高分都会被错误降级,除了 0~59 分,所有分数都会被判定为 E
实验2

问题1:函数 sum_digits 的功能是什么?
计算并返回一个整数 n 的各位数字之和
问题2:如果把函数 sum_digits 定义成如下实现方式,能实现同样的输出吗?
输入为非负整数时,两种方式的输出结果完全一致;但当输入为负数时,递归版本会出错,循环版本仍能正常工作。


实验3

问题1: 函数 power 的功能是什么?
计算并返回整数 x 的非负整数次幂 xn 的值
问题2:函数 power 是递归函数吗?如果是,找出递归模式。写出这个递归模式对应的数学公式模型。
它的递归逻辑基于指数运算的数学性质,将问题分奇偶情况处理:

实验4
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int f(int a, int b, int c) { if (a + b <= c || a + c <= b || b + c <= a) return 0; if (a == b && b == c) return 2; if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a) return 4; if (a == b || a == c || b == c) return 3; return 1; } int main() { int a, b, c; while (scanf("%d%d%d", &a, &b, &c) != EOF) { int t = f(a, b, c); if (t == 0)printf("不能构成三角形\n"); if (t == 1)printf("普通三角形\n"); if (t == 2)printf("等边三角形\n"); if (t == 3)printf("等腰三角形\n"); if (t == 4)printf("直角三角形\n"); } }

实验5
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int func(int n, int m); int main() { int n, m; int ans; while (scanf("%d%d", &n, &m) != EOF) { ans = func(n, m); printf("n = %d, m = %d, ans = %d\n\n", n, m, ans); } return 0; } int func(int n, int m) { if (m < 0 || m > n) return 0; if (m == 0 || m == n) return 1; if (m > n - m) { m = n - m; } int res = 1; for (int i = 1; i <= m; i++) { res = res * (n - m + i) / i; } return res; }
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int func(int n, int m); int main() { int n, m; int ans; while (scanf("%d%d", &n, &m) != EOF) { ans = func(n, m); printf("n = %d, m = %d, ans = %d\n\n", n, m, ans); } return 0; } int func(int n, int m) { if (m < 0 || m > n) return 0; if (m == 0 || m == n) return 1; return func(n - 1, m) + func(n - 1, m - 1); }

实验6
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int gcd(int a, int b, int c); int main() { int a, b, c; int ans; while (scanf("%d%d%d", &a, &b, &c) != EOF) { ans = gcd(a, b, c); printf("最大公约数:%d\n\n", ans); } return 0; } int gcd(int a, int b, int c) { int min = a; if (b < min) min = b; if (c < min) min = c; for (int i = min; i >= 1; i--) { if (a % i == 0 && b % i == 0 && c % i == 0) { return i; } } return 1; }

实验7
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void print_charman(int n) { int i, j, k; for (i = 0; i < n; i++) { for (j = 0; j < i; j++) printf("\t"); int count = 2 * (n - i) - 1; for (k = 0; k < count; k++) printf("0\t"); printf("\n"); for (j = 0; j < i; j++) printf("\t"); for (k = 0; k < count; k++) printf("<H>\t"); printf("\n"); for (j = 0; j < i; j++) printf("\t"); for (k = 0; k < count; k++) printf("I I\t"); printf("\n\n"); } } int main() { int n; printf("Enter n: "); scanf("%d", &n); print_charman(n); return 0; }

浙公网安备 33010602011771号