鱼C论坛

 找回密码
 立即注册
查看: 6745|回复: 17

看看这个题吧,很有用的

[复制链接]
发表于 2013-7-2 16:00:10 | 显示全部楼层 |阅读模式
1鱼币
一个正整数的数字根是通过计算该整数的各位和产生的,例如:正整数24 的数字根是6,,39:首先为3+9 = 12;
因为12 是两位数所以还得1+2 = 3;最终32的数字跟是3;所以数字跟一定是一位数;输入文件包含一系列的正整数,一行一个,
用0输入结束
#include <iostream>
#include <string>
using namespace std;
int fun(string s);
int main()
{
    string s;
    int a;
    while(cin>>s)
    {
        int i= 0 ,sum = 0;


        if(s[i] == '0')
        {
            break;
        }
        else
         {
            a = fun(s);
            cout <<a<<endl;
         }
    }

}
int fun(string s)
{
    int i = 0,sum = 0;
    char ch;
    for(i=0;i<s.length();i++)
    {
      sum += s[i]-48;
    }

    return sum;

}

帮我改改,使用递归的方式,我不知道怎样灵活运用字符串。。

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-2 20:28:37 | 显示全部楼层
看不懂!在写啥?
不是只有一个正整数吗?
多个要怎么求?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-2 21:21:59 | 显示全部楼层
哎,以我双核的大脑实在是没有读懂题目是什么意思
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-7-3 09:40:20 | 显示全部楼层

一个正整数的数字根是通过计算该整数的各位和产生的,输入一个数,程序运行结果必须是一位数,数字39的数字跟是3,就这样,很简单的题目意思
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-7-3 09:41:41 | 显示全部楼层
友来友网 发表于 2013-7-2 21:21
哎,以我双核的大脑实在是没有读懂题目是什么意思

一个正整数的数字根是通过计算该整数的各位和产生的,输入一个数,程序运行结果必须是一位数,数字39的数字跟是3,就这样,很简单的题目意思
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-3 10:05:53 | 显示全部楼层
  1. #include <iostream>
  2. using namespace std;

  3. bool get_input( int& data );
  4. int compute( int data );
  5. int main () {
  6.         int data;
  7.         while( get_input(data) ) {
  8.                 cout<<compute(data)<<endl;
  9.         }
  10. }

  11. bool get_input( int& data ) {
  12.         cout<<"输入一个数字,输入字母退出:";
  13.         cin>>data;
  14.         return cin;
  15. }

  16. int compute( int data ) {
  17.         if( data/10 == 0 ) return data;
  18.         int sum = 0;
  19.         while( data != 0 ) {
  20.                 sum += data%10;
  21.                 data /= 10;
  22.         }
  23.         return compute( sum );
  24. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-3 12:06:48 | 显示全部楼层

怎么感觉如果输入39 这种要计算多次的就不对了捏??
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-3 12:09:49 | 显示全部楼层

怎么感觉如果输入39 这种要计算多次的就不对了捏??
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-3 12:51:30 | 显示全部楼层
我呼喊我吼吼
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-3 13:06:39 | 显示全部楼层
pcfate 发表于 2013-7-3 12:09
怎么感觉如果输入39 这种要计算多次的就不对了捏??
39:首先为3+9 = 12;
因为12 是两位数所以还得1+2 = 3;

39的答案依据题目意思是3。没错啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-7-3 19:42:12 | 显示全部楼层

谢谢了:lol
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-4 00:14:47 | 显示全部楼层
学习学习{:7_155:}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-4 00:24:39 | 显示全部楼层
我试着修改了一下,结果应该可以满足要求,楼主看看吧。
#include <iostream>
#include <string>
using namespace std;
int fun(int num);
void main()
{
    string s;
    int a,num;
        int length;
    while(cin>>s)
    {
                if(s[s.length()-1]!='0')
                        cout<<"输入格式错误,应该以0结尾"<<endl;
                else
                {
                        length=s.length();
                        num=0;
                        for(int i=0;s[i]!='0';i++)
                                num=num*10+(s[i]-'0');
                        a = fun(num);
                        cout <<"数字根为"<<a<<endl;
                }
    }       
}
int fun(int num)
{
        int i=0;
    if(num<10)
                return num;
        else
        {
                while(num!=0)
                {
                        i+=num%10;
                        num=num/10;
                }
                fun(i);
        }
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-4 13:17:40 | 显示全部楼层

                               
登录/注册后可看大图
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-4 14:30:14 | 显示全部楼层
我是新手,看不懂呢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-6 19:58:00 | 显示全部楼层
学习学习:lol
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-8 21:33:45 | 显示全部楼层
我真的没看到楼主你想说什么??可能是我的问题 应为我语文成绩今年高一期末考最好50分
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-16 18:53:26 | 显示全部楼层
这个是什么???????
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-21 08:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表