当前位置: 代码迷 >> C语言 >> [求助]请教一个习题,请知道朋友给个思路
  详细解决方案

[求助]请教一个习题,请知道朋友给个思路

热度:245   发布时间:2007-04-23 19:39:53.0
[求助]请教一个习题,请知道朋友给个思路


编写程序,从终端读取一个数字,然后使用英语逐位显示概数.列如,如果用户输入932程序输入:nine three two
这里特别要求,如果用户输入0,那么程序应该显示zero

做天晚上分析的,没分析出来,刚才又看了一下,实在不想放弃,就过来找论坛的朋友求助了

由于刚开始学习前几章,刚学到if switch 判断
分析了一下,确定这个题目后面的部分的思路貌似应该用
switch (c)
{ case '0' ;
printf ("zero");
break;
等等………………………………
但是前面输入一个数的时候,怎样让他读完输入的第一个数以后,接着读第二个,第三个…………
就是前面部分不太会用循环,怎样让它循环读取完输入的第一个数后,读第二个。第三个。。。。

比如 932
读完9 读 3 再读2

谢谢朋友们给个思路

搜索更多相关的解决方案: 习题  思路  朋友  

----------------解决方案--------------------------------------------------------
#define N 10
#include<stdio.h>
int main(void)
{
int i=0,c=0;

for(i=0;i<N;i++)
{
c=getchar();
switch (c)
{
case '0':printf("zero ");break;
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 ");break;
}
}
}

----------------解决方案--------------------------------------------------------
这个程序我老觉得结果不应该是这样,但是它就是这种效果,不知道怎么了。我也得去问问高手了。
----------------解决方案--------------------------------------------------------
我觉得还应该怎样改一下,因为它总是要等到执行到10才停。
----------------解决方案--------------------------------------------------------
我没有想出来。
----------------解决方案--------------------------------------------------------

可以啊。改成这样就行了。

#define N 10
#include<stdio.h>
int main(void)
{
int i=0,c=0;
printf("If want to stop,input \"!\"\n");
for(i=0;i<N;i++)
{
c=getchar();
if(c=='!')
break;
switch (c)
{
case '0':printf("zero ");break;
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 ");break;
}
}
}


----------------解决方案--------------------------------------------------------

#include<stdio.h>
void NUM(int);
void main()
{ int num,i,j=10,k=1,a,bit=1,s[10],bit1;
scanf("%d",&num);

a=num;

while((a=a/10)!=0)
bit++;
bit1=bit;

for(i=0;i<bit;i++) //此循环用来根据数的位数,得出每位的数值
{ a=num%j;
a=a/k;
s[bit1]=a;
j*=10;
k*=10;
bit1--;
}
for(i=bit1+1;i<=bit;i++) //此循环是为了将数值对应的英文输出
{
NUM(s[i]);
}
getch();
}
void NUM(int x)
{
switch(x)
{
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 ");break;
case 0:printf("zero ");break;

}
}

[此贴子已经被作者于2007-4-23 21:08:42编辑过]


----------------解决方案--------------------------------------------------------
给点注释啊。
----------------解决方案--------------------------------------------------------
7楼的程序编译有4个错误哦,C―free3.5中。
----------------解决方案--------------------------------------------------------

没错误啊!


----------------解决方案--------------------------------------------------------
  相关解决方案