| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5487 人关注过本帖
标题:从键盘输入一个整数,将每一位数字变成中文;如,输入9124,则输出 九,一,二 ...
只看楼主 加入收藏
yu_hua
Rank: 2
等 级:论坛游民
帖 子:222
专家分:95
注 册:2006-8-10
收藏
得分:0 
以下是引用泡泡kkl在2007-5-1 21:37:54的发言:
for(i=weishu-1;i>=0;i--)
printf("%.2s",&hz[2*dec[i]]);

也可以写成:

for(i=weishu-1;i>=0;i--)
{
int temp=2*dec[i];
printf("%c%c",hz[temp],hz[temp+1]); //"%c%c"显示1个汉字
}

2007-05-01 21:48
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
以下是引用向大大们学编程在2007-5-1 21:41:44的发言:

0不能转换,也不显示。你再看看

好像可以吧,下面是我运算的结果,你用的什么编译器,是不是只有零不能显示,其它的可以显示


图片附件: 游客没有浏览图片的权限,请 登录注册


雁无留踪之意,水无取影之心
2007-05-01 22:02
向大大们学编程
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-4-25
收藏
得分:0 
以下是引用PcrazyC在2007-5-1 22:02:04的发言:

好像可以吧,下面是我运算的结果,你用的什么编译器,是不是只有零不能显示,其它的可以显示



偶忘了,不能以0开头````所以犯错误了``呵呵`


学习学习,应用应用,修改修改,思考思考,创新创新 OK,我就要这样学C语言了~~
2007-05-01 22:06
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
我还以为你用的不能显示汉字的TC呢

雁无留踪之意,水无取影之心
2007-05-01 22:08
feelings010
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-4-20
收藏
得分:0 
以下是引用yu_hua在2007-5-1 16:46:22的发言:
/*---------------------------------------
从键盘输入一个整数,将每一位数字变成中文
如,输入 -9124 ,则输出“负九一二四”
----------------------------------------*/
#include <stdio.h>
int chai(int x,int digit[ ])
{ int n=0;
do
{
digit[n++]=x%10;
x=x/10;
}
while(x);
return n;
}
main( )
{
int i,num,weishu,dec[10];
char hz[ ]="零一二三四五六七八九";
printf("please input an integer: ");
scanf("%d",&num);
if(num<0)
{ printf("负");num=-num; }
weishu = chai(num,dec);
for(i=weishu-1;i>=0;i--)
printf("%.2s",&hz[2*dec[i]]);
printf("\n");
}

for(i=weishu-1;i>=0;i--)
printf("%.2s",&hz[2*dec[i]]);
各位朋友,能否解释下这两句是什么意思?谢谢!怎么可以会输出那些汉字的啊?

2007-05-01 23:12
向大大们学编程
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-4-25
收藏
得分:0 
以下是引用PcrazyC在2007-5-1 18:07:22的发言:

用一个二维数组来储存这十个汉字.

#include<stdio.h>
#include<math.h>

int main()
{
long n;
int b[20]={0},i,j,t;
char a[10][3]={"零","一","二","三","四","五","六","七","八","九"}; //一个汉字占两个字节,另外再加一个'\0'字符.
while(scanf("%ld",&n))
{
i=0;
while(n!=0) //倒序储存该数
{
b[i++]=n%10;
n/=10;
}
for(j=--i;j>=0;j--) //倒序输出
{
t=b[j];
printf("%s,",a[t]);
}
printf("\b \n");
}
return 0;
}


再次调试,输入负数将会出现乱码汉字!郁闷``这个你再改改吧,版主大大~~~


学习学习,应用应用,修改修改,思考思考,创新创新 OK,我就要这样学C语言了~~
2007-05-01 23:44
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 

哦,还要考虑负数的,我没看清楚,让你久等了,刚才去睡觉了,都四十几个小时没睡了

下面是程序,可以解决负数,只要在前面判断一下就可以了,顺便把0也处理了


#include<stdio.h>
#include<math.h>

int main()
{
long n;
int b[20]={0},i,j,t;
char a[10][3]={"零","一","二","三","四","五","六","七","八","九"}; //一个汉字占两个字节,另外再加一个'\0'字符.
while(scanf("%ld",&n))
{
i=0;
if(n==0)
{
printf("%s\n",a[0]);
continue;
}
if(n<0)
{
printf("负");
n=(long)fabs(n); //取绝对值
}
while(n!=0) //倒序储存该数
{
b[i++]=n%10;
n/=10;
}
for(j=--i;j>=0;j--) //倒序输出
{
t=b[j];
printf("%s,",a[t]);
}
printf("\b \n");
}
return 0;
}



雁无留踪之意,水无取影之心
2007-05-02 00:49
lmbt
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-5-2
收藏
得分:0 
楼上的,你的程序有少许问题! 在输入001或0开头的数时,只会显示后面数的大写,比如01,就显示 一
2007-05-02 10:48
laugh
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-4-25
收藏
得分:0 
回复:(laugh)从键盘输入一个整数,将每一位数字变成...

谢谢大家的回复,小弟问了个朋友,经过他的指点弄了弄终于弄出来了,因为前面大家写的好多都看不懂,我学C语言时间很短,很多东西都没学呢,这个是我用我现在学的编的

#include<stdio.h>
void main()
{
int a,b,c;
printf("请输入一个数:");
scanf("%d",&a);
while(a!=0)
{
b=a;
c=1;
while(b>9)
{
b=b/10;
c=c*10;
}
a=a-b*c;
switch(b)
{
case 1: printf("一");break;
case 2: printf("二");break;
case 3: printf("三");break;
case 4: printf("四");break;
case 5: printf("五");break;
case 6: printf("六");break;
case 7: printf("七");break;
case 8: printf("八");break;
case 9: printf("九");break;
case 0: printf("零");break;
}
}
}

2007-05-02 11:03
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
以下是引用lmbt在2007-5-2 10:48:57的发言:
楼上的,你的程序有少许问题! 在输入001或0开头的数时,只会显示后面数的大写,比如01,就显示 一

不是输入一个整数吗


雁无留踪之意,水无取影之心
2007-05-02 11:42
快速回复:从键盘输入一个整数,将每一位数字变成中文;如,输入9124,则输出 九 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018763 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved