数字处理
问题描述
编写一个程序,从键盘输入一个非零整数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;
}