OpenEdv-开源电子网
标题: C语言作业3 [打印本页]
作者: 陈乔誉_学员 时间: 2017-7-24 23:43
标题: C语言作业3
3,一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如,6的因子为1,2,3,而6=1+2+3,因此6是完数。
编程找出1000以内的所有完数,并输出到串口,输出格式为:“6=1+2+3” 。(P43:)
作者: 陈乔誉_学员 时间: 2017-7-26 16:00
本帖最后由 陈乔誉_学员 于 2017-7-26 16:09 编辑
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "string.h"
/************************************************
ALIENTEK战舰STM32开发板实验4 串口实验
技术支持:www.openedv.com
淘宝店铺:http://eboard.taobao.com
关注微信公众平台微信号:"正点原子",
免费获取STM32资料。
广州市星翼电子科技有限公司
作者:正点原子 @alientek
************************************************/
int main(void)
{
u32 num,high;
u32 sum,step;
u16 yinzi[20];
u8 i,z;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //LED端口初始化
KEY_Init(); //初始化与按键连接的硬件接口
high=1000;
while(1)
{
for(num=1;num<high;num++)
{
for(step=0;step<num;step++)
{
if((num%step)==0)
{
sum+=step;
yinzi=step;
i++;
}
}
if(sum==num){
printf("%1d = ",num);
for(z=0;z<i;z++)
{
printf("%d ",yinzi[z]);
if(z<(i-1))printf("+ ");
}
printf("\n");
}
sum=0;i=0;
}
while(1);
}
作者: 萧洛 时间: 2017-7-29 10:03
你的yinzi这个数据,在一直给yinzi【0】赋值,你的结果怎么得出来的? 除非你的编译器是自动给数据递增的。
作者: lqd666888 时间: 2017-10-10 16:33
66666666
欢迎光临 OpenEdv-开源电子网 (http://www.openedv.com/) |
Powered by Discuz! X3.4 |