实验3

task 1运行代码

task1运行代码

task 1运行截图

实验3 task1.1运行截图

问题1:score_to_grade的功能是定义函数,从而达成可以将分数定为等级;形参类型为int类型即整数形,返回值类型为char类型即字符型。

问题2:1.会导致程序switch语句前面步骤均失效,仅能发生default语句的情况,导致任何分数都被定级为‘E',从而评估出错。

2.字符定义给ans时应该使用单引号,而非双引号。

task 2.1 运行代码

#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;
}
task2.1运行代码

task 2.1 运行截图

实验3 task2.1运行截图

task 2.2 运行代码

task2.2运行代码

task 2.2 运行截图

实验3 task2.2运行截图

问题1:sum_digits的功能是将数值各项相加从而获得总和。

问题2:可以实现同样的输出。第一种方法使用了迭代方法,是通过循环不断获得各项数值,从而相加获得结果;第二种则是通过递归方法,不断获得最后一位的数值,再不断相加以获得最终结果。

task 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;
    }
}
task 3 运行代码

task 3 运行截图

实验3 task3.1运行截图

问题1:power的功能是计算a的n次幂。

问题2:是递归函数

IMG20251028144121

task 4 运行代码

#include <stdio.h>
#include <math.h>

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

int main(){
    int cnt=0;
    printf("100以内的孪生素数:\n");
    for(int n=2;n<=98;n++){
        if(is_prime(n)&&is_prime(n+2)){
            printf("%d %d\n",n,n+2);
            cnt++;
        }
    }    

printf("100以内的孪生素数共有%d个。\n",cnt);
return 0;
}
task 4 运行代码

task 4 运行截图

实验3 task4运行截图

task 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){
    int numerator=1,denominator_1=1,denominator_2=1;
    int x,y,z;
    int ans=1;
    
    for(x=1;x<=n;++x){
        numerator*=x;
    }
    for(y=1;y<=m;++y){
        denominator_1*=y;
    }
    for(z=1;z<=(n-m);++z){
        denominator_2*=z;
    }
    ans=numerator/(denominator_1*denominator_2);
    
    return ans;
}
迭代
#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(n<m){
        return 0;
    }
    else if(m==0||m==n) {
        return 1;
    }
    else
    return func(n-1,m)+func(n-1,m-1);
}
递归

运行截图

实验3 task5 递归

实验3 task5 迭代

task 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 n;
    n=a;
    if(n>b){
        n=b;
    }
    if(n>c){
        n=c;
    }
    int i;
    for(i=n;i>=1;--i){
        if(a%i==0&&b%i==0&&c%i==0){
        return i;    
        }
    }
}
task 6 运行代码

task6运行截图

实验3 task6运行截图

 task 7 运行代码

#include <stdio.h>
#include <stdlib.h>

 void print_charman(int n);
 int main() {
     int n;
     printf("input n: ");
     scanf("%d", &n);
     print_charman(n);
     return 0;
 }
 
 void print_charman(int n) {
     int i,j;
     
     for(i=1;i<=n;++i){
         int x=2*(n-i+1)-1;
         for(j=0;j<i;++j){
             printf("\t");
         }
        for(j=0;j<x;++j){
            printf(" O\t");
        }
        printf("\n");
        for(j=0;j<i;++j){
             printf("\t");
         }
        for(j=0;j<x;++j){
            printf("<H>\t");
        }
        printf("\n");
        for(j=0;j<i;++j){
             printf("\t");
         }
        for(j=0;j<x;++j){
            printf("I I\t");
        }
        printf("\n");
     }
 }
task7运行代码

task7 运行截图

实验3 task7运行截图1

实验3 task7运行截图2

 

posted @ 2025-10-28 23:20  瀮昀  阅读(12)  评论(1)    收藏  举报