写出这个数(2/95)

在这里插入图片描述

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
注意输出结果之间有空格,你可能就错这

  1. 做一个int的while循环求和函数返回到主函数注意循环结束条件,这里我用的是
    getchar()

每次只从缓存区读入一个字符并返回这一个字符

  1. 做一个switch函数对每一个传进来的数字输出一个类似的”yi“等等
  2. 做一个函数对计算结果判断并调用下个switch函数一个个输出
    注意在输出之间的空格

#include<stdio.h>
#include<stdlib.h>
void xuanze(int choose);
void shuchu(int sum);
int jisuan();
int main()//主函数
{
	int sum;
	sum=jisuan();
	shuchu(sum);
	 
}//
int jisuan()
{
	int n,sum=0;
	while((n=getchar())!='\n')//你在控制台的回车也算一个字符'\n'
	{    n=n-'0';
		sum=sum+n;
	}
    return sum;
}
void shuchu(int sum)//对每次计算结果判断并调用下个switch函数后输出结果
{   int i,j,k;
	if(sum<1000&&sum>=100){
	i=sum/100;
	j=(sum-i*100)/10;
	k=(sum-i*100)-j*10;
	xuanze(i);
        printf(" ");
		xuanze(j);
        printf(" ");
		xuanze(k);
	}else if(sum>=10){
		i=sum/10;
		j=sum-i*10;
		xuanze(i);
        printf(" ");
		xuanze(j);
	}else{
		xuanze(sum);
	}
	
	
	
}
void xuanze(int choose)//选择函数
{
	switch(choose)
	{
		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;
		}
		case 0:{
			printf("ling");
			break;
		}
	}
}

后面发现一种更好的转载自陈粑粑的小白鞋
用了一个更好的函数sprintf和字符串数组来解

#include<stdio.h>
#include<stdlib.h>
int main()
{   char s[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
	int sum,n;
	char num[4];
	while((n=getchar())!='\n')//你在控制台的回车也算一个字符'\n'
	{    n=n-'0';
		sum=sum+n;
	}
	sprintf(num,"%d",sum);
	for(int i=0;num[i]!=0;i++)
	{
		printf("%s",s[num[i]-'0']);
		if(num[i+1]!=0)
		{
			printf(" ");
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值