| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1033 人关注过本帖
标题:刚学C++。请人帮改个程序
只看楼主 加入收藏
haosw86
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-11-4
收藏
 问题点数:0 回复次数:7 
刚学C++。请人帮改个程序
题目是:要求输入一个不多于5位的正整数,要求输出:1求出是几位数,2分别输出各位上的数字,3按逆序输出该数,例如123,输出321。
下面是我自己写的,做错了~谁能给改下,或写个给我,谢谢了
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int s,i,j;
    int m=0;
    cout<<"please enter the number"<<'\n';
    cin>>s;
    while(s>99999||s<0)
    {
        cout<<"data error,enter again";
        cin>>s;
    }
    cout<<"各位数字分别是:";
    for (i=1;(i<5)&&((s/10)!=0);)
    {
        j=s%10;
        cout<<j<<",";    
        s=s/10;
        m=m+10*exp(i-1)*j; i++;
    }
    if((s/10)==0) cout<<s;
    cout<<"逆序数是:"<<m<<'\n'<<"位数是:"<<i<<endl;
    return 0;
}
2008-11-07 16:16
mbstorm
Rank: 1
等 级:新手上路
帖 子:166
专家分:0
注 册:2008-10-31
收藏
得分:0 
while(s>99999||s<0)
s定义为int型不对,int型范围是-32768-32767
2008-11-07 16:33
haosw86
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-11-4
收藏
得分:0 
我改成 long int后也不对,具体是那个m,我没考虑好怎么设置
2008-11-07 16:53
mbstorm
Rank: 1
等 级:新手上路
帖 子:166
专家分:0
注 册:2008-10-31
收藏
得分:0 
m=m+10*exp(i-1)*j; i++;

这里的exp不是自然对数的几次方吗
2008-11-07 17:03
zqm0209
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2008-1-2
收藏
得分:0 
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int s,i,j;
    long int m=0;
    cout<<"please enter the number"<<'\n';
    cin>>s;
    while(s>99999||s<0)
    {
        cout<<"data error,enter again";
        cin>>s;
    }
    cout<<"各位数字分别是:";
    for (i=1;(i<=5)&&((s%10)!=0);i++)
    {
        j=s%10;
        cout<<j<<",";
        s=s/10;
        m=j+10*m;//逆序
}
   // if((s/10)==0) cout<<s;
    cout<<"逆序数是:"<<m<<'\n'<<"位数是:"<<(--i)<<endl;

    return 0;
}
直接在你程序基础上改的 ,你m那句用错了函数,应该写成 m=m+pow(10,i-1)*j;不过那样得到的是正序数,给你改过来了
收到的鲜花
  • haosw862008-11-09 17:01 送鲜花  3朵  
2008-11-07 19:50
mbstorm
Rank: 1
等 级:新手上路
帖 子:166
专家分:0
注 册:2008-10-31
收藏
得分:0 
这样些太复杂了,请看:
#include <iostream>

using namespace std;
int main()
{
    int i,j,k;

       cout<<"请输入一个非负数:";
       cin>>i;
    
    cout<<i<<"的逆序数为";
    for(k=0;(k<5)&&(i>0);)
    {
        j=i%10;
            cout<<j;
        i=i/10; k++;
    }
    cout<<"数的位数为:"<<k;
    return 0;
}
收到的鲜花
  • haosw862008-11-09 17:00 送鲜花  3朵  
2008-11-07 22:10
安徽U阿朱
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-4-10
收藏
得分:0 
回复 6# 的帖子
  解!
2008-11-07 23:50
hitcolder
Rank: 1
等 级:新手上路
威 望:1
帖 子:124
专家分:0
注 册:2008-10-28
收藏
得分:0 
[bo][un]mbstorm[/un] 在 2008-11-7 22:10 的发言:[/bo]  

这样些太复杂了,请看:
#include

using namespace std;
int main()
{
    int i,j,k;

       couti;
    
    cout
经典,太简练了!!!
2008-11-08 12:47
快速回复:刚学C++。请人帮改个程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038573 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved