杭电 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)) 输入错误时直接退出
------解决方案--------------------
话说这个超时怎么算的?有键盘录入的简单程序要超也该是录入时间超了吧?