| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 750 人关注过本帖
标题:一个关于算法的问题
只看楼主 加入收藏
as1069
Rank: 2
来 自:河北
等 级:论坛游民
威 望:1
帖 子:46
专家分:31
注 册:2014-6-10
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:10 
一个关于算法的问题
假设通过scanf函数输入一个三位数123经过一个过程输出321
求解
搜索更多相关主题的帖子: 专业 
2015-11-09 20:48
as1069
Rank: 2
来 自:河北
等 级:论坛游民
威 望:1
帖 子:46
专家分:31
注 册:2014-6-10
收藏
得分:0 
用什么函数可以实现
或者用什么方法

我已入坑
2015-11-09 20:50
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
逆序打印吧

剑栈风樯各苦辛,别时冰雪到时春
2015-11-09 20:50
corfox
Rank: 2
等 级:论坛游民
帖 子:15
专家分:53
注 册:2015-7-29
收藏
得分:0 
建议你找一本C语言书籍过一遍,推荐:《The C Programming Language》
http://book.
2015-11-09 20:57
随风的飞叶
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:90
专家分:158
注 册:2015-10-8
收藏
得分:10 
是第四章的第九题吧。
#include<stdio.h>
#include<math.h>
main()
{   
    int a,b,c,d,e,f;
    printf("请输入一个不大于五位数的数字\n");
    scanf("%d",&a);
    if (a>99999)printf("数值错误\n");
    else {
           b=a/10000;
           c=a/1000-b*10;
           d=a/100-b*100-c*10;
           e=a/10-b*1000-c*100-d*10;
           f=a-b*10000-c*1000-d*100-e*10;
      
                  if (b>0)printf("输入的是五位数%d,%d,%d,%d,%d\n",b,c,d,e,f),printf("%d,%d,%d,%d,%d\n",f,e,d,c,b);
               else if (c>0)printf("输入的是四位数%d,%d,%d,%d\n",c,d,e,f),printf("%d,%d,%d,%d\n",f,e,d,c);
               else if (d>0)printf("输入的是三位数%d,%d,%d\n",d,e,f),printf("%d,%d,%d\n",f,e,d);
               else if (e>0)printf("输入的是二位数%d,%d\n",e,f),printf("%d,%d\n",f,e);
               else printf("输入的是个位数%d\n",f),printf("%d\n",f);
   
    }
}
2015-11-09 20:58
as1069
Rank: 2
来 自:河北
等 级:论坛游民
威 望:1
帖 子:46
专家分:31
注 册:2014-6-10
收藏
得分:0 
谢谢了有思路了
不过照你这么做有些复杂
原题是这样的
如果有一个正整数从左、右来读都是一样的,则成为回数;比如101、32123、999都是回数。
回数猜想:任取一个数,再把它倒过来,并把这两个数相加,然后把这个和数在倒过来,与原和数相加,重复此过程一定能获得一个和数。
68,,,86;
68+86=154;
154+541=605;
605+506=1111;
编程,输入任意整数,按上述 步骤产生一个回数,最多计算七步,看是否得到一个回数;;
//

我已入坑
2015-11-09 21:04
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:10 
程序代码:
#include<stdio.h>
int f(int n,int &s){
    if(n>0){
        s=10*s+n%10;
        f(n/10,s);
    }
}
bool isOver(int n){
    int m=0;
    f(n,m);
    return n==m;
}
main(){
    int n=68,m=0,count=0;
    do{
        n=n+m;
        m=0;
        f(n,m);    
        count++;
        printf("第%d趟,%d+%d=%d\n",count,n,m,n+m);
    }while(!isOver(n+m)&&count<=7);
    printf("总次数:%d,回数:%d",count,n+m);
} 


[此贴子已经被作者于2015-11-9 21:23编辑过]


剑栈风樯各苦辛,别时冰雪到时春
2015-11-09 21:22
冷漩2015
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-11-6
收藏
得分:0 
#include<stdio.h>
main()
{
    int x,y,a,b,c;
    scanf("%d",&x);
    a==x/100;
    b==x/10-(x/100)*10;
    c==x-(x/10)*10;
    y==c*100+b*10+a;
    printf("%d",y);
    return 0;
}
2015-11-09 21:40
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
以下是引用冷漩2015在2015-11-9 21:40:58的发言:

#include<stdio.h>
main()
{
    int x,y,a,b,c;
    scanf("%d",&x);
    a==x/100;
    b==x/10-(x/100)*10;
    c==x-(x/10)*10;
    y==c*100+b*10+a;

    printf("%d",y);
    return 0;
}

怎么看上去结果会是乱码

剑栈风樯各苦辛,别时冰雪到时春
2015-11-09 21:42
as1069
Rank: 2
来 自:河北
等 级:论坛游民
威 望:1
帖 子:46
专家分:31
注 册:2014-6-10
收藏
得分:0 
用一个等号就行了一个赋值
两个等号一般判断两个数是否相等

我已入坑
2015-11-09 22:00
快速回复:一个关于算法的问题
数据加载中...
 
   



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

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