标题:一个简单的代码,不知道问题出在哪里了,求指教
只看楼主
AntorDragon
Rank: 2
等 级:论坛游民
帖 子:45
专家分:12
注 册:2013-3-3
结帖率:86.67%
已结贴  问题点数:20 回复次数:10 
一个简单的代码,不知道问题出在哪里了,求指教
嗯,输入一个整数,可以算出他的位数和各位数之和。
代码如下:

#include<stdio.h>
void main()
{
    int a,b=0,c=0,d;
    printf("please input an integer:");
    scanf("%d",&a);
    while(a>=0)
      {
         d=a%10;
         a=a\10;
         b++;
         c=c+d;
       }
    printf("有%d个数,它们的和是%d",b,c);

}
搜索更多相关主题的帖子: please 
2013-04-10 16:07
X1AO
Rank: 3Rank: 3
来 自:北京邮电大学
等 级:论坛游侠
威 望:1
帖 子:52
专家分:123
注 册:2013-3-6
得分:2 
a=a\10;除号写反了,a = a/10;

不要问我下课干什么,我陪瓜哥上厕所。
2013-04-10 16:39
AntorDragon
Rank: 2
等 级:论坛游民
帖 子:45
专家分:12
注 册:2013-3-3
得分:0 
回复 2楼 X1AO
其实发上来的时候就发现错在这了,唉,但还是谢谢了。

那年京城大雪,或是天下大雪,我一骑绝尘
2013-04-10 16:49
whukeming
Rank: 2
等 级:论坛游民
帖 子:76
专家分:51
注 册:2008-8-24
得分:2 
用一般的编译器可以找到哪行出错的吧
2013-04-10 16:50
flowerforeve
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2013-4-5
得分:4 
首先,这错了a=a/10;可能是你输错了,
其次,控制条件应改为while(a>0)
因为求a=a/10时,当a为小于10的数时,这时a=0,而你用a>=0来控制循环,这就是个死循环。
2013-04-10 16:56
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:2 
学会用debug...   是不会出现这种小错误的

三十年河东,三十年河西,莫欺少年穷!
2013-04-10 17:05
挚爱贤俊
Rank: 1
等 级:新手上路
帖 子:3
专家分:4
注 册:2012-12-11
得分:2 
回复 楼主 AntorDragon
为什么我在TC上运行LZ你的程序,编译后输入整数后,不管是按回车还是CTRL+F9都无法返回而且得不到结果。
2013-04-10 17:26
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2391
专家分:13384
注 册:2013-3-3
得分:2 
  a=a\10;你的除号写错了,应该为:a=a/10;
你这个还有一个逻辑错误:
while(a>=0)
       {
          d=a%10;
          a=a/10;
          b++;
          c=c+d;
        }
     printf("有%d个数,它们的和是%d",b,c);
对于a=a/10;a==0会恒成立,而对于循环将不会停止,那么就不会输出,就没有printf函数输出的内容了。我给你修改如下:
#include<stdio.h>
 void main()
 {
     int a,b=0,c=0,d;
     printf("please input an integer:");
     scanf("%d",&a);
     while(a>0)
       {
          d=a%10;
          a=a/10;
          b++;
          c=c+d;
        }
     printf("有%d个数,它们的和是%d",b,c);
 
}
 

Maybe
2013-04-10 18:00
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:2 
试试sprintf 也许你会用更好的方法来实现这个功能

                                         
===========深入<----------------->浅出============
2013-04-10 18:04
wmb429006
Rank: 1
等 级:新手上路
帖 子:13
专家分:9
注 册:2012-12-1
得分:2 
五楼很正确,这是个死循环    a=a/10
2013-04-10 18:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-403642-1-1.html




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

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