| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1306 人关注过本帖
标题:大佬帮忙看看程序哪错了,逆序输出不限位数的数字,要求用do语句编写
只看楼主 加入收藏
了无此生
Rank: 3Rank: 3
来 自:粤地潮州
等 级:论坛游侠
威 望:3
帖 子:82
专家分:121
注 册:2018-11-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
大佬帮忙看看程序哪错了,逆序输出不限位数的数字,要求用do语句编写
/*把输入的数逆序输出,而且要不限位数*/
#include <stdio.h>
int main(void)
{
        int b, n, m = 0;
        printf("Enter a number: ");
        scanf("%d", &b);
        do {
        n = b % 10;
        b /= 10;
        m = m * 10 + n;
}       while (n > 0);
        printf("The reversal is: %d\n", m);
        return 0;
}
运行之后发现输入101会输出1,输入102输出20,输入12345输出543210,真的晕,现在脑壳疼,想不出逻辑过程
搜索更多相关主题的帖子: 逆序 输出 位数 do 输入 
2018-11-20 19:07
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:396
专家分:2640
注 册:2018-3-30
收藏
得分:5 
逆序输出不限位数的数字,不限位数,很容易超过int上限,数字转换相当繁琐。
何不直接当字符串处理,数字连起来可绕地球两圈!
程序代码:
#include<stdio.h>
#include<string.h>
int main()
{
    char ch[1000];
    int i;
    gets(ch);
    i=strlen(ch);
    do{
        putchar(ch[--i]);
    }while(i>0);
    return 0;
}


[此贴子已经被作者于2018-11-20 19:38编辑过]


saber,别哭.
2018-11-20 19:31
Tomorrw_I
Rank: 10Rank: 10Rank: 10
等 级:禁止访问
威 望:6
帖 子:406
专家分:1712
注 册:2018-10-16
收藏
得分:5 
    int n;
    scanf("%d",&n);
    while(n){
        printf("%d",n%10);
        n/=10;
    }
    printf("\n");

学C有用吗?
学C++有前途吗?
数据库有必要学吗?
……
别问,你还什么都不会,学就对了
……
2018-11-20 19:41
了无此生
Rank: 3Rank: 3
来 自:粤地潮州
等 级:论坛游侠
威 望:3
帖 子:82
专家分:121
注 册:2018-11-14
收藏
得分:0 
回复 2楼 幻紫灵心
谢谢大佬的帮忙,但是我现在还没有学到那

睡不醒的学渣(^・ω・^ )
2018-11-20 22:45
Tomorrw_I
Rank: 10Rank: 10Rank: 10
等 级:禁止访问
威 望:6
帖 子:406
专家分:1712
注 册:2018-10-16
收藏
得分:3 
回复 4楼 了无此生
while都有了,带个do,自己转下

学C有用吗?
学C++有前途吗?
数据库有必要学吗?
……
别问,你还什么都不会,学就对了
……
2018-11-20 23:03
了无此生
Rank: 3Rank: 3
来 自:粤地潮州
等 级:论坛游侠
威 望:3
帖 子:82
专家分:121
注 册:2018-11-14
收藏
得分:0 
回复 5楼 Tomorrw_I
/*把输入的数逆序输出,而且要不限位数*/
#include <stdio.h>
int main(void)
{
        int n;
        printf("Enter a number: ");
        scanf("%d", &n);
        printf("The revesal is: ");
        do {
        printf("%d", n % 10);
        n /=10;
}       while (n > 0);
        return 0;
}
谢谢大佬指教,发现我有一大堆没用的东西,改了几遍后终于好多了

睡不醒的学渣(^・ω・^ )
2018-11-21 00:47
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:5 
    int n=123456;
    do
    {
        printf("%d ", n%10);
    }
    while (n/=10);
2018-11-21 04:25
了无此生
Rank: 3Rank: 3
来 自:粤地潮州
等 级:论坛游侠
威 望:3
帖 子:82
专家分:121
注 册:2018-11-14
收藏
得分:0 
回复 7楼 吹水佬
真的牛
我想问一下,
int n = 12345;
为什么会使程序可以运行,在我的理解中,int n = 12345;就是给n赋值为12345,而且我尝试了int n = 123456789; 也可以运行,到底是为什么
后来再尝试了int n = 1; 发现也可以


[此贴子已经被作者于2018-11-21 11:20编辑过]


睡不醒的学渣(^・ω・^ )
2018-11-21 11:18
Tomorrw_I
Rank: 10Rank: 10Rank: 10
等 级:禁止访问
威 望:6
帖 子:406
专家分:1712
注 册:2018-10-16
收藏
得分:2 
你在自言自语吗?
n的值,只要在int范围内,程序肯定正常运行!


   do
    {
        printf("%d ", n%10);   //第一次运行,取各位数
    }
    while (n/=10);           //依次去掉,个位,十位。。。。n/10,啥时候等于0,终止循环,你不明白吗?

学C有用吗?
学C++有前途吗?
数据库有必要学吗?
……
别问,你还什么都不会,学就对了
……
2018-11-21 11:44
快速回复:大佬帮忙看看程序哪错了,逆序输出不限位数的数字,要求用do语句编写
数据加载中...
 
   



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

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