gaoaha

博客园 首页 新随笔 联系 订阅 管理

task1

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

A1:功能是根据输入的分数返回等第;形参类型是整数和单字符;返回值类型是单字符
A2:1.ABCD输出了字符串,而不是单字符;2.没有使用break使switch循环终止

 

task2

#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) {
if(n < 10)
return n;
return sum_digits(n/10) + n%10;
}

 

A1:计算各位数字和
A2:可以,第一种用的是迭代思想,第二种用的是递归思想

task3

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

A1:计算指数函数

A2:是。

 

task4

#include<stdio.h>
int is_prime(int n);
int main() {
    int n, i, count;
    count=0;
    for (i=2;i<99;i++) {
        if(is_prime(i)) {
        if(is_prime(i+2)) {
            printf("%d %d\n", i, i+2);
            count+=1;
        }
    }
}
    printf("100内的孪生素数共有%d个",count);
    return 0;
} 

int is_prime(int n) {
    int i;
    for (i=2;i<n+1;i++) {
        if (n % i==0) {
            if (n==i) {
                return 1;
            }
            return 0;
        } 
    }
    
}

 

task5

#include <stdio.h>
#include <stdlib.h>
void hanoi(unsigned int n, char from,char temp, char to);
void moveplate(unsigned int n,char from, char to);
int i = 0;
int main() {
    unsigned int n;
    while (scanf("%u", &n) !=EOF)
    {
        i = 0;
        hanoi(n,'A','B','C');
        printf("\n一个移动了:%d次\n", i);
        printf("\n");
    }
    system("pause");
    return 0;
} 

void hanoi(unsigned int n, char from,char temp, char to) {
    if (n==1)
    moveplate(n, from, to);
    else {
        hanoi(n-1, from, to, temp);
        moveplate(n, from, to);
        hanoi(n-1, temp, from, to);
    }
}

void moveplate(unsigned int n, char from, char to) {
    printf("%u:%c-->%c\n", n, from, to);
    i++;
}

 

task6_1

#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 a;
    a = m;
    int ans, mi, ni, i;
    mi=1;
    ni=1;
    for (i=1;i<=a;i++) {
        ni=ni*n;
        n=n-1;
        mi=mi*m;
        m=m-1;
    }
    ans = ni/mi ;
    return ans;
    
} 

 

task6_2

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

 

task7

#include <stdio.h>
#include <math.h>
int gcd(double a, double b, double 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(double a, double b, double c) {
    int x=0;
    int A, B, C;
    A=a;
    B=b;
    C=c;
    int i;
    x=fmin(fmin(a,b),c);
    for (i=x;i>=1;i--)
        {
            if(A%i==0&&B%i==0&&C%i==0)
                return i;
        }
}

 

posted on 2025-04-06 21:50  gaoaha  阅读(10)  评论(0)    收藏  举报