您的位置:首页 > 编程语言 > C语言/C++

PAT乙级题目1002构思的改进和实践

2015-12-20 23:26 267 查看
对昨天的代码进行了更改,如下:

#include<stdio.h>
#include<ctype.h>
void print (int a);
int main (void)
{
short int start = 0, *p = &start;
int count1 = 0, output = 0, count2 = 0;
while ( scanf("%c",p++) && !isspace(*p) )
count1++;
for ( count2 = 0, p = &start; count2 <= count1; count2++,p++)
*p -= 48;
for ( count2 = 0, p = &start; count2 <= count1; count2++,p++)
output += *p;
print( output );
return 0;
}

void print (int a)
{
int num = 0;
char ch[5];
num = a % 10;
switch (num)
{
case 0: ch[5] = "ling";break;
case 1: ch[5] = "yi";break;
case 2: ch[5] = "er";break;
case 3: ch[5] = "san";break;
case 4: ch[5] = "si";break;
case 5: ch[5] = "wu";break;
case 6: ch[5] = "liu";break;
case 7: ch[5] = "qi";break;
case 8: ch[5] = "ba";break;
case 9: ch[5] = "jiu";
}
if (a > 10)
print(a / 10);
printf("%s",ch);
}


运行时仍无法得出结果,根据暂停后的变量的值来看,scanf的%c并没有将键盘输入一个一个的进行读取,start的值也接近short int 的上限,原因未知,已将问题发送到CSDN,但到现在为止已有12h,也没有人能给我准确的答案。。。。。。。

看来如果不能解决这个输入的问题的话我就必须使用别的方法来存放这个天杀的输入了(10^100位啊。。。。。艹)。

print中ch[5]的赋值方式可能有点问题,或许需要strcpy函数来解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息