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个汉字
}
for(i=weishu-1;i>=0;i--)
printf("%.2s",&hz[2*dec[i]]);
各位朋友,能否解释下这两句是什么意思?谢谢!怎么可以会输出那些汉字的啊?
用一个二维数组来储存这十个汉字.
#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;
}
再次调试,输入负数将会出现乱码汉字!郁闷``这个你再改改吧,版主大大~~~
哦,还要考虑负数的,我没看清楚,让你久等了,刚才去睡觉了,都四十几个小时没睡了
下面是程序,可以解决负数,只要在前面判断一下就可以了,顺便把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;
}
谢谢大家的回复,小弟问了个朋友,经过他的指点弄了弄终于弄出来了,因为前面大家写的好多都看不懂,我学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;
}
}
}