ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-01-28 19:59:50  阅读:197  来源: 互联网

标签:case sum PTA C语言 break switch jiu printf 1002


**
第二题——写出这个数
**

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

题目还是较为简单的,但是需要注意的是,测试用例中n的值会很大,大到超出int、long、long long能表示的数据范围,即产生数据的溢出
例如:
在这里插入图片描述
在这里插入图片描述
可以看到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;
}

在这里插入图片描述

标签:case,sum,PTA,C语言,break,switch,jiu,printf,1002
来源: https://blog.csdn.net/weixin_48798373/article/details/122735403

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有