| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 700 人关注过本帖
标题:【初学者】为什么每次输出结果不同?
只看楼主 加入收藏
kogm123
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-3-23
收藏
 问题点数:0 回复次数:7 
【初学者】为什么每次输出结果不同?
#include <stdio.h>
main()
{     int base,i;
      char num[20];
      float s=0;
    loop:  do
      {
            printf("输入数的进制(<=16):");
            scanf("%d",&base);
      }while(base<1&&base>=16);
      printf("输入该进制的一个整数:");
      scanf("%s",num);
      i=0;
      while(num[i]!='\0')
      {
      switch(num[i])
           {
           case 'a':
           case 'A': s=s*base+10;break;
           case 'b':
           case 'B': s=s*base+11;break;
           case 'c':
           case 'C': s=s*base+12;break;
           case 'd':
           case 'D': s=s*base+13;break;
           case 'e':
           case 'E': s=s*base+14;break;
           case 'f':
           case 'F': s=s*base+15;break;
           case '9': case '8': case '7': case '6': case '5':
           case '4': case '3': case '2': case '1': case '0':
                s=s*base+num[i]-'0';break;
           }
           i++;
      }
      printf("%d进制整数%s的十进制结果为%g\n",base,num,s);
      system("pause");
      goto loop;
}
第一次结果正常。但从第二次(goto语句后)开始,即使输入与第一次完全相同,结果也不对了。请高手赐教!
编译环境:dev c++
搜索更多相关主题的帖子: 初学者 结果 输出 
2008-05-20 13:21
kogm123
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-3-23
收藏
得分:0 
请高手赐教!
2008-05-20 17:11
mqh21364
Rank: 1
等 级:新手上路
帖 子:642
专家分:0
注 册:2008-2-28
收藏
得分:0 
你的s在第二次运行的时候还是第一次运行的结果吧!
没错的话,你第二次输入和第一次一样的字符,结果是第一次的2倍,就是因为你的s值是第一次运行完以后的值。

在goto loop;前面加上s=0;就可以了。

最后说句多余的话:尽量不要用goto。

前不见古人,后不见来者。念天地之悠悠,独怆然而涕下。
2008-05-20 17:48
kogm123
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-3-23
收藏
得分:0 
  我知道最好不用goto 只是想试试  结果出问题
解决方法是对了  但我还是不懂我错在哪 请你说详细一点好吗
多谢!
2008-05-20 18:06
kogm123
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-3-23
收藏
得分:0 
哦 我明白了 就是s没有恢复 第二次循环s初值就不是0了
唉!我对C的感觉太差了。。
2008-05-20 18:49
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
C语言是面向过程的,确实有些地方不用就不好操作。所以实在没办法用goto也可以,但是像C++就不会经常用到了

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-05-20 18:57
江湖无痕
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-4-4
收藏
得分:0 
我学习c的时候,我们老师就跟我们说最好不要用goto,哪个东西麻烦的很!!!
2008-05-20 19:22
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
我到现在都没有用过```只是以前体验过一次```

LZ从这次的错误里``应该知道了```在以后写程序要记得``有些变量是要更新的``

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-05-20 20:03
快速回复:【初学者】为什么每次输出结果不同?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035492 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved