PAT乙级:1002 写出这个数 (20分)

PAT乙级:1002 写出这个数 (20分)

PAT乙级:1002 写出这个数 (20分)_第1张图片

#include
#include

int main(void)
{
     char a[1000];
     gets(a);

     int sum = 0;
     for(int i = 0;a[i] != '\0';i++)
     {
          sum += a[i] - 48;
     }

     int m;
     int len;
     len = (int)log10(sum) + 1;
	for(int j=1 ; j <= len; j++)
	{
		m = sum / pow(10,len-j);
		int w;
		w = m % 10;

		if(j != len)
		{
			switch(w)
			{
				case 0 : printf("ling "); break;
				case 1 : printf("yi "); break;
				case 2 : printf("er "); break;
				case 3 : printf("san "); break;
				case 4 : printf("si "); break;
				case 5 : printf("wu "); break;
				case 6 : printf("liu "); break;
				case 7 : printf("qi "); break;
				case 8 : printf("ba "); break;
				case 9 : printf("jiu "); break;
			}
		 }
		else
		{
			switch(w)
			{
				case 0 : printf("ling"); break;
				case 1 : printf("yi"); break;
				case 2 : printf("er"); break;
				case 3 : printf("san"); break;
				case 4 : printf("si"); break;
				case 5 : printf("wu"); break;
				case 6 : printf("liu"); break;
				case 7 : printf("qi"); break;
				case 8 : printf("ba"); break;
				case 9 : printf("jiu"); break;
			}
		 }
	 }
     return 0;
}

PAT乙级:1002 写出这个数 (20分)_第2张图片

你可能感兴趣的:(PAT真题解析)