实验3

#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.功能:评级,根据输入的分数得出等级;形参:整形;返回值:字符

image

 

2.没有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;
}

1.求输入的整形的各位数相加

image

 

2.可以,此为递归调用,有出口,若非出口情况,则有每次的下一次情况

#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;
    }
}

image

 

#include <stdio.h>
int f(int);
int main() {
    printf("100以内的孪生素数:\n");
    int i ,n = 98,cnt = 0,flag1 = 1,flag2 = 1;
    for (i = 1;i<=98;i++) {
        flag1 = f(i);
        flag2 = f(i+2);
        if (flag1&&flag2) {
            cnt += 1;
            printf("%d %d\n", i,i+2);
        }
    }
    printf("100以内的孪生素数有%d个", cnt);
}
int f(int n) {
    int flag = 1;
    if (n==1) {
        flag = 0;
    }
    if (n == 2) {
        flag = 1;
    }
    for (int i = 2; i <= n/2; i++) {
        if (n % i == 0) {
            flag = 0;
        }
    }
    return flag;
}

image

 text5:迭代

#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) {
    double ans1 = 1.0,ans2 = 1.0,ans3 =1.0;
    double ans ;
    for(int i = 1; i <= n; i++) {
        ans1 *= i;
    }
    for(int i = 1; i <= m; i++) {
        ans2 *= i;
    }
    for(int i = 1; i <= n-m; i++) {
        ans3 *= i;
    }
    ans = ans1/(ans2*ans3);
    return ans;
}

image

 递归:

#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) {
    int ans =0;
    if (m>n) {
        return 0;
    }
    else if (m==n||m ==0) {
        return 1;
    }
    else {
        if (m == 1) {
            ans = n;
        }
        else {
            ans = func(n-1, m - 1)+func(n-1,m);
        }
    }
    return ans;
}

 

image

 

#include <stdio.h>
int gcd(int,int,int);
int g(int,int);


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 k = g(a, c);
    k = g(b, k);
    return k;
}
int g(int a, int b) {
    int temp;
    do {
        temp = a % b;
        a = b;
        b = temp;
    }while (b!=0);
    return a;
}

 

image

 

#include <stdio.h>
#include <stdlib.h>
void print_charman(int);

int main() {
    int n;

    printf("Enter n: ");
    scanf("%d", &n);
    print_charman(n); // 函数调用

    return 0;
}
void print_charman(int n) {
    int i = n*2-1;
    static int num = 0;
    if (n==1) {
        for (int j = 0;j<num;j++) {
            printf("\t");
        }
        for (int j = 0; j < i; j++) {
            printf("\t o");
        }
        printf("\n");
        for (int j = 0;j<num;j++) {
            printf("\t");
        }
            for (int j = 0; j < i; j++) {
                printf("\t<H>");
            }
            printf("\n");
            for (int j = 0;j<num;j++) {
                printf("\t");
            }
                for (int j = 0; j < i; j++) {
                    printf("\tI I");
                }
                printf("\n");
                num++;
            }

    else {
        for (int j = 0;j<num;j++) {
            printf("\t");
        }
        for (int j = 0; j < i; j++) {
            printf("\t o");
        }
        printf("\n");
        for (int j = 0;j<num;j++) {
            printf("\t");
        }
        for (int j = 0; j < i; j++) {
            printf("\t<H>");
        }
        printf("\n");
        for (int j = 0;j<num;j++) {
            printf("\t");
        }
        for (int j = 0; j < i; j++) {
            printf("\tI I");
        }
        printf("\n");
        num++;
        n--;
        print_charman(n);
    }
}

 

image

 

 



posted @ 2025-10-24 09:40  202563430006丁梓轩  阅读(9)  评论(0)    收藏  举报