ACM GrassLand密码,不知道错哪了,总是runtime error,请各位指教

求助ACM GrassLand密码,不知道哪里错了,总是runtime error,请各位指教
这是我的代码;#include "stdafx.h"
#include "iostream"
using namespace std;
#include "string"
int main(){
string c;
int i=0;
int num[1001];
while(cin>>c){
for(i=0;i<c.size();i++){
switch(c[i]){
case 'a': 
case 'b':
case 'c':num[i]=2;
break;
case 'd':
case 'e':
case 'f':num[i]=3;
break;
case 'g':
case 'h':
case 'i':num[i]=4;
break;
case 'j':
case 'k':
case 'l':num[i]=5;
break;
case 'm':
case 'n':
case 'o':num[i]=6;
break;
case 'p':
case 'q':
case 'r':
case 's':num[i]=7;
break;
case 't':
case 'u':
case 'v':num[i]=8;
break;
case 'w':
case 'x':
case 'y':
case 'z':num[i]=9;
break;
}
}
for(i=0;i<c.size();i++)
std::cout<<num[i];
std::cout<<endl;
}
}
------解决方案--------------------
其长度小于10000。
int num[1001];

。。。。。