不完美的期待——每日学习分享Day2

今天的我又学会了什么呢?
1、逻辑先后需理清
例如,水仙花数这一题,在变量的位置上放错了地方,应当将每个数的变量放在循环内,因为程序是从上往下运行的,运行到循环需要的变量要存在有效!否则,每一个代码块都正确就是不能正确运行成功。可见,逻辑思路还是需要好好理清的哟~加油!

分享例题:
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
	int i,j,k,num;
	
	for (num = 100; num < 1000; num++){
		i = num / 100;							//在循环内部得到每一个数的每一位哦
		j = (num - 100*i)/10;
		k = (num - j*10 - i*100);
		if (num == (i*i*i + j*j*j + k*k*k))
			printf("%d\n",num);
	}
	return 0;
}

2、将正整数分解质因数
题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。
方法一:
分析:分解质因数,从最小的因数2开始,将每次整除过的整数继续执行形成循环,但在此进行分解时还是会从最小因数2开始。同时需要注意,for的条件有 i++,因此在重新命令时只需要 i = 1,最后在循环外打印出最小的因数。

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	int num, i;
	
	scanf("%d",&num);	
	printf("%d = ",num); 
	
	for (i = 2; i < num; i++){		
		if ((num % i) == 0){
			printf("%d *", i);	
			num = (num / i);
			i = 1;
		}					
	}
	printf("%d",num);
	
	return 0;
}

方法二:
复习内容:while循环、反向 **!**思维

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	int num, i;
	
	scanf("%d",&num);	
	printf("%d = ",num); 
	
	for (i = 2; i < num; i++){
		while((num % i) == 0){
			printf("%d",i);
			num = num / i;
			if (num != 1)
				printf("*");
		}
	}
	
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值