C-ACM题目,为何报时间超限?

发布于 2016-10-13 10:35:31 字数 565 浏览 1213 评论 2

原题目:正整数的各位数字之和被Tom称为Tom数。求输入数(<2^32)的Tom数!
输入:每行一个整数(<2^32).
输出:每行一个输出,对应该数的各位数之和.
样例输入

12345
56123
82
样例输出

15
17
10

解题代码如下:

#include<stdio.h>
int main(){
char temp = '0';
int sum = 0;
while((temp = getchar())!=EOF){
sum = 0;
while(temp!='n'){
sum += (int)temp-48;
temp = getchar();
}
printf("%dn",sum);
}
return 0;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夜无邪 2017-07-13 23:32:16

temp 的类型是 char
getchar()的返回值是 int

temp = getchar()时 已经把int转成了char
没办法再表示EOF

如果吧temp 的类型改成 int 就能过了

晚风撩人 2017-05-10 11:32:12

我以前也遇到过类似的情况,我当时分析认为循环执行getchar()可能带来比较大的性能损耗,所以改用一次将整行都读进来(比如读到一个动态字符数组里面),然后处理。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文