杭电 2004 ,为什么用C++的那个能显示超时,而用C的那个却不会,求指导

杭电 2004 ,为什么用C++的那个会显示超时,而用C的那个却不会,求指导
输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下:
90~100为A;
80~89为B;
70~79为C;
60~69为D;
0~59为E;

Input
输入数据有多组,每组占一行,由一个整数组成。
Output
对于每组输入数据,输出一行。如果输入数据不在0~100范围内,请输出一行:“Score is error!”。
Sample Input
56
67
100
123
Sample Output
E
D
A
Score is error!
 代码:
(一)---(C++):
#include<iostream>
using namespace std;
int main()
{
    int i,num;
    cin>>num;
    while(num)
    {
        if(num<0 || num>100)
            cout<<"Score is error!"<<endl;
        else
        {
            i=num/10;
            switch(i)
            {
            case 9:
            case 10:
                cout<<"A"<<endl; break;
            case 8:
                cout<<"B"<<endl; break;
            case 7:
                cout<<"C"<<endl; break;
            case 6:
                cout<<"D"<<endl; break;
            default:
                cout<<"E"<<endl; break;
            }
        }
        cin>>num;
    }
    system("pause");
    return 0;
}

(二)---(C):
#include <stdio.h>
int main()
{
    int num, i;
    while(scanf("%d", &num) != EOF)
{
        if(num < 0 || num >100)
            printf("Score is error!\n");
        else
{
            i = num / 10;
            switch(i)
{
            case 9:
            case 10: printf("A\n"); break;
            case 8: printf("B\n"); break;
            case 7: printf("C\n"); break;
            case 6: printf("D\n"); break;
            default: printf("E\n"); break;
            }
        }
    }
    return 0;
}


------解决方案--------------------
第一个有这句:system("pause");
你不按键它就不会退出,直到超时。

第二个运行显示完就退出程序,没这个问题了。
------解决方案--------------------
 输入数字没有问题,如果输入非整形的话,cin流的状态 会被破坏,无法继续输入,可以用cin.clear清一下流的状态,或是把输入的部分放入while里(while(cin>>num)) 输入错误时直接退出
------解决方案--------------------
话说这个超时怎么算的?有键盘录入的简单程序要超也该是录入时间超了吧?