XDOJ第四弹:函数与递归

​ 废话少说。

P-0033

在这里插入图片描述

只要片段就行了
double function(int n){  
   return n==1?1:1/(1+function(n-1));
}

P-0034

在这里插入图片描述

同样也是代码片段
int function(int a,int b){
    int count=0;
    int n=3,x,y,z,f,t;
    if(a>=b){
       t=a;
       a=b;
       b=t; //确保b是大的那个数
    }
    for(int i=a;i<=b;i++){
        t=i;
        if(i>999){
            n=4;
        }
        switch(n){
            case 3:
                x=i/100;
                y=(i/10)%10;
                z=i%10;
                if(i==x*x*x+y*y*y+z*z*z){
                    count++;
                }
                break;
            case 4:
                x=i/1000;
                y=(i/100)%10;
                z=(i/10)%10;
                f=i%10;
                if(i==x*x*x*x+y*y*y*y+z*z*z*z+f*f*f*f){
                    count++;
                }
                break;
            default:break;
        }
    }
    return count;
}

P-0035

在这里插入图片描述

#include<stdio.h>
#include<math.h>
int main(){
    int n;
    scanf("%d",&n);
    int nums[1000];
    int flag,k=0,t;
    if(n&1!=0){//不是偶数
        return 0;
    }else{
        //生成质数表
        for(int i=2;i<n;i++){
            flag=1;
            for(int j=2;j<=sqrt((double)i);j++){
                if(i%j==0){
                    flag=0;
                }
            }
            if(flag){
                nums[k++]=i;//k最终代表k+1个质数
            }
        }
        //分解偶数
        for(int i=k;i>=(double)k/2;i--){
            t=n-nums[i];
            for(int j=0;j<=(double)k;j++){
                if(t==nums[j]){
                    printf("%d %d",nums[j],nums[i]);
                    goto a;
                }
            }
        }
        a:;
    }
    return 0;
}

P-0044

在这里插入图片描述

//xdoj0044.c
#include<stdio.h>
#include<math.h>
void judge(int n){
    int flag=1;
    for(int i=2;i<=sqrt((double)n);i++){
        if(n%i==0){
            flag=0;
        }
    }
    if(flag){
        printf("yes");
    }else{
        printf("%d",n);
    }
}
int main(){
    int n;
    scanf("%d",&n);
    int f1=1,f2=1,t;
    if(n==2){
        printf("%d",1);
    }else{
        //生成第n个fibonacci数
        for(int i=2;i<n;i++){
            t=f1+f2;
            f1=f2;
            f2=t;
        }
        n=f2;//此时n变为fibonacci数
        judge(n);
    }
    return 0;
}

P-0055

在这里插入图片描述

#include<stdio.h>
#include<math.h>//fabs()里面要浮点数
int main(){
    int n,max;
    scanf("%d",&n);
    int t[30];
    if(n>=2&&n<=30){
        for(int i=0;i<n;i++){
            scanf("%d",&t[i]);
        }
        max=fabs((double)t[0]-t[1]);//假设波动最大的是前俩项差
      for(int i=0; i <n-1;i++){
            if(fabs((double)t[i+1]-t[i])>max){
                max=fabs((double)t[i + 1]-t[i]);
        }
      }
        printf("%d",max);
    }
    return 0;
}

P-0057

在这里插入图片描述

#include<stdio.h>
int fib(int n){
    int f0=7,f1=11,t;
    if(n==0){
        return f0;
    }else if(n==1){
        return f1;
    }else{
        for(int i=1;i<n;i++){
            t=f0+f1;
            f0=f1;
            f1=t;
        }
        return f1;
    }
}
int main(){
    printf("%d",fib(2));
    return 0;
}

P-0065

在这里插入图片描述

#include<stdio.h>
int calculate(int n){
    int sum=0;
    while(n!=0){
        sum+=n%10;
        n/=10;
    }
    return sum;
}
int main(){
    long int n;
    int ans=0;
    scanf("%ld",&n);
    ans=calculate(n);
    while(ans>=10){
        ans=calculate(ans);
    }
    printf("%d",ans);
    return 0;
}

P-0159

在这里插入图片描述

#include<stdio.h>
float Mul(int m){
    float ans=1;
    for(int i=m;i>1;i--){
        ans*=i;
    }
    return ans;
}
int main(){
    int m,n;
    scanf("%d%d",&m,&n);
    if(m>n){
        printf("%.2f",Mul(m)/Mul(n)/Mul(m-n));
    }
    return 0;
}

P-0205

在这里插入图片描述

#include<stdio.h>
int main(){
    char a;
    int n;
    scanf("%c",&a);
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        for(int j=n-i;j>1;j--){
            printf(" ");
        }
        for(int k=0;k<=i;k++){
            printf("%c ",a);
        }
        printf("\n");
    }
    return 0;
}

P-0215

在这里插入图片描述

#include<stdio.h>
#include<string.h>
int main(){
    char str[100];
    scanf("%s",str);
    for(int i=strlen(str)-1;i>=0;i--){
        printf("%c",str[i]);
    }
    return 0;
}

P-0219

在这里插入图片描述

这个题目没说如果不是素数会怎样,不过我猜了个NO,没想到对了
#include<stdio.h>
#include<math.h>
int main(){
    unsigned int n;
    int flag=1;
    scanf("%d",&n);
    if(n>=2){
        for(int i=2;i<=sqrt((double)n);i++){
            if(n%i==0){
                flag=0;
            }
        }
        if(flag){
            printf("YES");
        }else{
            printf("NO");
        }
    }
    return 0;
}

P-0221

在这里插入图片描述

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(){
    char s[100];
    scanf("%s",s);
    int len=strlen(s);
    int c1=0,c2=0;
    for(int i=0;i<len;i++){
        if(isalpha(s[i])){
            c1++;
        }else if(isdigit(s[i])){
            c2++;
        }
    }
    printf("%d,%d",c1,c2);
    return 0;
}

P-0227

在这里插入图片描述

#include<stdio.h>
#include<ctype.h>
#include<string.h>
int main(){
    int count=0;
    char s[100];
    scanf("%s",s);
    int len=strlen(s);
    for(int i=0;i<len;i++){
        if(isalpha(s[i])){
            count++;
        }
    }
    printf("%d",count);
    return 0;
}

P-0228

在这里插入图片描述

#include<stdio.h>
#include<string.h>
int main(){
    char s[100];
    scanf("%s",s);
    int len=strlen(s);
    for(int i=0;i<len;i+=2){
        printf("%c",s[i]);
    }
    return 0;
}

P-0229

在这里插入图片描述

#include<stdio.h>
#include<string.h>
int main(){
    char a[100];
    char b[100];
    gets(a);
    gets(b);
    printf("%s%s",a,b);
    return 0;
}

P-0230

在这里插入图片描述

#include<stdio.h>
#include<math.h>
int fun(int y[],int x){
    int flag=1,k=0;
    for(int i=2;i<=x;i++){
        flag=1;
        for(int j=2;j<=sqrt((double)i);j++){
            if(i%j==0){
                flag=0;
            }
        }
        if(flag){
            y[k++]=i;
        }
    }
    return k;
}
int main(){
    int x;
    int y[1000];
    scanf("%d",&x);
    printf("%d\n",fun(y,x));
    for(int i=0;i<fun(y,x);i++){
        printf("%d ",y[i]);
    }
    return 0;
}

P-0240

在这里插入图片描述

#include<stdio.h>
int main(){
    int n;
    scanf("%d",&n);
    char out[100]={'\0'};
    int i=0;
    if(n>=0){
        while(n!=0){
            out[i++]=(n%10)+48;
            n/=10;
        }
        for(int j=i-1;j>=0;j--){
            printf("%c",out[j]);
        }
    }else{
        n=-1*n;
        while(n!=0){
            out[i++]=(n%10)+48;
            n/=10;
        }
        printf("-");
        for(int j=i-1;j>=0;j--){
            printf("%c",out[j]);
        }
    }
    
    return 0;
}

P-0241

在这里插入图片描述

#include<stdio.h>
int main(){
    int a;
    scanf("%x",&a);
    printf("%d",a);
    return 0;
}

P-0289

   这题,题目点不开

最后

感兴趣的可以关注我的微信公众号,第一时间收到动态
在这里插入图片描述

  • 3
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【大纲】 0-1-课程内容和安排介绍 1-1-计算机的概念 1-2-程序设计语言概述 1-3-Python语言 1-4-Python开发环境配置 1-5-基本程序设计方法 1-6-理解问题的计算部分 1-7-温度转换程序实例 2-1-Python程序元素分析 2-2-程序编写模板 2-3-turtle库和蟒蛇绘制程序 2-4-蟒蛇绘制程序分析 2-5-函数库的引用 3-1-Python中类型的概念 3-2-数字类型 3-3-字符串类型 3-4-字符串的操作 3-5-元组类型 3-6-列表类型及操作 3-7-math库和random库 3-8-π的计算 4-1-1-程序基本结构 4-1-2-简单分支 4-1-3-多分支 4-1-4-异常处理设计 4-1-5-三者最大实例分析 4-2-1-基本循环结构 4-2-2-通用循环构造方法 4-2-3-死循环半路循环 4-2-4-布尔表达式 6-1-1-文件的基础 6-1-2-文件的基本处理 6-1-3-文件实例一 6-1-4-文件实例二 6-2-1-字典的基础 6-2-2-字典的操作 6-2-3-字典实例一 6-2-4-字典实例二 7-3-1-计算思维 7-3-2-自顶向下的设计 7-3-3-自底向上的执行 7-3-4-软件工程 7-3-5-敏捷开发方法 7-4-1-面向过程的程序设计 7-4-2-面向对象的程序设计 7-4-3-基本例子 7-4-4-面向对象的特点 8-6-1-基本介绍 8-6-2-图形对象概念 8-6-3-交互式图形用户接口 8-6-4-图形库的应用方法 8-6-5-Turtle库介绍 8-6-6-图形用户接口实例 8-6-7-Turtle实例 8-6-8-Turtle Art 第6章-函数递归-1-函数定义 第6章-函数递归-2-函数的调用和返回值 第6章-函数递归-3-改变参数值的函数 第6章-函数递归-4-程序结构和递归 第6章-函数递归-5-函数实例

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值