搜索
查看: 742|回复: 3
打印 上一主题 下一主题

c tom数代码为何不正确

[复制链接]
跳转到指定楼层
楼主
发表于 2015-2-26 11:44:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
我很想吐槽一下这个clang.cc的系统太不智能了。

问题地址:http://www.clang.cc/problem.php?id=1118
虽编译通过,结果应该也是对的,但一直显示答案错误。

[mw_shl_code=c,true]#include <stdio.h>
int main()
{
    char n[] = {'0','0','0','0','0','0','0'};
    int u[] = {0,0,0,0,0,0,0};
    int a = 0;
    int i;
    int y = 3;
    while(y > 0)
    {
        scanf("%s", &n);
        for(i = 0; i < 7; i++)
        {
            if(n != '\0')
            {
                u = (int)(n-'0');
            }
        }
        for(i = 0; i < 7; i++)
        {
            a += u;
        }
        printf("%d\n", a);
        for(i=0;i<7;i++)
        {
            n = '0';
            u = 0;
        }
        a = 0;
        y--;
    }
    return 0;
}
​[/mw_shl_code]

最佳答案

查看完整内容

首先,输入不一定只有3组,题目上的3组是个示例而已 有些oj会自动调用你的程序好多次,来处理好多个数据集,有些不会,为了通用起见,应该这么读取数据 scanf的返回值表示成功读取的变量数,有人喜欢写while(scanf("%s", buf) != EOF),也是可以的。 但是要注意while(~scanf("%s", buf))是不可移植的(假设EOF是-1,但事实上EOF可以是任何负整数) 然后,题目说明,输入是一个小于2^32的整数,那么空间只留7位是不够的 ...
沙发
发表于 2015-2-26 11:44:14 | 只看该作者
首先,输入不一定只有3组,题目上的3组是个示例而已
有些oj会自动调用你的程序好多次,来处理好多个数据集,有些不会,为了通用起见,应该这么读取数据

  1. char buf[255];
  2. while(scanf(%s", buf) == 1){
  3.   /* code here */
复制代码


scanf的返回值表示成功读取的变量数,有人喜欢写while(scanf("%s", buf) != EOF),也是可以的。
但是要注意while(~scanf("%s", buf))是不可移植的(假设EOF是-1,但事实上EOF可以是任何负整数)

然后,题目说明,输入是一个小于2^32的整数,那么空间只留7位是不够的

另外抛开上面两条不说,你的处理也有点问题,字符串读到'\0'就应该跳出了,不然会把上一次残留的数据也读进去
板凳
发表于 2015-2-27 22:13:22 | 只看该作者
rosynirvana 发表于 2015-2-26 17:38
首先,输入不一定只有3组,题目上的3组是个示例而已
有些oj会自动调用你的程序好多次,来处理好多个数据集 ...

   抱歉现在才回复,最近电脑硬盘有点问题最后全盘格式化重新分区才进入操作系统。于是原先浏览器保存的密码也不见了,而我在ahalei网站的密码一直又记不住结果不得不注册一个小号。而登陆时那个找回密码的连接我已经试过好多次了,不管(我家)windows下的firefox,(二姨家)360浏览器(ie内核)还是硬盘没坏时我装的国产linux上的chrome,在修改密码的网页修改密码提交后一直显示参数错误......
   于是欲哭无泪的我只好重注册一个号,话说我在注册时又发现一件好笑的事,我设的密码前几位是大写字母后几位是数字,但输入框旁的红字一直提醒必须有小写字母,结果我把密码改成有小写字母的才注册成功。
   一不留神吐了那么多槽哈。
   其实我在又来到ahalei提问时第一个想到的就是大神你,结果果然您仍然在亲切的为大家解决问题(而且又换头像了,还是卡哇伊的女孩子),真是非常感谢。因为学业问题有很久没编程也没复习,所以“while(scanf("%s", buf) != EOF)”之类几乎都忘了。
   之后我一定牢记教训,有时间时继续努力。最后再次感谢大神您富有逻辑性的严厉回答!!!
地板
 楼主| 发表于 2015-3-7 11:25:28 | 只看该作者
终于登上了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表