| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3430 人关注过本帖
标题:求助!!小程序:输入数字字符转化为美元
只看楼主 加入收藏
yue_sss
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-3-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:31 
求助!!小程序:输入数字字符转化为美元
程序如下,小弟初学c语言,这道题是c和指针上的一个问题,但是总是没有输出,还没有学到动态分配的内容,但是为啥一直啥输出都没有,求大神帮看看小弟谢过各位大神!

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXCOUNT 10

char dst[MAXCOUNT];
char src[MAXCOUNT];
void dollars(register char *dst, register char *src);

int main(void)
{
    printf("input is :%s\n",dst);
    scanf("%s" , dst);
    dollars(dst, src);
    printf("translation is %s\n", src);
    return EXIT_SUCCESS;

}

void dollars(register char *dst, register char *src)
{
    int  len;

    if(dst==NULL || src==NULL)
    return;


    *dst++="$";
    len=strlen(src);

    if(len>=3)
    {
        int i;
        for(i=len-2;i>0;)
        {
            *dst++=*src++;
            if(--i>0 && i%3==0)
                *dst=',';
        }
    }
    else *dst='0';

    *dst++='.';
    *dst++= len<2 ? '0': *src++;
    *dst++= len<1 ? '0': *src;
    *dst  ='0';
}
搜索更多相关主题的帖子: register dollars include c语言 
2017-03-31 22:21
yue_sss
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-3-31
收藏
得分:0 
求大神帮忙看看,输入输出写的比较简陋,但不知道为啥啥都没有
2017-03-31 22:24
yue_sss
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-3-31
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
结果想达到的是这样的。。。
2017-03-31 22:32
yue_sss
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-3-31
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXCOUNT 10

char dst[MAXCOUNT];
char src[MAXCOUNT];
void dollars(register char *dst, register char *src);

int main(void)
{
    printf("input is :%s\n",dst);
    scanf("%s" , dst);
    dollars(dst, src);
    printf("translation is %s\n", src);
    return EXIT_SUCCESS;

}

void dollars(register char *dst, register char *src)
{
    int  len;

    if(dst==NULL || src==NULL)
    return;


    *dst++="$";
    len=strlen(src);

    if(len>=3)
    {
        int i;
        for(i=len-2;i>0;)
        {
            *dst++=*src++;
            if(--i>0 && i%3==0)
                *dst=',';
        }
    }
    else *dst='0';

    *dst++='.';
    *dst++= len<2 ? '0': *src++;
    *dst++= len<1 ? '0': *src;
    *dst  ='0';
}
2017-03-31 22:33
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:15 
第九章题挺多,当时写的很乱。凑活看吧。

程序代码:
#include <stdio.h>
#include <string.h>

void
dollars( char *dest, char const *src );

int
main( void )
{
    char s1[ 20 ];
    char s2[ 20 ];

    while( gets( s1 ) && '\0' != s1[ 0 ] )
    {
        dollars( s2, s1 );
        printf( "%s\n", s2 );
    }
    return 0;
}


void
dollars( char *dest, char const *src )
{
    int Length;
    int Excess;
    int i;

    if( NULL == dest || NULL == src )
        return;

    Length = strlen( src ) - 2;
    Excess = Length % 3;

    *dest++ = '$';

    if( 3 < Length )
    {
        for( i = 0; i < Length; i++ )
        {
            if( i == Excess && 0 != Excess )
                *dest++ = ',';
            if(  0 == ( i - Excess) % 3 && 3 <= i )
                *dest++ = ',';
            *dest++ = *src++;
        }
    }
    else if( 0 < Length )
    {
        for( i = 0; i < Length; i++ )
            *dest++ = *src++;
    }
    else
        *dest++ = '0';

    *dest++ = '.';
    if( 0 < strlen( src ) )
    {
        if( 1 == strlen( src ) )
        {
            *dest++ = '0';
            *dest++ = *src;
        }
        else
            for( i = 0; 2 > i; i++ )
                *dest++ = *src++;
    }
    else
        for( i = 0; 2 > i; i++ )
            *dest++ = '0';
    *dest = '\0';
}

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-03-31 22:35
yue_sss
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-3-31
收藏
得分:0 
回复 5楼 renkejun1942
谢谢大神!!!研究对比下
2017-03-31 22:40
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 6楼 yue_sss
主要的思路是,首先抛弃最后两位。
也就是length = sirlen( src ) - 2;这一句的目的。
然后计算位数,看会不会存在小于3个的位数。如果有的话,那么就必须加上一个逗号。
其他的就是模运算了,为0就加一个逗号。当然这里加是需要把上面的那个多出来的数字去掉。 也就是 if(  0 == ( i - Excess) % 3 && 3 <= i ) 语句的目的。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-03-31 22:48
yue_sss
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-3-31
收藏
得分:0 
回复 7楼 renkejun1942
书后给的函数答案都是有问题的。。。请问大神当时是怎么利用这本书的?课后题是都做么,我是想都看一遍然后挑一些做,现在看了9章。。。做这个还是不行啊
2017-04-01 12:17
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:5 
回复 8楼 yue_sss
大部分都做了,但是第9章第17题,题面太长了,我看了半天都没看懂题目的具体要求,所以……直接放弃了。

书后面给的答案是对的哦,一般有答案的时候,我都自己做,做完了,对一下答案。

这本书很多题,都给了你思路,而且写代码,最重要的就是思路,思路对了,写起来就容易了。

所以……我建议,当看到一个题的时候,先不要动手写,拿几张纸,打打草稿,整理思路。

[此贴子已经被作者于2017-4-1 12:54编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-01 12:50
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用renkejun1942在2017-4-1 12:50:55的发言:

但是第9章第17题,题面太长了,我看了半天都没看懂题目的具体要求,所以……直接放弃了。


DO IT YOURSELF !
2017-04-01 13:26
快速回复:求助!!小程序:输入数字字符转化为美元
数据加载中...
 
   



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

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