| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 930 人关注过本帖
标题:有关EOF的运用问题,求解答,谢谢
只看楼主 加入收藏
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:18 
有关EOF的运用问题,求解答,谢谢
#include<stdio.h>
主程序是求两个整数a和n,求 a + aa + aaa +...+ aa...a(n个a) 之和。其中有多组测试数据,例如输入
2,4
3,4
输出结果也分两行,我现在不是很明白EOF的用法,可是这道题需要应用到,麻烦高手告知一下,谢谢了啊
int main()
{
    int a,n,i;
    int t=0,sum=0;
    while(scanf("%d%d",&a,&n)!=EOF)
    {
        for(i=0;i<n;i++)
        {
            t=t+a;
            sum=sum+t;
            a=a*10;
        }
            printf("%d\n",sum);
    }
    return 0;
}
搜索更多相关主题的帖子: 测试 include 主程序 
2011-12-25 21:50
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
忘了说了,上面那道程序检验不出问题,可是输入时就有问题了

老师说,2B是通向梦想的第一步
2011-12-25 21:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
請問一下,你寫測試scanf()!=EOF的時候,希望它發揮什麽作用?

授人以渔,不授人以鱼。
2011-12-25 22:49
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
回复 3楼 TonyDeng
就是起到测试多项数据的效果,当输入Ctrl+z就结束循环,输入一系列数据,比如
输入
2 3
9 4

输出

246
11106
我运行前两步结果正确,可是继续输入就开始错了,不知道什么原因啊

老师说,2B是通向梦想的第一步
2011-12-25 22:57
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
scanf()函數返回EOF發生在它讀入匹配數據錯誤的時候,只要你的輸入沒有非整數(%s)的數據,它能夠轉換成功,就不會觸發返回EOF。在鍵盤輸入的時候,任何按鍵都可以毫無障礙地視爲帶符號整數,按^Z的輸入的是26,它不會令scanf()返回EOF。

授人以渔,不授人以鱼。
2011-12-25 23:04
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
回复 5楼 TonyDeng
可是我还没输入ctrl+z,就是输入两个数据(中间有空格)然后回车,这时显示了一组答案,然后我继续类似的输入,可是就出现答案错误了,你试一下运行看看,我狠纠结啊,麻烦你了啊

老师说,2B是通向梦想的第一步
2011-12-25 23:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我不運行,只告訴你怎麽自己糾錯,這是要你學會的,不然以後總要問類似問題。

你在while循環開始的一開始,插入如下代碼:

printf("a=%d, n=%d\n", a, n);

看看每次讀入了什麽,就知道那行scanf()是怎麽囘事。

授人以渔,不授人以鱼。
2011-12-25 23:18
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
回复 7楼 TonyDeng
好像只是多了行输入显示而已,输入和输出符合,但是结果对了一个就错了,下面是我运行的结果,你看看
2 3
a=2, n=3
246
1 2
a=1, n=2
702
第二个输出的结果很明显错了

老师说,2B是通向梦想的第一步
2011-12-25 23:28
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:6 
你错误的原因跟EOF没关系。把t和sum的零初始化放在while里for前的地方

重剑无锋,大巧不工
2011-12-25 23:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你怎麽知道702錯了?難道不是把上次的sum帶到下一次計算嗎?你程序代碼中循環又沒有每次都初始化數據。自己的意圖自己才知道呀。

授人以渔,不授人以鱼。
2011-12-25 23:32
快速回复:有关EOF的运用问题,求解答,谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016429 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved