当前位置: 代码迷 >> C语言 >> 谁能告诉我这个程序为什么运行不出正确结果?
  详细解决方案

谁能告诉我这个程序为什么运行不出正确结果?

热度:107   发布时间:2007-09-16 20:16:43.0

还是错的,若输入的是负数没问题,正数就少了一位.
#include <stdio.h>
#include <string.h>
long fun ( char *p)
{ int i; long a=0, n=0,k=1;
for (i=strlen(p)-1;i>=0;i--)

if (p[i]=='-')
a=-a;

else
{ n=p[i]-'0';
n*=k;
k*=10;
a+=n;
}
return a;
}

void main() /* 主函数 */
{ char s[6];
long n;
printf("Enter a string:\n") ;
gets(s);
n = fun(s);
printf("%ld\n",n);
}


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


9楼何止什么都会啊
我怀疑9楼一直不告诉我们微软的WindowsXP里99%的源代码是抄袭9楼作品的
9楼简直就是人类骄傲啊
----------------解决方案--------------------------------------------------------
书写习惯是要养成的,有的人没心情看书写的很乱的代码!我也不喜欢看乱的代码.(简单可以看看)
至于九楼的我想你最好做一个星期斑竹试试,看看每天阅读帮人找错是不是一个痛苦的事!

----------------解决方案--------------------------------------------------------
另外11楼,我试过楼主的程序,没有你说的问题!
----------------解决方案--------------------------------------------------------
回复:(sunyuantz)另外11楼,我试过楼主的程序,没有你...

这是他的程序
#include <stdio.h>
#include <string.h>
long fun ( char *p)
{
int i; long a=0, n=0,k=1;
for (i=strlen(p)-1;i>0;i--)
{
n=p[i]-'0';
n*=k;
k*=10;
a+=n;
}
if (p[0]=='-') a=-a;/*他这里只考虑到p[0]=='-'的情况,如果p[0]!='-'呢*/
return a;
}

main() /* 主函数 */
{ char s[6];
long n;
printf("Enter a string:\n") ;
gets(s);
n = fun(s);
printf("%ld\n",n);
}


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

如果p[0]!=‘-’
就执行return a;


----------------解决方案--------------------------------------------------------
以下是引用冰的热度在2007-9-16 17:28:52的发言:
哎......又是废话,

你要是不会就别回贴,





没礼貌!!!```要是觉得飞燕````的回复有问题``可以提出意见```不要这样攻击```

飞燕````知道你很累``而且很忙``每天逛很多方`````而且还有自己的事要做``

要是你不想回贴呢```就直接不回吧````你以后尽量委婉的指出一下别人的帖子那里不好吧```

```我知道你的脾气``是帮人``帮出来的```



----------------解决方案--------------------------------------------------------
以下是引用sunyuantz在2007-9-16 22:40:11的发言:
书写习惯是要养成的,有的人没心情看书写的很乱的代码!我也不喜欢看乱的代码.(简单可以看看)

至于九楼的我想你最好做一个星期斑竹试试,看看每天阅读帮人找错是不是一个痛苦的事!

re! 最不喜欢就是看代码了。。。。比看acm上的论文还要痛苦


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