标题:为这个题目(念整数)写了个代码,求指点
只看楼主
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
每天都写是没问题的,我说的是不是要快。快出货,不等于就是好,产品需要反复雕琢,十数分钟内写出的程序,质量绝对有瑕疵。另一方面,程序就像自己的孩子,不是生下来让它自生自灭,要花很长时间去栽培的,那些从不回头收拾写过的程序的人,很难说他有从业素质。

授人以渔,不授人以鱼。
2015-04-11 23:12
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
得分:0 
恩,我以后会注意的。睡觉了

你醒了?快起来敲代码!!
2015-04-11 23:18
浅青雨
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-4-1
得分:0 
回复 3楼 TonyDeng
据说goto对程序没啥好处,有违程序的逻辑性。但具体有什么害处还不知道,意思是能不用goto就不要用吗?
这个题目没有要求输错数字要重新再输,是自己想加进去。但不知道怎么实现,就只能想到goto了,哈哈!!
有其他的好方法吗?
2015-04-12 22:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
是的,可以不用就不用,要用在表达很恰当的地方,也不是说绝对不能用。办法当然是有的。

授人以渔,不授人以鱼。
2015-04-12 22:15
浅青雨
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-4-1
得分:0 
回复 14楼 TonyDeng
版主,指教指教俺呗!!
2015-04-13 22:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
明天吧

授人以渔,不授人以鱼。
2015-04-13 22:51
皮影09
Rank: 1
等 级:新手上路
帖 子:9
专家分:2
注 册:2015-3-28
得分:2 
我这个没有讨论前面的负号
程序代码:
#include  <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
char* name[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; 
//输入数字 
char number[10];
gets(number);
//p=&name[0],*p=name[0],**p=ling 
char** p;
p=name;

int i;        
for(i=0;i<strlen(number);i++)
{
    printf("%s    ",*(p+number[i]-'0'));
    p=name;//把指针重新放回初始位置 
}
return 0;
}


2015-04-14 01:29
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:2 
回复 17楼 皮影09
把strlen函数放到循环中是一种降低程序效率的做法,建议在循环外取到一个变量中。

能编个毛线衣吗?
2015-04-14 06:57
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
/*
https://bbs.bccn.net/thread-443875-1-1.html

题目内容:
你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。
如输入1234,则输出:
yi er san si
注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为:
fu er san si yi

输入格式:
一个整数,范围是[-100000,100000]。

输出格式:
表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。

输入样例:
-30

输出样例:
fu san ling
*/

#include <stdio.h>
#include <stdlib.h>

const char* PY_NumberList[] = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu", "fu" };

int GetInteger(int* ptrValue, int lowLimit, int highLimit);

int main(void)
{
    int value;
    char str[6];
    int index;

    // 用空格初始化数组
    for (index = 0; index < _countof(str); ++index)
    {
        str[index] = ' ';
    }

    /*************************************
    使用旧编译器的,把printf_s()和scanf_s()改回为printf()和scanf()
    **************************************/

    // 与用户交互读入数据
    while (!GetInteger(&value, -100000, 100000))
    {
        printf_s("Please input correct integer\n");
    }
    printf_s("Your input integer is: %d\n", value);

    // 处理数据
    if (value < 0)
    {
        printf_s("%s ", PY_NumberList[10]);
        value = -value;
    }
    for (index = _countof(str) - 1; index >= 0; --index)
    {
        str[index] = value % 10;
        value /= 10;
        // 下面if()的写法,在输入数据为零时起作用
        if (value == 0)
        {
            break;
        }
    }

    // 输出整理后的结果
    for (index = 0; index < _countof(str); ++index)
    {
        if (str[index] != ' ')
        {
            printf_s("%s", PY_NumberList[str[index]]);
            if (index < _countof(str) - 1)      // 最后一项不输出空格
            {
                putchar(' ');
            }
        }
    }

    fflush(stdin);
    getchar();
    return EXIT_SUCCESS;
}

// 读取一个指定上下边界的整数,返回讀取是否成功的逻辑值
// 注:1.在新标准中返回值应使用bool数据类型,此处用int是兼容旧习惯
//     2.参数ptrValue是一个指向整型数据的指针,此处与scanf()必须用取地址符的用法是相同的,后者内部就是这样做的
int GetInteger(int* ptrValue, int lowLimit, int highLimit)
{
    fflush(stdin);      // 清除输入緩衝區中的残存数据,若无此语句,则输入非数字时会阻塞输入导致死循环
    return (scanf_s("%d", ptrValue) == 1) && (*ptrValue >= lowLimit) && (*ptrValue <= highLimit);
}


[ 本帖最后由 TonyDeng 于 2015-4-15 00:29 编辑 ]

授人以渔,不授人以鱼。
2015-04-14 23:11
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:2 
回复 19楼 TonyDeng
这就是你反复雕琢出来的代码?我就不评论这段那啥的代码了,一点长进都没有,总这样也没意思。

善意地提个建议,你最好去注册个OJ账号,实际感受一下ACM是怎么回事然后再指导你想指导的人。

重剑无锋,大巧不工
2015-04-16 23:18



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




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

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