任务1
代码
#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;
default: ans = 'E';
}
return ans;
}
截图
![1]()
回答
- 通过不同分数得到对应等级,形参类型整型,返回类型字符型
- 无break中断switch语句,6,7,8,9,10的输入会穿透,最后得到错误的ans
任务2
代码
#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;
}
截图
![2]()
回答
任务3
代码
#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;
}
}
截图
![3]()
回答
![习题]()
任务4
代码
#include <stdio.h>
int classify_triangle(int a, int b, int c) {
if ((a + b - c > 0) && (a + c - b > 0) && (b + c - a > 0))
{
if ((a==b) && (b==c)) return 2;
else if ((a==b) || (b==c) || (a==c)) return 3;
else if ((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a)) return 4;
else return 1;
}
else return 0;
}
int main() {
int a, b, c;
while (scanf("%d%d%d", &a, &b, &c) != EOF)
{
switch (classify_triangle(a, b, c))
{
case 0:
printf("不能构成三角形\n");
break;
case 1:
printf("普通三角形\n");
break;
case 2:
printf("等边三角形\n");
break;
case 3:
printf("等腰三角形\n");
break;
case 4:
printf("直角三角形\n");
break;
default:
break;
}
}
return 0;
}
截图
任务5
代码
#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 > n) return 0;
return f(n)/f(n-m)/f(m);
}
int f(int n)
{
int a = 1;
while (n > 0)
{
a *= n;
n--;
}
return a;
}
#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 1;
if (m > n) return 0;
return func(n - 1, m) + func(n - 1, m - 1);
}
截图
![51]()
![52]()
任务6
代码
#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, i;
if (a > b) min = b > c ? c : b;
else min = a > c ? c : a;
for (i = min;i >= 1;i--)
{
if (a % i == 0 && b % i == 0 && c % i == 0) return i;
}
}
截图
![6]()
任务7
代码
#include <stdio.h>
#include <stdlib.h>
// 函数声明
// 待补足
// xxx
void print_charman(int n);
int main() {
int n;
printf("Enter n: ");
scanf("%d", &n);
print_charman(n); // 函数调用
return 0;
}
// 函数print_charman定义
// 待补足
// xxx
void print_charman(int n)
{
int t = n * 2 - 1;
int p = 0;
while (t > 0)
{
int i, j;
for (j = 0; j < p; j++) printf("\t");
for (i = 0; i < t; i++) printf(" 0 \t");
printf("\n");
for (j = 0; j < p; j++) printf("\t");
for (i = 0; i < t; i++) printf("<H>\t");
printf("\n");
for (j = 0; j < p; j++) printf("\t");
for (i = 0; i < t; i++) printf("I I\t");
printf("\n");
t -= 2;
p++;
}
}
截图
![屏幕截图 2026-11-13 190648]()