xdoj函数2数字处理,猴子爬山,字符串查找,字符串连接


数字处理


问题描述    
编写一个程序,从键盘输入一个非零整数n(0 < n <= 1000 000 000),对整数n进行如下处理:
将整数的各位数字取出来相加,如果结果是一位数则输出该数,否则重复上述过程,直到得到的结果为一位数,并输出该结果。
例如:n=456,变换过程如下
4+5+6=15
1+5=6
输出结果为6
输入说明    
一个非零整数n。
输出说明    
输出整数n的处理结果。
输入样例    
456
输出样例    
6
 

#include <stdio.h>
int main()
{
    long int n=0;
    scanf("%ld",&n);
    long int n1=n;
    int i=0,sum=0,arr[10]={0};
    for(;;)
    {
        for(i=0;n1>=10;) 
        {
            arr[i]=n1%10;
            n1/=10;
            sum=sum+arr[i];
        }
        arr[i+1]=n1;
        sum=sum+arr[i+1];
        if(sum<10)
        {
            break;
        }
        n1=sum;
        sum=0;
    }
    printf("%d",sum);
    return 0;
}



猴子爬山 

一只顽猴想从山脚爬到山顶,途中经过一个有 N 阶台阶的阶梯,该猴子有个习惯,每次只能跳 1 阶台阶或者 3 阶台阶,求猴子通过 N 个台阶有多少种不同的跳跃方式?
输入格式
输入只有一个整数 N,表示台阶的数量
输出格式
输出一个数字,表示有多少种跳跃方式
样例输入 1
50
样例输出 1
122106097
样例输入 2
3
样例输出 2
2
评测用例规模与约定
0 < N < 50

#include <stdio.h>
int main()
{
    int n=0,i=0;
    int sum[100]={0};
    scanf("%ld",&n);
    for(i=1;i<=n;i++)
    {
        if(i==1)
        {
            sum[i]=1;
            continue;
        }
        if(i==2)
        {
            sum[i]=1;
            continue;
        }
        if(i==3)
        {
            sum[i]=2;
            continue;
        }
        if(i>3)
        sum[i]=sum[i-1]+sum[i-3];
    }
    printf("%d",sum[n]);
    return 0;
}


字符串查找


 
编写一个函数fun,求一个字符串中的英文字母的个数。
主函数中输入字符串,调用函数,输出英文字母个数
输入说明:共一行,输入字符串
输出说明:输出一个整数,为英文字母个数
输入示例:aBc456
输出示例:3
 

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int fun(char x)
{
    if(isupper(x)||islower(x))
    {
        return 1;
    }
    else 
    return 0;
}
int main()
{
    char str[100];
    gets(str);
    int i=0,count=0;
    int n=strlen(str);
    for(i=0;i<n;i++)
    {
        if(fun(str[i])==1)
        count++;
    }
    printf("%d",count);
    return 0;
}


字符串连接 


编写一个函数fun实现字符串连接功能(不使用strcat函数)。
主函数输入两个字符串,调用函数,输出连接后的字符串
输入说明:共两行,每一行输入一个字符串
输出说明:共一行,输出连接后的字符串
输入示例:abcd
          1234
输出示例:abcd1234
 

#include <stdio.h>
#include <string.h>
void fun(char x[],char y[])
{
    int i=0;
    char z[200];
    int n1=strlen(x);
    int n2=strlen(y); 
    for(i=0;i<n1;i++)
    {
        z[i]=x[i];
    }
    for(i=n1;i<n1+n2;i++)
    {
        z[i]=y[i-n1];
    }
    puts(z);
}

int main()
{
    char str1[100],str2[100],str3;
    int n1,n2;
    gets(str1);
    gets(str2);
    fun(str1,str2);
    return 0;
}

  • 19
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北の风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值