求一个数的各个位分别是多少

(1)求位数

eg:

123/1=123      i=1

123/10=12      i=2

123/100=1      i=3

123/1000=0    结束

从中我们可以看出要点如下:

①除数依次乘10

②每次除完都要进行判断,直到出现商为0停止

③要有一个负责计数的变量依次递增。

方法:1:使用for

int Digit_place(int n)
{
    int digit = 0;
    for (int i = 1; (n/i)!=0; i = i * 10, digit++);
    return digit;
}

方法2:使用while

int Digit_place(int n)
{
    int digit = 0;
    while (n != 0)
    {
        n = n / 10;
        digit = digit + 1;
    }
    return digit;
}

区别:我觉得虽然本质上相同,但用while更容易理解。

(2)输出各位的数字

方法1:

123%10=3

123%100=23             23/10=2

123%1000=123         123/100=1

从中我们可以看出要点如下:

①归纳总结出规律 n % j/(j/10 )(n为输入的整数,j的初值为10,每次循环都*10)

方法2:

123/100=1        123%100=23

23/10=2             23%10=3

3/1=3                   3%1=0

方法1:从个位开始输出

void prin_t(int n)//打印出每一位
{
    int m = Digit_place(n);
    
        for (int j = 10,i=1; i<=m; j=j*10,i++)
        {
            printf("\n从右向左数第%2d位是%2d\n", i,(n % j/(j/10 )));
        }
}

方法2:从最高位开始输出

void prin_t(int n)//打印出每一位
{
    int m = Digit_place(n);
    
    int index=1;
    for (int i = 1; i < m; i++)
    {
        index = index * 10;
    }
    while (n != 0)
    {
        printf("%d", n / index);
        n = n % index;
        index = index / 10;
    }
    printf("\n");
}

(3)逆着打印

参见(2):方法1

void reverse(int n)//逆序
{
    while (n != 0)

    {
        printf("%d", n % 10);
        n = n / 10;
    }
    printf("\n");
}

总的代码:

#include<stdio.h>


//题目二
int Digit_place(int n)
{
	int digit = 0;
	for (int i = 1; (n / i) != 0; i = i * 10, digit++);
	return digit;
}
//
void prin_t(int n)//打印出每一位
{
	int m = Digit_place(n);

	for (int j = 10, i = 1; i <= m; j = j * 10, i++)
	{
		printf("\n从右向左数第%2d位是%2d\n", i, (n % j / (j / 10)));
	}
}


void reverse(int n)//逆序
{
	while (n != 0)

	{
		printf("%d", n % 10);
		n = n / 10;
	}
	printf("\n");
}
//
int main()
{
	printf("请输入一个不多于五位的正整数\n");
	int n;
	scanf_s("%d", &n);
	
	printf("一共有%d位",Digit_place(n));
	prin_t(n);
	reverse(n);
}
//

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课 程 设 计 任 务 书 课程设计题目 三电容表 功能 技术指标 设计一个电路简洁、精度高及测量范围宽的电容表,将待测电容的电容值显示到码管,可显示 三字 工作量 适中 工作计划 3月8日 查资料,分析原理 3月9日 画原理图,列元器件表 3月11日 购买元器件 3月12日 安装电路 3月14日 电路调试 3月19日 结题验收 3月20日 撰写说明书 3月25日 交说明书并准备答辩 3月26日 答辩 指导教师评语 指导教师: 2010年3月 23日 目录 第1章 绪论 1 1.1设计要 1 1.2 设计功能 1 第2章 电路的方框图 2 2.1 电路的方框图 2 第3章 单元电路设计和参计算 3 3.1 单元电路设计 3 3.1.1 双时基电路 3 3.1.2 控制电路 5 3.1.3 计电路 5 3.1.4 译码电路 7 3.1.5 显示电路 8 3.1.6 8550型号三极管 9 3.1.7 电容的作用 9 3.2 参计算 11 第4章 整机电路的工作原理 13 4.1 三字电容表原理图 13 4.2 电路工作原理 13 第5章 电路的组装与调试 15 5.1合理布局 15 5.2调试 15 结论 16 收获与体会 17 致谢 18 参考文献 19 附录1 元器件清单 20 第1章 绪论 课程设计是运用自己所学的字电子技术、模拟电子技术知识,根据老师所给课程设计题目,自行分组(每组3-4人)来设计、搭接、调试电路,使其实现所给题目要的功能、量化指标等参,三周内上交电路,老师通过对电路的完成情况、出勤情况、说明书制作情况以及课程设计答辩情况对每同学进行评分。 1.1设计要 1.被测电容范围:1PF-10000uF; 2.测试误差<10%; 3.电容值用三码管显示。 1.2 设计功能 设计一个电路简洁、精度高及测量范围宽的电容表,将待测电容的电容值显示到码管可显示三。 实际上就是,待测电容容量时间转换器将待测电容的容量转换成与其成正比的单稳态时间。闸门控制器的开通时间及为单稳时间。当闸门控制器开通,由基准脉冲发生器产生的标准计脉冲被输入到计器计,然后再通过译码器对其译码,使BCD码转换成十进制字笔段码,最后在共阴极码管上直接显示测量结果。 第2章 电路的方框图 2.1 电路的方框图 三字电容表是由基准脉冲发生器、待测电容容量时间转换器、闸门控制器、计器、译码器及显示器等组成,其方框图如图2-1所示。 基准脉冲发生器是用来产生标准的计脉冲。待测电容容量时间转换器是把待测电容的容量转换成与容量成正比的单稳态时间td。闸门控制器的开通时间就是单稳态时间td。在to时间内,计脉冲通过闸门被送往计器计,计的多少直接反映出被测电容的容量。 图2-1 三字电容表电路结构框图 第3章 单元电路设计和参计算 3.1 单元电路设计 3.1.1 双时基电路 双时基电路主要由NE556组成,其芯片引脚与外围电路如图3-1所示。 图3-1 NE556芯片管脚图 由于NE556是两个NE555组成。故这里只简单介绍一下NE555,见图3-2所示。 图3-2 NE555内部结构图 NE555是属于555系列的计时IC的其中的一种型号,555系列IC的接脚功能及运用都是相容的,只是型号不同的因其价格不同其稳定度、省电、可产生的振荡频率也不大相同;而555是一个用途很广且相当普遍的计时IC,只需少的电阻和电容,便可产生电路所需的各种不同频率之脉冲信号。 NE555具体如下的特点: 只需简单的电阻器、电容器,即可完成特定的振荡延时作用。其延时范围极广,可由几微秒至几小时之久。 它的操作电源电压范围极大,可与TTL,CMOS等逻辑电路配合,也就是它的输出准及输入触发准,均能与这些逻辑系列的高、低态组合。 其输出端的供给电流大,可直接推动多种自动控制的负载。 它的计时精确度高、温度稳定度佳,且价格便宜。 NE555内部功能框图如图3-3所示。其功能说明如下: 图3-3 NE555内部功能框图 Pin 1 (接地) -地线(或共同接地) ,通常被连接到电路共同接地。 Pin 2 (触发点) -这个脚是触发NE555使其启动它的时间周期。触发信号上缘电压须大于2/3 VCC,下缘须低于1/3 VCC 。 Pin 3 (输出) -当时间周期开始555的输出输出脚,移至比电源电压少1.7伏的高电。周

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值