当前位置: 代码迷 >> C语言 >> 根据昨天发的贴碰到的C语言的问题
  详细解决方案

根据昨天发的贴碰到的C语言的问题

热度:365   发布时间:2007-06-02 20:01:25.0
根据昨天发的贴碰到的C语言的问题

题目是这样的:

编写程序,从终端读取一个数字,然后使用英语一位一位显示应该数字:
例如932
nine three two

申明一下:老师只讲了一些判断语句,循环语句,和一些变量的自定义.
后面的什么数组呀之类的都没有讲到


这是我昨天发的贴,我是一个新手.才学了几天,因为后面的都没讲到,以下是我自己的编的:

#include "stdio.h"
int main(void)
{
int a,b,c,weis,g;
printf ("please input the number:");
scanf ("%d",&a);
weis=1;
c=a;
if (a==0) goto panduan;
b=a/10;

/* 以下weis代表算出的位数 c算出输入数字中头一个数字*/
again:;
{
if (b!=0)
{
weis=weis+1;
c=b;
b=b/10;
goto again;
}
}
panduan:switch (c)
{
case 0:printf ("zero ");break;
case 1:printf ("one ");break;
case 2:printf ("tow ");break;
case 3:printf ("three ");break;
case 4:printf ("fore ");break;
case 5:printf ("five ");break;
case 6:printf ("six ");break;
case 7:printf ("seven ");break;
case 8:printf ("eitht ");break;
case 9:printf ("nine ");break;
}

if (weis==1) goto end;

/* 以下算出除了头一位以外的数字*/
for (g=1;g<weis;g++)
c=c*10;

a=a-c;
b=a;
weis=0;

goto again;



end:;

}


根据测试可以实现,因为是新手,后面的也都没讲到,所以编的也许太烦了一点,但现在有一个问题,我输入9876以后.可以正常输出英文,但我输入98765的时候屏幕什么都没有输出,不知道哪里出了问题.有哪位高手可以指教一下.

[此贴子已经被作者于2007-6-2 20:04:57编辑过]

搜索更多相关的解决方案: C语言  

----------------解决方案--------------------------------------------------------
不知道是不是编译器的问题,我用MINGW可以正确输出.....另外goto语句最好少用,会很混乱.......

----------------解决方案--------------------------------------------------------
以下是引用killer_l在2007-6-2 20:11:19的发言:
不知道是不是编译器的问题,我用MINGW可以正确输出.....另外goto语句最好少用,会很混乱.......document.body.clientWidth*0.5) {this.resized=true;this.width=document.body.clientWidth*0.5;this.style.cursor='pointer';} else {this.onclick=null}" alt="" />

我用的是 turbo C...有问题吗


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

因为turbo C的编译器98765已经超了int.而MINGW编译器的int是4字节的.


----------------解决方案--------------------------------------------------------
以下是引用nuciewth在2007-6-2 21:22:04的发言:

因为turbo C的编译器98765已经超了int.而MINGW编译器的int是4字节的.

那在 turbo C里面应该怎么定义呀????


----------------解决方案--------------------------------------------------------
/* Note:Your choice is C IDE */
#include "stdio.h"
int main(void)
{
long int a,b,c,weis,g;
printf ("please input the number:");
scanf ("%li",&a);
weis=1;
c=a;
if (a==0) goto panduan;
b=a/10;

/* 以下weis代表算出的位数 c算出输入数字中头一个数字*/
again:;
{
if (b!=0)
{
weis=weis+1;
c=b;
b=b/10;
goto again;
}
}
panduan:switch (c)
{
case 0:printf ("zero ");break;
case 1:printf ("one ");break;
case 2:printf ("tow ");break;
case 3:printf ("three ");break;
case 4:printf ("fore ");break;
case 5:printf ("five ");break;
case 6:printf ("six ");break;
case 7:printf ("seven ");break;
case 8:printf ("eitht ");break;
case 9:printf ("nine ");break;
}

if (weis==1) goto end;

/* 以下算出除了头一位以外的数字*/
for (g=1;g<weis;g++)
c=c*10;

a=a-c;
b=a;
weis=0;

goto again;



end:;

}


这样定义可以吗???我用红色标出来的..
----------------解决方案--------------------------------------------------------
long a,b,c,weis,g;
printf ("please input the number:");
scanf ("%ld",&a);
----------------解决方案--------------------------------------------------------
可以用数组来解决的 以前这样的题多的事 不必怎么麻烦
----------------解决方案--------------------------------------------------------

可以把数字当作字符处理。


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