注册 登录
编程论坛 C++教室

2.编写函数computNum( int num),它的功能是计算任意输入的一个正整数的各位数字之和,结果由函数返回(例如:输入数据是123,返回值为6)。

lemonandtree 发布于 2017-11-18 08:55, 3327 次点击
我的代码如下:
#include<iostream>
using namespace std;
char computnum(char a[1000])
{
    int sum=0,i=0;
    while(a[i]!='\0')
    {
        a[i]=a[i]-48;
        sum+=a[i];
        i++;
    }
    return sum;
}
void main()
{
    int p,i=0,b;
    char a[1000];
    gets(a);
    while(a[i]!='\0')
    {
        if(a[i]<'0'||a[i]>'9')
        {
        cout<<"data error";
        b=1;
        break;
        }
        i++;
    }
    if(b==1)
        cout<<endl;
    else
    {
      p=computnum(a);
      cout<<p;
    }
}
可是这样我输入的数字就不是任意的了,还是存在范围。
9 回复
#2
rjsp2017-11-18 09:06
题目要求是 computNum( int num )
你写的是 computNum( char a[1000] )
#3
lemonandtree2017-11-18 09:30
可是用 int num的话也要我的也要限制范围,我只能想到用多重for循环,就这种。
for(i=0;i<=9;i++)
    for(j=0;j<=9;j++)
         for(k=0;k<=9;k++)
             if(num=i*100+j*10+k)
               num=i+j+k;
#4
lemonandtree2017-11-18 09:32
我想问一下如何才能做到不限制范围
#5
rjsp2017-11-18 19:54
题目中哪有“不限制范围”的要求?既然参数类型是int,那肯定中int范围内
#6
lemonandtree2017-11-18 22:13
那您能用c++写一个在int范围的并且符合题目要求不用字符的代码吗?
#7
rjsp2017-11-19 11:41
程序代码:
#include <iostream>
using namespace std;

int computNum( int num )
{
    int r = 0;
    for( ; num!=0; num/=10 )
        r += num%10;
    return r;
}

int main( void )
{
    int num;
    cin >> num;
    cout << computNum(num) << endl;
}
#8
lemonandtree2017-11-20 22:55
我想问一下为什么输入非数字的时候总是输出同一个值:-52。
#9
rjsp2017-11-20 23:23
输入非数字时,也就是num未赋值,那么属于“未定义行为”
#10
lemonandtree2017-11-21 15:03
哦哦,谢谢指导
1