while函数输入

来源:互联网 发布:淘宝京润珍珠是真的吗 编辑:程序博客网 时间:2024/06/02 02:40


http://blog.csdn.net/xxiaobaib/article/details/50915911


1.知识点1:scanf函数的返回值可以简单理解为为输入变量的个数:Both scanf and wscanf return the number of fields successfully convertedand assigned; the return value does not include fields that were read but not assigned. A return value of 0 indicates that no fields were assigned. The return value is EOF for an error or if the end-of-file character or the end-of-string character is nocountered in the first attempt to read a character.2.知识点2:逗号表达式取最右边的算数值作为返回值3.知识点3:EOF的值其实就是-1,当scanf读取内容发生错误或者读到文件结尾的时候就会返回EOF/****************************************输入直到文件末尾****************************************/while ((scanf("%d%m",&n,&m) != EOF)){//    循环从输入流读取m和n 直到遇到EOF为止,常见于ACM中}while (~scanf("%d%d",&m,&n)){    //相当于while (scanf("%d",&n) != EOF)}/****************************************输入全为0时跳出循环****************************************/while (scanf("%d%d",&n,&m)&&(m|n)){    //不断读入新数据,当m,n均为0时跳出循环}while (scanf("%d %d", &n, &m), n+m){    //不断读入新数据,当m,n均为0时跳出循环}while ((scanf("%d%d",&n,&m) != EOF),n+m){    //有了前面的分析,这个代码就好理解了,神组合啊}/****************************************输入两个整形数,其他类型跳出循环****************************************/while (scanf("%d%d", &a, &b)==2){    //不断读入新数据,当输入的不是两个整形数字时,跳出循环}while (scanf("%d%d",&n,&m)){    //当输入不是两个整形数时,跳出循环}/***************************************/



int main(void){    int number1;    int number2;    int opt;//运算符    //提示用户输入第一个数,需循环直到用户输入正确的数:    int r;    while(1)    {        printf("请输入第一个数:\n");        r = scanf("%d",&number1);        //查看Scanf是否收到了正确的数        if(r==0)        {            printf("别调皮,这样不好玩,重来\n");            //清空输入流。如果没有这一句,输入流中残存的字符将导致scanf不等待用户输入。            int c;            while ( (c = getchar()) != '\n' && c != EOF ) ;        }        else            break;    }    //提示用户输入第二个数    while(1)    {        printf("请输入第二个数:\n");        r = scanf("%d",&number2);        //查看Scanf是否收到了正确的数        if(r==0)        {            printf("别调皮,这样不好玩,重来\n");            //清空输入流。如果没有这一句,输入流中残存的字符将导致scanf不等待用户输入。            int c;            while ( (c = getchar()) != '\n' && c != EOF ) ;        }        else        {            //输对了,跳出循环            break;        }    }    int result;//存放计算结果    //提示用户输入运算符    while(1)    {        printf("请输入运算符(%d%d%d%d分别对应加减乘除):\n",jia,jian,cheng,chu);        r = scanf("%d",&opt);        if(r==0)        {            printf("运算符也是数字,别搞错好吗?你这样让我怎么混? 重新输入吧\n");            //清空输入流。如果没有这一句,输入流中残存的字符将导致scanf不等待用户输入。            int c;            while ( (c = getchar()) != '\n' && c != EOF ) ;            //回到循环开始            continue;        }        //运算                //当执行到这里时,说明运算符检查成功,应跳出while。        break;    }    //输出结果    printf("result : %d\n",number1,number2,result);    return 0;}



0 0
原创粉丝点击