C语言中一个题目,请大家帮我看看我错在哪里了。

题目是:从键盘读取一个整数,然后在屏幕上显示这个数的英文。比如读入的数是234,则输出twothreefour.这个是我做的,但是得不出结果,帮我看下。指出哪里有错误。谢... 题目是:从键盘读取一个整数,然后在屏幕上显示这个数的英文。比如读入的数是234,则输出two three four.
这个是我做的,但是得不出结果,帮我看下。指出哪里有错误。谢谢大家!
#include <stdio.h>
#include <math.h>
int main(void)
{
int a,m;
int b=0;
printf("enter a number:");
scanf("%i",&a);
m=a;
while(a!=0)
{
a=a/10;
b++;
}
while(m!=0)
{
for(b=b;b==0;--b)
{
m=m/(pow(10,b-1));
}
switch(m)
{
case 1:
printf("one");
break;
case 2:
printf("two");
break;
case 3:
printf("three");
break;
case 4:
printf("four");
break;
case 5:
printf("five");
break;
case 6:
printf("six");
break;
case 7:
printf("seven");
break;
case 8:
printf("eight");
break;
case 9:
printf("nine");
default:
printf("error");
}
return 0;
}
}

前面那个b是判断数是几位小数用的。最后的输出是一位一位输出的。请老鸟帮我看看,万分感谢!
后面的字打错了不好意思。最后一行字中的“判断几位小数用的”改成“判断几位数用的”,不好意思!
展开
 我来答
winelover72
2007-12-23 · TA获得超过4.2万个赞
知道大有可为答主
回答量:5901
采纳率:100%
帮助的人:3857万
展开全部
修改不大,楼主自己可以看看。注意循环条件以及到底是哪个值在变化,变化后是什么
a=m/(int)(pow(10,b-1));
m=m%(int)(pow(10,b-1));
加了这条语句。用以是取除去最高位的剩下的
#include <stdio.h>
#include <math.h>
int main(void)
{
int a,m;
int b=0;
printf("enter a number:");
scanf("%i",&a);
m=a;
printf("您输入的是%d\n",m);
while(a!=0)
{
a=a/10;
b++;
}
printf("数字位数是%d\n",b);
while(m!=0)
{
for(b=b;b>0;--b)
{
a=m/(int)(pow(10,b-1));
m=m%(int)(pow(10,b-1));
switch(a)
{
case 0:
printf("zero ");
case 1:
printf("one ");
break;
case 2:
printf("two ");
break;
case 3:
printf("three ");
break;
case 4:
printf("four ");
break;
case 5:
printf("five ");
break;
case 6:
printf("six ");
break;
case 7:
printf("seven ");
break;
case 8:
printf("eight ");
break;
case 9:
printf("nine ");
default:
printf("error");
}
}

}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5fbf19215
2007-12-19 · TA获得超过171个赞
知道小有建树答主
回答量:219
采纳率:0%
帮助的人:250万
展开全部
while(m!=0)
{
for(b=b;b==0;--b)
{
m=m/(pow(10,b-1));
}
switch(m)

这里有错。

把它改成:
while(m!=0)
{
int hold;
for(int b1=b;b>0;--b)
{
hold=m/(pow(10,b-1));
m=m/10;
}
switch(hold)
{
......
}

还有一个问题就是你输入的整数要是包含0的话就会出错。

建议你可以先把这个整数的每一位数先存到一个数组里面,在通过判断数组里面的元素来打印 英文
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
户桖艳RR
2007-12-19 · TA获得超过513个赞
知道答主
回答量:201
采纳率:0%
帮助的人:0
展开全部
跟你改进了一下
#include<stdio.h>
void main()
{
int n,i=0,a[100];//a足够大
printf("输入整数:\n");
scanf("%d",&n);
while(n)
{
a[i++]=n%10;
n/=10;
}
while(i)
{
switch(a[i-1])
{
case 1:
printf("one ");
break;
case 2:
printf("two ");
break;
case 3:
printf("three ");
break;
case 4:
printf("four ");
break;
case 5:
printf("five ");
break;
case 6:
printf("six ");
break;
case 7:
printf("seven ");
break;
case 8:
printf("eight ");
break;
case 9:
printf("nine ");
default:
printf("error");
}
i--;
}
printf("\n");

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高原狼人
2007-12-23 · TA获得超过924个赞
知道小有建树答主
回答量:671
采纳率:100%
帮助的人:0
展开全部
#include <stdio.h>
#include <math.h>
int main(void)
{
int a,m;
int b=0;
printf("enter a number:");
scanf("%i",&a);
m=a;
printf("您输入的是%d\n",m);
while(a!=0)
{
a=a/10;
b++;
}
printf("数字位数是%d\n",b);
while(m!=0)
{
for(b=b;b>0;--b)
{
a=m/(int)(pow(10,b-1));
m=m%(int)(pow(10,b-1));

switch(a)
{
case 0:
printf("zero ");
case 1:
printf("one ");
break;
case 2:
printf("two ");
break;
case 3:
printf("three ");
break;
case 4:
printf("four ");
break;
case 5:
printf("five ");
break;
case 6:
printf("six ");
break;
case 7:
printf("seven ");
break;
case 8:
printf("eight ");
break;
case 9:
printf("nine ");

}
}
}

printf("\n");

return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d6c5e84
2007-12-19 · TA获得超过448个赞
知道小有建树答主
回答量:578
采纳率:0%
帮助的人:330万
展开全部
scanf("%i",&a); 就有错,你定义的a是整型,所以应改为:
scanf("%d",&a);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式