PAT真题练习乙级 1002 写出这个数(C语言)

#include 
#include 
int main()
{
	char a[101] ;
	gets(a) ;
	int sum=0 ;
	for(int i = 0 ; a[i] != '\0' ; i++)
	{
		sum += a[i] - 48 ;
	}
	int tem = sum ;//求sum ,用字符数组存储数,再一个个读取并加到sum里(字符1的ascii的值比数字1大48) 
	//printf("%d\n" , sum) ;//检查sum 
	int  c=1 , m =10 ;
	while (tem / m != 0 )
	{
		m = m * 10 ;
		c++;
	} //求出这个sum有几位数
	//printf("%d\n" , c) ;//检查c 
	int num ;//num用于存储每位的数字 
	for(int u=1 ; u <= c ; u++)//从左到右求出各位数的值并对应输出的拼音 
	{
		num = sum / pow(10,c-u) ;
		sum = sum - num*pow(10 , c-u) ;
		if(u != c)//不是最后一位,输出的拼音后有空格 
		{
			switch(num)
			{
				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(num)
			{
				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 ;
 }

Well begun is half done.
开心每一天!

你可能感兴趣的:(PAT)