| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4767 人关注过本帖
标题:将输入整数转换成对应英文输出
只看楼主 加入收藏
酸奶味皮皮虾
Rank: 2
等 级:论坛游民
帖 子:28
专家分:54
注 册:2018-5-26
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:9 
将输入整数转换成对应英文输出
程序代码:
#include <stdio.h>
#include <math.h>
int main ()
{
    int num,j,n=0,temp;

    printf ("enter a num :\n") ;
    scanf ("%d",&num) ;

    temp = num ;                  //求输入数的位数
    while (temp != 0)
    {
        temp = temp/10 ;
        n++ ;
    }

    while (num != 0)              //求每一位数
    {
        n-- ;
        j = (int)(num/pow(10,n)) ;
        num = num-(int)(num/pow(10,n))*pow(10,n);

        switch (j)                  //输出对应英文
        {
            case 0 : printf ("zero "); break ;
            case 1 : printf ("one ") ; break ;
            case 2 : printf ("two ") ; break ;
            case 3 : printf ("three ");break ;
            case 4 : printf ("four ") ;break ;
            case 5 : printf ("five ") ;break ;
            case 6 : printf ("six ") ; break ;
            case 7 : printf ("seven ");break ;
            case 8 : printf ("eight ");break ;
            case 9 : printf ("nine ") ;break ;
            default: break ;
        }
    }
    return 0 ;
}

前几个数都对的,最后一位数总是比实际值小一,请问一下是为啥呀?
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2018-7-15 18:10编辑过]

搜索更多相关主题的帖子: num temp printf case break 
2018-07-15 18:09
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
收藏
得分:5 
你说的问题我没发现,不过我发现你的另外一个问题,输入20,或者200等,末尾为0的数字无法转换,原因在于你判断位数以及转换的条件设置有问题。

126邮箱联系方式:no1xijin@126. com
2018-07-15 19:25
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:5 
楼主的代码明显有问题,问题在于
1:输入 0的处理有问题。
   while (num != 0)   才执行后面的语句,但是选择里面又有0的选择项目,这不是矛盾吗?
2:还有就是输入的数据大于9 的处理不清楚。
3:写的太复杂了,变量太多了,可以进行简化。
俺写了一段,是针对上面3点来改写的,只是第2点能否让你满意,就不清楚了。

程序代码:
#include <stdio.h>
#include <math.h>
int main ()
{
    int num,j,n=0,temp;
    printf ("enter a num :\n") ;
    scanf ("%d",&num) ;
    while (num >10)
    {
        num =num/10 ;
    }
    switch (num)                  //输出对应英文
        {
            case 0 : printf ("zero "); break ;
            case 1 : printf ("one ") ; break ;
            case 2 : printf ("two ") ; break ;
            case 3 : printf ("three ");break ;
            case 4 : printf ("four ") ;break ;
            case 5 : printf ("five ") ;break ;
            case 6 : printf ("six ") ; break ;
            case 7 : printf ("seven ");break ;
            case 8 : printf ("eight ");break ;
            case 9 : printf ("nine ") ;break ;
            default: break ;
        }
    return 0 ;
}
2018-07-15 20:37
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:5 
#include <stdio.h>
int main ()
{
    int num,r;

    printf ("enter a num :\n") ;
    scanf ("%d",&num) ;

    while (num )            
    {
        r = num%10;
        num/=10;
        switch (r)                  //输出对应英文
        {
            case 0 :
                printf ("zero ");
                break ;
            case 1 :
                printf ("one ") ;
                break ;
            case 2 :
                printf ("two ") ;
                break ;
            case 3 :
                printf ("three ");
                break ;
            case 4 :
                printf ("four ") ;
                break ;
            case 5 :
                printf ("five ") ;
                break ;
            case 6 :
                printf ("six ") ;
                break ;
            case 7 :
                printf ("seven ");
                break ;
            case 8 :
                printf ("eight ");
                break ;
            case 9 :
                printf ("nine ") ;
                break ;
            default:
                break ;
        }
    }
    return 0 ;
}
2018-07-16 08:58
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:0 
回复 4楼 花脸
你的输出是把输入的数据按从低位到高位的顺序逐个翻译成英文的。
2018-07-16 11:40
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 5楼 自学的数学
恩恩
2018-07-16 13:48
酸奶味皮皮虾
Rank: 2
等 级:论坛游民
帖 子:28
专家分:54
注 册:2018-5-26
收藏
得分:0 
回复 4楼 花脸
谢谢,从低位到高位输出的话,我试了下我的没问题,但是按高位到低位输出时候,就出问题了,最后一位总是对不起来。
2018-07-16 19:18
酸奶味皮皮虾
Rank: 2
等 级:论坛游民
帖 子:28
专家分:54
注 册:2018-5-26
收藏
得分:0 
回复 2楼 no1xijin
谢谢提醒,对的,是有这样的问题
2018-07-16 19:19
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:5 
#include <stdio.h>
int main ()
{
    char *str[]={"zero","one","two","three","four","five","six","seven","eight","nine"};
    char s[100], *p;
    int num;
    printf("enter a num :\n") ;
    if (scanf("%d",&num)!=1)
        return 0;
    sprintf(s, "%d", num);
    p = s;
    if (*p == '-')
        printf("%c\n",*p++);
    for (; *p; ++p)
        printf("%s\n",str[*p-'0']);
    return 0 ;
}
2018-07-17 07:58
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 7楼 酸奶味皮皮虾
#include <stdio.h>
#include <math.h>
int main ()
{
    int num,n=0,temp;

    printf ("enter a num :\n") ;
    scanf ("%d",&num) ;

    temp = num ;                  //求输入数的位数
    while (temp)
    {
        temp = temp/10 ;
        n++ ;
    }

    while (num)              //求每一位数
    {
        int j=num/(pow(10,n)) ;
        switch (j)                  //输出对应英文
        {
            case 0 : printf ("zero "); break ;
            case 1 : printf ("one ") ; break ;
            case 2 : printf ("two ") ; break ;
            case 3 : printf ("three ");break ;
            case 4 : printf ("four ") ;break ;
            case 5 : printf ("five ") ;break ;
            case 6 : printf ("six ") ; break ;
            case 7 : printf ("seven ");break ;
            case 8 : printf ("eight ");break ;
            case 9 : printf ("nine ") ;break ;
            default: break ;
        }
        num-=j;
        n--;
    }
    return 0 ;
}
2018-07-17 11:02
快速回复:将输入整数转换成对应英文输出
数据加载中...
 
   



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

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