实验3

实验1image

问题1:函数 score_to_grade 的功能是什么?形参类型、返回值类型分别是什么?  

score_to_grade 函数的功能是将一个百分制的整数,转换为对应的等级(A/B/C/D/E),形参是 int score,类型为int整数类型,返回值类型为char(字符类型)

问题2:如果line21-28改成以下写法,代码存在哪些问题?请逐一指出。 

case 穿透,所有高分都会被错误降级,除了 0~59 分,所有分数都会被判定为 E

 

 

实验2

image

 问题1:函数 sum_digits 的功能是什么? 

计算并返回一个整数 n 的各位数字之和

问题2:如果把函数 sum_digits 定义成如下实现方式,能实现同样的输出吗? 

输入为非负整数时,两种方式的输出结果完全一致;但当输入为负数时,递归版本会出错,循环版本仍能正常工作。

image

 

image

 

实验3

image

 问题1: 函数 power 的功能是什么?

计算并返回整数 x 的非负整数次幂 xn 的值

问题2:函数 power 是递归函数吗?如果是,找出递归模式。写出这个递归模式对应的数学公式模型。 

它的递归逻辑基于指数运算的数学性质,将问题分奇偶情况处理:

Capture_20260419_213808

 

 

 

实验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");
    }
}

 

image

 

 

实验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);
}

 

image

 

 

实验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;
}

 

image

 

实验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;
}

 

image

 

posted @ 2026-04-19 22:12  王佐岩  阅读(8)  评论(0)    收藏  举报