PAT 念数字。(C++) 请问我的代码出现了哪种错误 ,能帮忙告一下吗

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。
我的代码如下:
#include
#include
using namespace std;
int num(int n)
{

  int t=0;
  while (n>0)
  {

    n=n/10;
    t++;
  }
  return t;

}
int main()
{
int i,t,k,z;
cin>>i;

  if(i<0)
  {
      cout<<"fu"<<' ';
      i=-i;
  }
  t=num(i); 
  k=pow(10,t-1);


  for(int j=1;j<=t;j++)
  {     z=i/k;

  switch(z)
  {
     case 0: cout<<"lin"<<' ';break;
     case 1: cout<<"yi"<<' ';break;
     case 2: cout<<"er"<<' ';break;
     case 3: cout<<"san"<<' ';break;
     case 4: cout<<"si"<<' ';break;
     case 5: cout<<"wu"<<' ';break;
     case 6: cout<<"liu"<<' ';break;
     case 7: cout<<"qi"<<' ';break;
     case 8: cout<<"ba"<<' ';break;
     case 9: cout<<"jiu"<<' ';break;
  }
      i=i%k;
      k/=10;


  }
  cout<<endl;
  return 0;

}

https://blog.csdn.net/u011987219/article/details/77323228
目测0的拼音是ling