| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1801 人关注过本帖
标题: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编辑过]

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
快速回复:C语言初学者的编程问题,希望能在论坛得到解答
数据加载中...
 
   



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

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