标题:C语言初学者的编程问题,希望能在论坛得到解答
取消只看楼主
a814513604
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2017-8-14
结帖率:100%
 问题点数:0 回复次数:6 
C语言初学者的编程问题,希望能在论坛得到解答
题目是判断一个不超过5位的正整数的位数,并且把各个位上的数输出。这是C程序教材上的题,虽然有答案,但是还是想知道自己的程序哪里有问题,恳请路过的花两分钟解答下,不胜感激

#include <stdio.h>
#include <math.h>
int main()
{
    double b;
    int a,i,j,t,d,p;
    scanf("%d",&a);
    d=0;
    p=1;
    if(a>99999)
        printf("error\n");       //判断是否小于5位数
    else
        for(i=1;i<=5;i++)
        {if(a/(pow(10,i))<1)
        break;}                  //循环除10知道小于1,循环次数i为位数
    printf("位数为%d\n",i);
    b=a;                         //由于后面要将a除10为小数,所以换个变量类型
    for(t=i-1;t>=0;t--)          //t为目前数b的最高位
    {b=b/(pow(10,t));            //除10的次幂将其最高位变为个位
     for(j=1;j<=9;j++)           //将其不断减1,j为减1的次数,直到b小于1,此时j即为其最高位上的数
     {b=b-1;
     if(b<1&&b>0)                //由于存在0的情况所以分两种情况讨论,此处为最高位不为0的情况
         printf("第%d位数为%d\n",i,j);
     else
         if(b<0)                 //此处为最高位为0的情况
         {b=b+1;printf("第%d位数为%d\n",i,d);}             //由于此时数为负数,要将其个位消除,所以加1
     }
     b=b*(pow(10,t));            //经过上述循环最高位已减完,将其由小数还原为出去最高位的初始数,然后进行下一个大循环求下一位数,即为此时b的最高位
    }
    return 0;
}

[此贴子已经被作者于2017-8-14 14:44编辑过]

搜索更多相关主题的帖子: 位数 printf for 循环 最高位 
2017-08-14 13:15
a814513604
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2017-8-14
得分:0 
求位数时,程序里是想当数a除了10的i次方才小余1,那么它就是有i位的数
2017-08-14 13:23
a814513604
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2017-8-14
得分:0 
求每一位置上的数时,是从高位向低位求的,先从最高位第i位开始,将第i位变为个位,然后将其个位循环减1直到它小于1,然后输出循环减1的次数就是它第i位上的数
2017-08-14 13:27
a814513604
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2017-8-14
得分:0 
为0的特殊情况也考虑了
2017-08-14 13:28
a814513604
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2017-8-14
得分:0 
真心求教,希望有人解答,只想弄清楚错在哪,谢谢
2017-08-14 13:29
a814513604
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2017-8-14
得分:0 
运行结果
2017-08-14 13:32
a814513604
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2017-8-14
得分:0 
回复 7楼 吹水佬
谢谢您的解答,因为初学C语言,我想知道自己的程序错在哪这样才能学的好,如果有时间请解答下,谢谢
2017-08-14 15:02



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




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

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