| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1485 人关注过本帖
标题:有个编程问题,C语言,PAT1002,帮忙看一下谢谢了
只看楼主 加入收藏
wzhe800
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2015-9-26
结帖率:80%
收藏
已结贴  问题点数:10 回复次数:4 
有个编程问题,C语言,PAT1002,帮忙看一下谢谢了
#include<stdio.h>
#include<math.h>
int main(){
    int n,s=0,yushu=0,i,a[100];
    scanf("%d",&n);
    while(n!=0){
        yushu=n%10;
        s+=yushu;
        n=n/10;
        }
    for(i=0;s>=10;i++){
        yushu=s%10;
        a[i]=yushu;
        s=s/10;
        }
    a[++i]=s;
    while(i>0){
    yushu=a[i];
    switch(yushu){
            case 0:
                printf("ling ");break;
            case 1:
                printf("yi ");break;
            case 2:
                printf("er ");break;
            case 3:
                printf("san ");break;
            case 4:
                printf("si ");break;
            case 5:
                printf("wu ");break;
            case 6:
                printf("liu ");break;
            case 7:
                printf("qi ");break;
            case 8:
                printf("ba ");break;
            case 9:
                printf("jiu ");break;
            default:
            break;
            }//switch
    i--;
    }
    while(i=0){
    yushu=a[i];
    switch(yushu){
            case 0:
                printf("ling");break;
            case 1:
                printf("yi");break;
            case 2:
                printf("er");break;
            case 3:
                printf("san");break;
            case 4:
                printf("si");break;
            case 5:
                printf("wu");break;
            case 6:
                printf("liu");break;
            case 7:
                printf("qi");break;
            case 8:
                printf("ba");break;
            case 9:
                printf("jiu");break;
            default:
            break;
            }//switch
    i--;
    }
    return 0;
    }
这是浙大PAT B级的 1002一道题。 要求是读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
我在GCC上编的,程序上没错误。代码提交后显示答案错误。
输入562结果是错的,像数字小些就是对的。。
想了很久没看出来哪里出错了。。求大神帮忙看一下。。谢谢了。
搜索更多相关主题的帖子: include C语言 
2016-01-20 21:50
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9032
专家分:54061
注 册:2011-1-18
收藏
得分:10 
以下是引用wzhe800在2016-1-20 21:50:56的发言:

这是浙大PAT B级的 1002一道题。 要求是读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
奇怪的楼主,既然提问,却不肯贴出题目。既然希望别人因为缺少信息没法回答,你又何必来问?
google了一下,http://www.
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10^100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789

输出样例:
yi san wu

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

int main( void )
{
    unsigned s = 0;
    for( int ch; ch=getchar(), ch>='0'&&ch<='9'; )
        s += ch-'0';

    // 因为“n小于10^100”,所以最大值才900,最多三位数,所以就不用循环了
    static const char* spell[10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
    if( s < 10 )
        printf( "%s", spell[s] );
    else if( s < 100 )
        printf( "%s %s", spell[s/10], spell[s%10] );
    else
        printf( "%s %s %s", spell[s/100], spell[s/10%10], spell[s%10] );

    return 0;
}

2016-01-21 08:57
wzhe800
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2015-9-26
收藏
得分:0 
回复 2楼 rjsp
第一次发帖。  不知道该怎么问。 下次会注意,谢谢了。
2016-01-21 19:35
wzhe800
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2015-9-26
收藏
得分:0 
回复 2楼 rjsp
你好可以再问个问题吗。。
for( int ch; ch=getchar(), ch>='0'&&ch<='9'; )
        s += ch-'0';
这条语句。我把它打成下面这样
for( int ch; ch=getchar()&&ch>='0'&&ch<='9'; )
        s += ch-'0';
这样的区别在哪里啊。。
这个中间部分不是条件判断么?  可以输入一个字符的?
2016-01-21 19:56
cheetah
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:120
专家分:118
注 册:2013-6-29
收藏
得分:0 
太NB了,这么复杂的问题竟然用数行代码搞定,服了!

天道酬勤
2016-01-29 03:41
快速回复:有个编程问题,C语言,PAT1002,帮忙看一下谢谢了
数据加载中...
 
   



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

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