https://pintia.cn/problem-sets/994805046380707840/exam/problems/994805136889593856?type=7&page=0
来分享一下PTA做的题“念数字”先给大家看一下源码,这套代码在VS和Dev c++也可以运行
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[12][12]={"fu","ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
int i,j,x,y=0,f;
cin>>i;
if(i<0)
{
cout<<a[0]<<' ';
i=-i;
}
if(i==0)
printf("ling");
for(j=1;j<=i;j*=10)
{
x=i/j;
if(x>=1)
y++;
}
for(j=y;j>=1;j--)
{
f=i/(int)pow(10,j-1)%10;
printf("%s",a[f+1]);
if(j>=2)
printf(" ");
}
// cout<<"\n";
return 0;
}
来分析一下这道题:首先看到数字要拼音来表示,那么需要定义数组来盛装这些拼音。那么怎么来定义数组呢?我一开始用的一维数组,发现单独引用每个拼音很麻烦,要找它们的下标,所以用二维数组包装每一个数字的拼音很方便。
样例猜测分析
这里一开始样例都没过三个是格式错误,一个答案错误,这很离谱,格式错了还看答案吗?
仔细看发现最后一位没有空格,所以要分情况给空格,最后一个拼音后面不能带空格,但是还
有一个测试样例一直不过,我很纳闷,格式错误里面混一个答案错误,说明这个样例没有格式,那怎样会没有格式呢,“0”!然后把0分开讨论就完整了