unknown404 2019-05-26 04:53 采纳率: 0%
浏览 463
已采纳

希望大神帮我理解下scanf()函数 和 EOF

小白不是很理解下面代码中的while那一行的作用
我认为是在scanf没有接收到函数时候就要求再次输入, 但我输入两次英文字母后,风扇就开始狂转,再输入数字也没啥用了.

int main(){
    int n;
    int k;
    int total;
    int result;

    while(scanf("%d%d",&n,&k)!=EOF)     //!!!!!不懂这句话
    {
        total=n*2;                      

        if(n<=k){                    
            printf("2\n");
            continue;
        }

        result=total/k;

        if(total%k!=0)
        {
            result++;
        }
        printf("%d\n",result);
    }

    return 0;
}

然后查到scanf的返回值是:

scanf()函数返回的值的意义为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。
就是说正确接收值的个数。此时scanf("%d",&i)要求输入一个int数。因此只要按格式输入一个int数,结果都是1.
假如scanf("%d%d%d",&i,&j,&k)。你输入时10 20 d则scanf返回为2

于是我把这代码中的EOF改为2, 依然没用.
真的十分费解, 求帮助

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-05-26 09:04
    关注

    while(scanf("%d%d",&n,&k)!=EOF)

    当你在键盘上按下ctrl+z(屏幕显示 ^Z)
    则循环终止

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何实验stm32主通道和互补通道独立输出
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题