任务一

1.功能是将分数转化为等第,整型,字符型。

2.运行时会有多余输出,无法循环。

任务二

1.计算所输入数据各位数之和

2.能,原函数为迭代,新函数为递归

任务三

1.计算数的幂次方

2.分奇偶讨论后归纳为Xn

任务四

#include <stdio.h>
#include <math.h>
int is_prime(int n) {
    if(n<=1||n%2==0)
    return 0;
    if(n==2)
    return 1;
    for(int i=3;i<=sqrt(n);i+=2){
    if(n%i==0)
    return 0;
    }
    //0非素数,1为素数 
    return 1;
}
int main(){
    int total=0;
    printf("100以内的孪生素数:\n");
    for(int n=1;n<=98;n++){
    if(is_prime(n)&&is_prime(n+2)){
    printf("\n%d,%d",n,n+2);
    total++;
        }
    }
    printf("\n100以内的孪生素数共有(%d)个",total);
    return 0;
}

屏幕截图 2025-10-30 162442

任务五

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;
    if(m==0||m==n) return 1;
    int a=1,b=1;
    int ans;
    int i,j;
    for(i=0;i<m;i++){
        a*=(n-i);
        
    }
    for(j=0;j<m;j++){
    
        b*=(m-j);
    }
    ans =a/b;
    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;
    if(m==0||m==n) return 1;
    int ans;
    ans=func(n-1,m)+func(n-1,m-1);
    return ans;
    
}

屏幕截图_30-10-2025_165428_

任务六

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 i;
    if(a<b&&a<c) i=a;
    if(b<a&&b<c) i=b;
    if(c<b&&c<a) i=c;
    while(i!=0){
        if((a%i==0)&&(b%i==0)&&(c%i==0)) {
            return i;
            break;
        }
        i--;    
    }
}

屏幕截图 2025-10-30 173355

任务七

#include <stdio.h>
#include <stdlib.h>
void print_charman(int n);
int main() {
    int n;
    printf("Enter n: ");
    scanf("%d", &n);
    print_charman(n); 
  
    return 0;
}
void print_charman(int n){
    for (int i = 1; i <=n; ++i) {
        for(int k=0;k<=i;k++) printf("\t");
        for (int j=2*n- 2*i + 1; j >0; j--) {
            printf("\t 0 ");
        }
        printf("\n");
        for(int k=0;k<=i;k++) printf("\t");
        for (int j=2*n- 2*i + 1; j >0; j--) {
            printf("\t<H> ");
        }
        printf("\n");
        for(int k=0;k<=i;k++) printf("\t");
        for (int j=2*n- 2*i + 1; j >0; j--) {
            printf("\tI I ");
        }
        printf("\n");
    }
}

屏幕截图 2025-10-30 173458

 

总结

任务四部分

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

这段代码如果改成如下形式

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

输出结果是98而不是8,请问下是为什么