//***************Lesson03- Cycle循环,课堂笔记************
//for循环:initialization:循环变量初始值,只会执行一次;condition:循环条件, 满足条件才会执行; increment:循环变量增量;statements:循环体,反复要执行的操作.
//循环次数: (循环条件 - 初始值) / 增量
//12345取每一位, 取各位:12345%10
//取最高位:12345/10000
// 例如:取4, 12345%100/10,, 取3, 12345%1000/100
// for (int i = 1; i <= 100; i++) {
// printf("%d\n",i);
// if( i % 2 ==0)
// printf("偶数:%d\n", i);
//
// else
// printf("奇数:%d\n", i);
//
// }
//
// //输出个位是7的数
// for (int i = 1; i < 100; i++) {
// if(i % 10 ==7)
// {
// printf("%d\n", i);
// }
// }
// //输出十位是7的数
// for (int i = 1; i < 100; i++) {
// if(i/10 == 7)
// printf("[%d] ",i);
// }
//
// //输出不是7的倍数,也不包含7
//
// for (int i = 1; i <= 100; i++) {
// if(i % 7 != 0 && i % 10 != 7 && i / 10 != 7)
// printf("[%d] ",i);
// }
// //求1-100的和,
// int sum = 0, sum2 = 0, sum7 = 0;
// for (int i = 1; i <= 100; i++) {
// sum = sum + i;
//
// }
// printf("\n 1到100的和sum = %d ", sum);
// sum = 0;
// //1-100的偶数和 //1- 100的奇数和,
// for (int i = 1; i <= 100; i++) {
// if(i % 2 ==0)
// sum = sum + i;
// else
// sum2 = sum2 + i;
// }
// printf("\n 偶数和sum = %d ,奇数和sum = %d", sum, sum2);
//
// //1-100的7的倍数和
// for (int i = 1; i <= 100; i++) {
// if(i % 7 ==0)
// sum7 = sum7 + i;
// }
// printf("\n 7的倍数和sum = %d ", sum7);
//for循环嵌套, 外层循环控制输出的行数, 内层循环控制每一行输出端的内容
// for(int i = 1 ;i <= 100; i++)
// {
// for(int j = 1;j < 4; j++)
// {
// printf("%d ",j);
// }
// printf("\n");
// }
//1
//12
//123
// for(int i = 1 ;i <= 10; i++)
// {
// for(int j = 1;j < i; j++)
// {
// printf("%d ",j);
// }
// printf("\n");
// }
//123
//12
//1
//
// for(int i = 0 ;i < 3; i++)
// {
//
// for(int j = 1;j <= 3 - i; j++)
// {
// printf("%d ",j);
// }
// printf("\n");
// }
// 321
// 32
// 3
// for(int i = 0 ;i < 3; i++)
// {
//
// for(int j = 3;j >= i + 1; j--)
// {
// printf("%d ",j);
// }
// printf("\n");
// }
//
//3
//32
//321
// for(int i = 0 ;i < 3; i++)
// {
//
// for(int j = 3;j >= 3-i; j--)
// {
// printf("%d ",j);
// }
// printf("\n");
// }
// // *
// // * *
// // * * *
//
// for(int i = 1; i <= 3; i++)
// {
// for(int j=1; j<=3-i; j++)
// printf(" ");
// for(int k=1;k<=i;k++){
// printf("* ");
//
// }
// printf("\n");
// }
//
// *
// * *
// * * *
// * *
// *
// int n = 11;
// for(int i = 1; i <= n; i++)
// {
//
// if(i>n/2+1)
// {
// for(int j = 1; j <= i-(n/2+1); j++)
// printf(" ");
// //for(int k = (n/2+1);k > i-(n/2+1);k--) //方1
// for(int k = 1;k <= n - i + 1;k++) //方2
// printf("* ");
//
// }
// else
// {
// for(int j = 1; j <= (n/2+1)-i; j++)
// printf(" ");
// for(int k = 1;k <= i;k++)
// printf("* ");
//
// }
// printf("\n");
// }
//
//
//输入一个整数,判断是不是质数, 只能被1以及本身整除的数
// int num = 0;
// printf("Enter num=");
// scanf("%d",&num);
//
// bool isTrue = YES;
// for (int i = 2; i < num; i++) {
// if(num % i == 0)
// {
// isTrue = NO;
// //printf("该数不是质数");
// break; //结束当前循环(距离break,最近的本层循环)
// }
// }
// if(isTrue)
// {
// printf("是质数");
// }else{
// printf("不是质数");
// }
//关键字continue 作用:结束本次循环,继续下一次循环,遇到continue之后,本次循环以后的代码不会被执行
//求1 - 100 之间所有偶数的和
// int sum = 0;
// for (int i = 1; i <= 100; i++) {
// if (i % 2 != 0) {
// continue;
// }
// sum += i;
// }
// printf("%d ", sum);
//while 循环
//15. 输出1 - 100之间7的倍数
// int n = 1; //循环变量初始化
// while (n <= 100) {
// if(n % 7 == 0)
// printf("%d ", n);
// n++;
//
// }
//16. 计算1-100之间的数的和, 最终和大于25时,加到那一个数字
// int sum = 0;
// int i = 1;
// while (sum <= 25 && i <= 100) {
// sum += i;
// i++;
// }
// printf("加到%d ",i - 1);
//17 do...while
//输出1-100之间十位为7的数
// int i = 1;
//
// do {
// if(i / 10 == 7){
// printf("%d ", i);
// }
// i++;
// } while (i <= 100);
//
/*
总结:
一,for循环和while以及do...循环的区别.
for循环多用于明确循环次数的场景;
while以及do...while多用于不明确循环次数的场景,
for循环可以转化成while, do ..while 循环, 但是while以及do...while循环不一定能转换成for循环,
二.while, do..while的区别.
while循环是先判断循环条件,条件不成立,不会执行循环体,
do...while循环是先执行一次循环体, 在判断循环条件,以及循环条件不满足,循环体也会执行一次.
三, break ,continue的区别
break用与结束本层循环,当前循环终止,
conninue用与结束本次循环, 继续下一次循环, 循环不终止
四,循环的四部分:
循环变量初始化1,循环条件2,循环变量增量3,循环体4,
执行流程:
1--2---4---3---2----4--3----------------2
*/
//18, 打印99乘法表
// for (int i = 1; i < 10; i++) {
//
// for (int j = 1; j <= i; j++) {
// printf("[%d * %d = %d] ", j, i, i*j);
// }
// printf("\n\n");
// }
//随机数
//0~9
int ran = 0;
ran = arc4random() % 10;
printf("ran = %d\n", ran);
//[0, 16]
ran = arc4random() % 17;
printf("ran = %d\n", ran);
//[10, 20] [a, b] arc4random() % (b-a+1) + a
ran = arc4random() % 11 + 10;
printf("ran = %d\n", ran);
//**********************Lesson-03 作业************************
//
// 1. (*)有 10 亿元钱每天花一半,可以花多少天?
// int money = 1000000000, day = 0;
// while (money > 0) {
// money /= 2;
// day++;
// }
// printf("%d天", day);
//
// 2. (**)随机产生 20 个[10 , 100]的正整数,输出这些数以及他们中的最大数
// 产生随机数:[a,b] arc4random() % (b - a + 1) + a , arc4randow() % 100
// int i = 0, num = 0, max = 0;
// for(i = 1; i <= 20; i++){
// num= arc4random() % (100 - 10 + 1) + 10;
// printf("%d ", num);
// if(num > max)
// max = num;
// //max = num > max ? num : max;
// }
// printf("\n 最大:%d", max);
// 3. (**)编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”
//// 是一个 各个位立方之和等于该整数的三位数。
// int i = 0;
// int num = 0;
// int hur = 0, decade = 0, unit = 0;
// for(i = 100; i <= 999; i++ )
// {
// hur = i / 100;
// decade = i % 100 / 10;
// unit = i % 10;
// if(i == pow(hur, 3) + pow(decade, 3) + pow(unit, 3)) { //pow()求几次方函数
// num++;
// printf("%d\n", i);
// }
// }
// printf("个数%d", num);
// 4.(**)已知 abc+cba = 1333,其中 a,b,c 均为一位数,编程求出满足条件的 a,b,c 所有组合
// int a = 0, b = 0, c = 0;
// for(a = 0; a <= 9;a++)
// {
// for(b = 0; b <= 9;b++)
// {
// for(c = 0; c <= 9;c++)
// {
// if(a * 101 + b * 10 * 2 + 101 * c == 1333)
// {
// printf("a = %d, b = %d, c = %d\n", a, b, c);
// }
// }
// }
// }
//
// 5. (***)输入两个数,求最大公约数和最小公倍数。(用两种方法:辗转相除法和普通方法)
//辗转相除法
int m = 0, n = 0;
printf("Enter m,n:");
scanf("%d%d", &m, &n);
int multiply = m * n;
int r = m % n;
while(r!=0)
{
r = n%m;
n = m;
m = r;
}
printf("最大公约数是:%d", n);
printf("最小公倍数是:%d", multiply/n);
//普通方法 ,从所有的约数中一个一个的进行匹配.
// int num1 = 0, num2 =0;
// printf("请输入两个数:");
// scanf("%d%d", &num1, &num2);
// for (int gcd = num1 < num2 ? num1 : num2; gcd >= 1; gcd--) {
// if (num1 % gcd == 0 && num2 % gcd == 0) {
// printf("最大公约数是:%d 最小公倍数是:%d\n", gcd, (num1 * num2) / gcd );
// break; //一旦找到, 就结束,不在循环下去
// }
// }
// 6. 求 n 个随机数里的最小值, 10~30
// int n = 0, i = 0, num = 0, small = 31;
// printf("请输入个数n:");
// scanf("%d",&n);
// for (i= 1; i <= n; i++) {
// num=arc4random() % 21 + 10;
// printf("%d ",num);
// if(num < small)
// small = num;
// }
// printf("最小:%d",small);