码迷,mamicode.com
首页 > 其他好文 > 详细

P1002 写出这个数(Basic Level)

时间:2019-10-01 22:51:31      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:hid   停止   相加   return   ase   个数   style   getch   hide   

  作为第二题,拿字符串刚刚好。不过这道题我卡了一下,还是太弱了。看题技术图片

  题目意思很明确,就是想让你把输入的每一位数字加起来,再输出各个位的拼音。这道题一看int型就存不下longlong也别想 10100 就别想那么多了,肯定是字符数组。唉不过丢连丢到家了我去算了一下 10100 是多少后直接断言说数组装不下。当时脑子一抽就觉得 10100 就该有 10100 位,丢脸啊。这玩意数组最大开个110就行了,真的是瞎了。这道题第一个难点讲完了,至于求和,很简单,让str[i]-‘0‘即可得到整数,外面套个循环就求出来了。另外一个难点就是求每一位的循环的停止条件应该是

if (0 != sum / 10 || 0 != sum % 10) //缺一不可

  || 后面是用来预防相加之后只有一位数, 前面是用来预防sum是10 的倍数。最后说说输出,反正我是switch case,也可以用 if……else……,随意。目前我是想不到更好的办法了。

最后当然是愉快的贴上 AC 代码啦

技术图片
 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 int main()
 5 {
 6     char str[110];
 7     while (~scanf("%s", str))
 8     {
 9         int sum = 0;
10         for (int i = 0; str[i] != \0; i++)
11         {
12             sum += str[i] - 0;
13         }
14         int i = 0;
15         while (0 != sum % 10 || 0 != sum / 10)
16         {
17             str[i] = sum % 10 + 0;
18             i++;
19             sum /= 10;
20         }
21         str[i] = \0;
22         int len = strlen(str);
23         for (i = len - 1; i >= 0; i--)
24         {
25             switch (str[i] - 0)
26             {
27             case 0:
28                 printf("ling");
29                 break;
30             case 1:
31                 printf("yi");
32                 break;
33             case 2:
34                 printf("er");
35                 break;
36             case 3:
37                 printf("san");
38                 break;
39             case 4:
40                 printf("si");
41                 break;
42             case 5:
43                 printf("wu");
44                 break;
45             case 6:
46                 printf("liu");
47                 break;
48             case 7:
49                 printf("qi");
50                 break;
51             case 8:
52                 printf("ba");
53                 break;
54             case 9:
55                 printf("jiu");
56                 break;
57             }
58             if (i != 0)
59             {
60                 printf(" ");
61             }
62         }
63         putchar(\n);
64         getchar();
65     }
66     return 0;
67 }
View Code

  哦,最后差点忘了,因为评测机可能是多组输入所以记得用getchar()吞回车哦!

算法不易,诸君共勉

P1002 写出这个数(Basic Level)

标签:hid   停止   相加   return   ase   个数   style   getch   hide   

原文地址:https://www.cnblogs.com/daker-code/p/11616077.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!