C语言—PTA乙级基础刷题—1002写出这个数

**
第二题——写出这个数
**
C语言—PTA乙级基础刷题—1002写出这个数
题目基础内容:for循环、分支语句(if、switch)、"/“与”%"符号、字符串数组。
题解
(1)将一个数的各个数位进行相加。
(2)将这个和用拼音表示,每个拼音之间有空格,一个没有。

题目还是较为简单的,但是需要注意的是,测试用例中n的值会很大,大到超出int、long、long long能表示的数据范围,即产生数据的溢出
例如:
C语言—PTA乙级基础刷题—1002写出这个数
C语言—PTA乙级基础刷题—1002写出这个数
可以看到11个数字的时候数据产生了溢出,对12345678963进行整数分解得到了错误结果。

在c语言中,对于过大的数据我们可以采用字符串数组来存放数据。

实现代码

#include<stdio.h>

int main()
{
	int sum=0;
	char num[100];//数据过大,采用字符串数组来存放数据。
	scanf("%s",num);
	for(int i=0; num[i]!='\0'; ++i)
	{
		sum+=num[i]-'0';//进行类型转换,并计算累加结果 
	}
	if(sum<1000&&sum>99)
	{
		switch(sum/100)
		{//注意空格
			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;
		}
		switch(sum/10%10)
		{//注意空格
			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;
		}
		switch(sum%10)
		{//最后一项后面没空格 
			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;
		}
	}
	if(sum>9&&sum<100)
	{
		switch(sum/10)
		{//注意空格
			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;
		}
		switch(sum%10)
		{//最后一项后面没空格 
			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;
		}
	}
	if(sum<10)
	{
		switch(sum)
		{//最后一项后面没空格 
			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;
}

C语言—PTA乙级基础刷题—1002写出这个数

上一篇:按键测试


下一篇:python中else关键字的所有用法