C语言中的问题

用C语言,输入一个数,要求显示出它的读法,比如说:1234.67读成一千两百三十四点六七,4098.34读成四千零九十八点三四。不考虑负数的情况,然后数字是从0~9999... 用C语言,输入一个数,要求显示出它的读法,比如说:1234.67读成一千两百三十四点六七,4098.34读成四千零九十八点三四。不考虑负数的情况,然后数字是从0~99999的范围
该怎么编写呢?要用指针吗?给点提示也可以,谢谢啦~
展开
 我来答
研究报告站
2008-06-24 · TA获得超过195个赞
知道小有建树答主
回答量:441
采纳率:0%
帮助的人:348万
展开全部
#include <stdio.h>
#include <string.h>

void main()
{
//注意:没有做输入非数字的检查容错。
char pNum[24];

printf("请输入一个数:");
scanf("%s", pNum);

char *psName[4] ={"万","千","百","十"};
char *psNumName[11]={"零","一","二","三","四","五","六","七","八","九"};

char *pTemp = strstr(pNum, ".");
int iLenAll = strlen(pNum);

int iLenTemp = pTemp == NULL?0:strlen(pTemp);

int iLen = iLenAll - iLenTemp;
int i = 0;
if(iLen > 5)
{
printf("整数不能超过5位\n");
return ;
}
//输出整数。
for(i=0; i<iLen-1; i++)
{
printf("%s", psNumName[pNum[i]-'0']);

if(pNum[i]-'0' != 0)
{
printf("%s", *(psName+5-iLen+i));
}
}

//输出个位
if(pNum[iLen-1]-'0' != 0)
{
printf("%s", psNumName[pNum[iLen-1]-'0']);
}

//输出小数
if(pTemp != NULL)
{
if(iLenTemp == 1)
{
return ;
}

printf("点");

pTemp ++;

for(i=0; i<iLenTemp-1; i++)
{
printf("%s", psNumName[pTemp[i]-'0']);
}
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友727255de2
2008-06-24 · 超过28用户采纳过TA的回答
知道答主
回答量:155
采纳率:0%
帮助的人:64.3万
展开全部
1、建立两个字串“零一二三...十”“万千百十”
2、把40098.34换成“四万零千零百九十八”+“点三四”
3、将其中的“零万、零千、零百、零十”变成“零”,去掉个位“零”
4、连续的“零”换成一个“零”
OK
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
彼岸花开未渡
高粉答主

2020-01-13 · 醉心答题,欢迎关注
知道答主
回答量:11.4万
采纳率:2%
帮助的人:6842万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式