zoukankan      html  css  js  c++  java
  • 2004-输入一个百分制的成绩t,将其转换成对应的等级

    ,具体转换规则如下:

    90~100为A;

    80~89为B;

    70~79为C;

    60~69为D;

    0~59为E;

    如果输入数据不在0~100范围内,请输出一行:“Score is error!”。

    这题的关键在于最后一句如果输入数据不在范围内如何处理?

    如果简单的定义一个整型变量,再复制,如果输入一个字母或者一串字符就会出错。

    #include<iostream>
    using namespace std;
    
    int main()
    {
    	int a;
    	while (cin>>a&&a!=EOF)
    	{
    			if (a >= 0 && a <= 59)
    				cout << "E" << endl;
    			else if (a <= 69)
    				cout << "D" << endl;
    			else if (a <= 79)
    				cout << "C" << endl;
    			else if (a <= 89)
    				cout << "B" << endl;
    			else if (a <= 100)
    				cout << "A" << endl;
    			else
    				cout << "Score is error!" << endl;
    	}
    	system("pause");
    	return 0;
    }
    

      上面这段代码运行如何输入字母,程序会立即结束。原因是检测到输入流错误,没有对a赋值自然不会进while循环。

    解决这个错误可以改为这样。

    #include<iostream>
    using namespace std;
    
    int main()
    {
    	int a;
    	while (1)
    	{
    		cin >> a;
    		if (!cin)
    		{
    			cin.clear();
    			cin.sync();
    			cout << "Score is error!" << endl;
    			continue;
    		}
    		if (a<0)
    			cout << "Score is error!" << endl;		
    		else if ( a <= 59)
    			cout << "E" << endl;
    		else if (a <= 69)
    			cout << "D" << endl;
    		else if (a <= 79)
    			cout << "C" << endl;
    		else if (a <= 89)
    			cout << "B" << endl;
    		else if (a <= 100)
    			cout << "A" << endl;
    		else
    			cout << "Score is error!" << endl;
    	}
    	system("pause");
    	return 0;
    }
    

      用cin.clear();来重置流,用cin.sync();来清空流。

    具体解释看另一篇随笔。

  • 相关阅读:
    多态与异常处理课后作业
    Java接口与继承作业
    大道至简第六章随笔
    大道至简第五章随笔
    Java数组课程作业
    大道至简第四章随笔
    String课后作业
    大道至简第三章随笔
    Java语法基础动手动脑实践
    大道至简-第二章 心得体会
  • 原文地址:https://www.cnblogs.com/wuyoucao/p/4562341.html
Copyright © 2011-2022 走看看