标题:求助!!小程序:输入数字字符转化为美元
只看楼主
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
现在可以了,你错的地方我给了你一个注释。你主要是写反了参数。
我刚还担心你别是跟我学着写反了,我又回去看了下我的代码,所幸我没写反。

我还第一次看这题的答案,答案确实写的比我好天上去了。


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



void dollars(register char *dst, register char *src);

int main(void)
{
    char s1[20];
    char s2[20];
    while( gets(s1) && s1[0]!='\0')
    {
        dollars(s2, s1);//这里你写反了,函数的目的是将第二个参数所指向的字符串复制到第一个参数。
        printf("translation is %s\n", s2);
    }
    return 0;

}

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-4-1 17:08编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-01 17:06
yue_sss
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-3-31
得分:0 
回复 20楼 renkejun1942
我手打一遍你的代码 如果还是乱码的话再说。。。
2017-04-01 17:09
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:0 
有一个字用的好,“抄”

“抄”都抄不好,自己能码出东西么

三十年河东,三十年河西,莫欺少年穷!
2017-04-01 17:10
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回复 22楼 yue_sss
你看21楼,注释!我已经帮你改过来了。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-01 17:12
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
得分:0 
//#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
void dollars(char *dest, char  *sc){
    unsigned int len = strlen(sc);
    int gro=0;
    char *des,*src;
    *dest = '$';
    des =dest+ 1;
    src = sc;
    if (len <= 2){
        *des = '0';
        *(des + 1) = '.';
        switch (len)
        {
        case 0: *(des + 2) = '0'; *(des + 3) = '0'; break;
        case 1: *(des + 2) = '0'; *(des + 3) = *src; break;
        case 2: *(des + 2) = *src; *(des + 3) = *(src+1); break;
        }
        *(des + 4) = '\0';
        return;
    }

    len = len - 2;

    gro = len % 3;
    if (gro != 0){
        strncpy(des, src, gro);
        *(des + gro) = ',';
        des = des + gro + 1;
    }
    src = sc + gro;
    len -= gro;

    //if ((len) % 3 == 0)
    {
        int i = 0;
        while (len>=3*i+1)
        {
            strncpy(des+4*i, src+4*i, 3);
            if((len/3)-1>i) *(des + 4*i+3) = ',';
            i++;
        }
        *(des +len+len/3-1) = '.';
        *(des + len+len/3) = *(src+len);
        *(des +len+ len/3+1) = *(src +len+ 1);
        *(des +len+ len / 3 + 2) = '\0';
        return;
    }

}
void main()
{
    char dest[20];
    int i=0;
    printf("input the number:");
    char ch[20];
    while ((ch[i] = getchar()) != EOF&&ch[i] != '\n')
    {
        if (!isdigit(ch[i]))
        {
            printf("\ninput errow\n");
            return;
        }
        i++;
    }
    ch[i] = '\0';
    dollars(dest, ch);
    printf("%s\n", dest);
}

  DEBUG的过程就是进步的过程,每一个小错误都是大问题!...
2017-04-01 17:14
yue_sss
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-3-31
得分:0 
回复 24楼 renkejun1942
谢谢大神 没想到是这么小一个问题。。。哈哈哈被蠢到了 ,$那个地方确实写错了,也找出毛病了。。。感觉自己进步了!谢谢初学c语言有你的帮助,如春风般和煦
2017-04-01 17:40
yue_sss
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-3-31
得分:0 
回复 23楼 韶志
是自己有的地方理解有问题,也有抄错的地方,但也不用你来嘲讽,谁知道我今后能不能写出好的程序呢,三十年河东,三十年河西,莫欺少年穷。
2017-04-01 17:42
yue_sss
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-3-31
得分:0 
回复 25楼 Alien_Lee
谢谢大神!我研究研究。。
2017-04-01 17:44
yue_sss
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-3-31
得分:0 
回复 24楼 renkejun1942
感觉你的思路比较顺畅,就是用最简单的逻辑一步一步实现目的,答案感觉写的是很优美,不是很好达到,这本书确实是不错,也是你初学时的书吗?
2017-04-01 17:47
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回复 29楼 yue_sss
不是,我第一本书是C_Primer_Plus,但是太浅,我看到将位操作就换成了《C和指针》。
期间看了大半部分的《C程序设计语言》,但这本书太深,讲的主要是程序的实现思路,那时候完全理解不了。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-01 17:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475697-1-1.html




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

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