1245777533 发表于 2018-11-15 01:17:56

作业求助

#include<stdio.h>
int main()
{
        int a={0},i=0,sum=0,n=1,t,p;
        for(a=getchar();a!='\n';a=getchar())
        {
                a-=48;
                sum+=a;
               
                i++;
        }
        a='\0';
        t=sum;       
        do
        {
                n*=10;
                sum/=10;       
        }while(sum);
        for(n=n/10;n;n/=10)
        {
                p=t/n;
                switch (p)
                {
                        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 :printf("ling ");break;
                }
                if(n==1)
                {
                        putchar('\b');
                }
               
                t-=p*n;
               
        }
        return 0;
}
我自己试了感觉没什么问题,可是无法通过,有人可以帮看下吗

Legend丶Hu 发表于 2018-11-15 01:17:57

#include<stdio.h>
int main()
{
      int a={0},i=0,sum=0,n=1,t,p;
      for(a=getchar();a!='\n';a=getchar())
      {
                a-=48;
                sum+=a;
               
                i++;
      }
      a='\0';
      t=sum;      
      do
      {
                n*=10;
                sum/=10;         
      }while(sum);
      for(n=n/10;n;n/=10)
      {
                p=t/n;
                if(n == 1)
                {
                        switch (p)
                      {
                                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 :printf("ling");break;
                      }
                      break;
                                }
                switch (p)
                {
                        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 :printf("ling ");break;
                }
                t-=p*n;
               
      }
      return 0;
}
你的代码将n==1的情况改下,'\b'不能用在这里的具体这个字符退格键然后你看不出,但是oj上测得出,还有你要控制下格式,结尾没有空格哦,我已经写了正确的代码

BngThea 发表于 2018-11-15 08:43:51

n是int类型,第二个for循环中 n/10必然为0

1245777533 发表于 2018-11-15 18:27:38

BngThea 发表于 2018-11-15 08:43
n是int类型,第二个for循环中 n/10必然为0

对啊,我希望他为0就退出循环

丨游戏灬需要 发表于 2018-11-17 19:16:08

value = input(':') #假设就是输入数字
value = sum( )
num_str = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十']
result = ''
while value:
    temp = value %10
    index = temp -1
    value //= 10
    result = num_str +result
print (result)

混分 ,我也不知道有没有用 ,我没学过你上面代码的语言 ,看不出问题 ,sorry

1245777533 发表于 2018-11-18 18:23:56

Legend丶Hu 发表于 2018-11-17 20:33
你的代码将n==1的情况改下,'\b'不能用在这里的具体这个字符退格键然后你看不出,但是oj上测得出,还有你 ...

谢谢,之前自己解决了
页: [1]
查看完整版本: 作业求助