找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 382|回复: 5

刚学C++。请人帮改个程序

[复制链接]
发表于 2009-11-5 00:54:40 | 显示全部楼层 |阅读模式 IP:江苏扬州
题目是:要求输入一个不多于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;
发表于 2009-11-5 00:54:41 | 显示全部楼层 IP:江苏扬州
while(s>99999||s<0)
s定义为int型不对,int型范围是-32768-32767
回复

使用道具 举报

发表于 2009-11-5 00:54:42 | 显示全部楼层 IP:江苏扬州
我改成 long int后也不对,具体是那个m,我没考虑好怎么设置
回复

使用道具 举报

发表于 2009-11-5 00:54:43 | 显示全部楼层 IP:江苏扬州
m=m+10*exp(i-1)*j; i++;

这里的exp不是自然对数的几次方吗
回复

使用道具 举报

发表于 2009-11-5 00:54:46 | 显示全部楼层 IP:江苏扬州
#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;不过那样得到的是正序数,给你改过来了 本帖最近评分记录
haosw86 积分 +3 2008-11-9 17:01   2008-11-7 19:50:12 mbstorm

等 级:注册会员
帖 子:165
专家分:0
注 册:2008-10-31
第 6 楼   得分: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;
} 本帖最近评分记录
haosw86 积分 +3 2008-11-9 17:00   2008-11-7 22:10:15 安徽U阿朱

等 级:新手上路
帖 子:28
专家分:0
注 册:2008-4-10
第 7 楼   得分:0   回复 6# 的帖子

正  解!
回复

使用道具 举报

发表于 2009-11-5 00:54:48 | 显示全部楼层 IP:江苏扬州
mbstorm 在 2008-11-7 22:10 的发言:  

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

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

       couti;
   
    cout
经典,太简练了!!!
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-11-6 03:02 , Processed in 0.841506 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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