zoukankan      html  css  js  c++  java
  • scanf控制用户输入数据的合法范围_算法_c语言

    如题:

    要求用a,b,c三个正整型变量来存储用户户输入3个值。

    看程序实现:

    #include <stdio.h>
    int main()
    {
        int a = 0, b = 0, c = 0;
        while( (a * b *c < 1 && (a<1 || b<1 || c<1)) &&( scanf("%d%d%d", &a, &b, &c ) <= 3))
        {
            fflush(stdin);
        };
        printf("%d %d %d
    ", a, b, c);
        return 0;
    }
    scanf函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;
    如果只有a被成功读入,返回值为1;
    如果a和b都未被成功读入,返回值为0;
    如果遇到错误或遇到end of file,返回值为EOF。end of file为Ctrl+z 或者Ctrl+d

    灵活运用scanf的返回值可以使用用户输入的数据更有效,不会因为输入时出现错误而导致整个程序不能运行。

    使用while循环获取用户输入,当不符合条件时,再次获取数据。直到用户输入的数据有效再停止,

    在循环读取中,使用 fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃

    注:一个好的算法设计要保证程序的鲁棒性强,有时能在数据有瑕疵的情况下仍能给出正确结果。

  • 相关阅读:
    【经典】仙岛求药(一)
    6月份学习记录
    YZM的全排列
    最长公共子序列的长度
    20612统计八连块
    积木城堡
    不同组合数求和
    50136142WXY的百度地图
    50095106扔核弹
    【其他】关于海岛帝国互测系列赛总结
  • 原文地址:https://www.cnblogs.com/ncgds/p/7102967.html
Copyright © 2011-2022 走看看