标题:pta有一个测试点过不去不去
只看楼主
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
我用wandbox测试了一下他的代码,在gcc c语言中代码是不通过的,在gcc   c++语言中代码可以通过,不过警告一大堆
最严重的是char * key[]=

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-08 20:19
Knightl8
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2020-3-8
得分:0 
回复 10楼 wmf2014
我加了和为0,还是不行
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
    int count=0;
    char * key[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    char num[1000];
    scanf("%s",num);
    int index=1;
    int gewei = 0;
    for(int i=0;num[i]!='\0';i++)
    {
        count=count+((int)num[i]-48);
        if(count/index>0)
        {
            gewei++;
            index *=10;
        }
    }

    
    if(count==0)
    {
        printf("ling");
    }
    else
    {
        
        for(int i=gewei;i;i--)
    {
        int d=count/pow(10,i-1);
        printf("%s",key[d]);
        count = count-d*pow(10,i-1);
        if(count<=0)
        {
            printf("");
        }
        else
        {
            printf(" ");
        }
        
    }

    }
    


    
    return 0;
}
2020-03-08 20:48
Knightl8
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2020-3-8
得分:0 
回复 11楼 叶纤
我的代码吗?
2020-03-08 20:48
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
程序代码:
对呀,这样改警告就没啦

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
    int count=0;
    char  key[][100]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    char num[1000];int a[100];
    scanf("%s",num);
    int index=1;
    int gewei = 0;
    for(int i=0;num[i]!='\0';i++)
    {
        count=count+((int)num[i]-48);
        if(count/index>0)
        {
            gewei++;
            index *=10;
        }
    }
    
    for(int i=gewei;i!=0;--i)
   { a[i]=count%10;
      count= count/10;
      }
      for(int i=1;i<=gewei;++i)
      {  printf("%s ",key[a[i]]);
         
          }printf("%c",8);   
    return 0;
}


把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-08 21:15
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
如果要考虑0的情况加一句if语句就行了,如果不知加在哪,我可以帮忙

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-08 21:24
Knightl8
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2020-3-8
得分:0 
回复 14楼 叶纤
老哥,那为啥我的就没有警告呢
2020-03-08 21:26
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
回复 16楼 Knightl8
你电脑没调试好呀,for(int i=gewei;i;i--)再看看你这一句,i都没长度直接减减了,标准上允许这样写吗?你用我的代码,如果要考虑0的情况你再加一句if。。。。

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-08 21:38
Knightl8
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2020-3-8
得分:0 
终于该对了
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
    int count=0;
    char * key[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    char num[1000];
    scanf("%s",num);
    int index=1;
    int gewei = 0;
    for(int i=0;num[i]!='\0';i++)
    {
        count=count+((int)num[i]-48);
        if(count/index>0)
        {
            gewei++;
            index *=10;
        }
    }

    

    for(int i=gewei;i>0;i--)
    {
        int d=count/pow(10,i-1);
        printf("%s",key[d]);
        count = count-d*pow(10,i-1);
        if(i>1)
        {
            printf(" ");
        }
       
        
        
    }



    system("pause");
    return 0;
}
2020-03-08 22:09
Knightl8
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2020-3-8
得分:0 
回复 17楼 叶纤
我的i等于数字总共有多少位呀,前面有长度的
2020-03-08 22:11
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
那你18楼为什么要把for(int i=gewei;i;i--);改为for(int i=gewei;i>0;i--)呢?不就因为没长度限制吗?

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-08 22:31



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




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

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