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是判断数是几位小数用的。最后的输出是一位一位输出的。请老鸟帮我看看,万分感谢!
后面的字打错了不好意思。最后一行字中的“判断几位小数用的”改成“判断几位数用的”,不好意思! 展开
这个是我做的,但是得不出结果,帮我看下。指出哪里有错误。谢谢大家!
#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是判断数是几位小数用的。最后的输出是一位一位输出的。请老鸟帮我看看,万分感谢!
后面的字打错了不好意思。最后一行字中的“判断几位小数用的”改成“判断几位数用的”,不好意思! 展开
6个回答
展开全部
修改不大,楼主自己可以看看。注意循环条件以及到底是哪个值在变化,变化后是什么
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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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的话就会出错。
建议你可以先把这个整数的每一位数先存到一个数组里面,在通过判断数组里面的元素来打印 英文
{
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的话就会出错。
建议你可以先把这个整数的每一位数先存到一个数组里面,在通过判断数组里面的元素来打印 英文
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
跟你改进了一下
#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");
}
#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");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
#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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf("%i",&a); 就有错,你定义的a是整型,所以应改为:
scanf("%d",&a);
scanf("%d",&a);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询