// command +R 运行
// command +移动键 选择
// alt +shift+移动键 一次选一个单词
int main(int argc, const char * argv[]) {
// //初始化循环变量;
// int i = 1;
// //开始循环,循环条件为100以内.
// while (i <101) {
// //如果满足条件,执行括号内的语句,否则,跳出语句;
// //需要进行判断,如果是7的倍数打印.
// if (i % 7 == 0) {
// printf("%d\n",i);
// }
// //需要注意,循环增量务必保证可以执行到,
// printf("%d\n",i);
// i++;
// //语句进行到这里,下面应该执行的是返回到条件表达式而不是直接退出循环
// }
// int i = 0;
// while (i < 101) {
// if (i % 10 == 7) {
// printf("%d\n", i);
// }
// // *******不要忘记循环增量.
// i++;
// }
// int i = 1;
// while (i < 101) {
// if (i / 10 == 7) {
// printf("%d\n", i);
// }
// i++;
// }
// int i = 0;
// while (i < 101) {
// // 多个中间条件用&&
// if (i % 10 != 7 && i / 10 != 7 && i % 7 != 0) {
// printf("%d\n",i);
// }
// // 注意循环增量
// i++;
// }
// // 测试随机数,返回一个unsigned int 类型的随机数,
// // unsigned int r = arc4random();
// // // 无符号整形需要用%u作为转义字符;
// // printf("%u\n",r);
// // // 如果想要指定范围内的的随机数
// // // arc4random()% (最大值 - 最小值 + 1) + 最小值;
// int i = 0;
// // 从0开始可以很直观的看出循环次数,并且数组也是从0开始的.
// while (i < 10) {
// // 修要注意不要把arc4random写在循环外.
// int r = arc4random() % (30 - 10 + 1) + 10;
// printf(" %d",r);
// i++;
// }
// // 最后加个换行,让控制台看着更整齐;
// printf("\n");
// //练习
// int i = 0, n = 0, a = 0, max = 0;
// scanf("%d",&n);
// while (i < n) {
// a = arc4random() %(30 - 10 + 1) + 10;
// // 将最大值与新值比较,如果最大值小于新值,则替换最大值.
// max = max > a ? max : a;
// // 需要注意,不要再循环内输出最大值,要在循环后打印
// printf("%d ",a);
// i++;
// }
// printf("\n");
// printf("%d\n",max);
// int i = 0;
// while (i < 100) {
// printf("%d ",i);
// i++;
// // break的作用,跳出本层循环,
// if (5 == i) {
// break;
// }
// }
//
// int i = 0;
// while (i < 100) {
// printf("%d ",i);
// i++;
// // continue的作用,跳出本次循环,加速循环.
// if (5 == i) {
// continue;
// }
// }
// // Esc 键打开提示.
// // 1.循环变量初始化 2.循环条件--->(条件满足才执行) 3.语句 4.循环增量--->2.3.4--->2.3.4-->2-->退出;
// for (int i = 1; i < 101; i++) {
// if (i % 7 == 0) {
// printf("%d\t ",i);
// }
// }
// printf("\n");
// // 创建一个3次的循环
// for (int i = 0; i < 3; i++) {
// printf("外层循环第%d次开始\n",i);
// // 循环打印1 2 3
// for (int j = 1; j < 4; j++) {
// printf("内层循环第%d次开始\n",j);
// printf("%d ", j);
// }
// printf("内层循环结束\n");
// printf("\n");
// printf("外层循环第%d次结束\n",i);
// }
// // 打印乘法口诀;
// for (int i = 1; i < 10; i++) {
// printf("\n");
// for (int j = 1; j <= i; j++) {
// printf("%d * %d = %2d �� ",j , i, j * i );
// }
// printf("\n");
// }
return 0;
}
// 1. (**)随机产生20个[10 , 100]的正整数,输出这些数以及他们中的最大数
// int max = 0;//保存最大数
// for (int i = 0; i < 20; i++) {
// int num = arc4random() % (100-10+1) + 10;
// max = max > num ? max : num;
// printf("%d ",num);
// }
// printf("max = %d",max);
// 2. (**)编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个 各个位立方之和等于该整数的三位数。
//3位数,各个位,立方之和 = 3位数
// int count = 0;
// for (int i = 100; i < 1000; i++) {
// int a = i / 100;//百位 123/100 = 1
// int b = i % 100 /10;//十位 123 % 100 /10
// int c = i % 10;//个位 123 % 10
// if (a * a *a + b * b * b + c * c * c == i) {
// count++;
// printf("%d ",i);
// }
// }
// printf("\n%d",count);
// 3. (**)已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合
//a 1~9 c 1~9 b 0~9
// for (int a = 1; a < 10; a++) {
// for (int b = 0; b < 10; b++) {
// for (int c = 1; c < 10; c++) {
// if(a * 100 + b * 10 + c + c * 100 + b * 10 + a == 1333)
// {
// printf("%d %d %d\n",a,b,c);
// }
// }
// }
// }
//4. (***)输入两个数,求最大公约数和最小公倍数。(用两种方法:辗转相除法和普通方法)
// int m = 0,n = 0;
// scanf("%d%d",&m,&n);
//公约数 对于两个数 8 12, 1,2,4
//最大公约数,公约数里最大的数
//if(m % i == 0 && n % i == 0) i就是公约数
// int min = m < n ? m : n;
// int gcd = 0;
// for (int i = min; i >= 1; i--) {
// if (m % i == 0 && n % i == 0) {
// gcd = i;
// break;
// }
// }
// printf("%d %d",gcd,m * n /gcd);
//辗转相除法
// int m = 0,n = 0;
// scanf("%d%d",&m,&n);
// int a = m,b = n;
// //8 12
// //8 % 12 8
// //12 % 8 4
// //8 % 4 0
//
// //12 8
// //12 % 8 4
// //8 % 4 0
// while (m % n != 0) {
// int temp = m % n;
// m = n;
// n = temp;
// }
// printf("%d %d\n",n,a * b / n);
//
// 5. (***)一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高
//次数 落下 反弹
//1 100 100/2
//2 100/2 100/2/2
//3 100/2/2 100/2/2/2
//...
//10 100/2/2/../2(9) 100/2/2.../2(10)
// float totalDistance = 0;
// float down = 100,up = 100/2;
// for (int i = 1;i < 11; i++){
// totalDistance += down + up;
// down = down / 2;
// up = up / 2;
// }
// totalDistance -= up * 2;
// printf("%.2f up = %.2f",totalDistance,up*2);
// 6. (****)输入n,分别用*输出边长为n的实心菱形和空心菱形。
// 例如:n = 3时,输出:
// *
// ***
// *****
// ***
// *
//
//上三角
//行数 空格数 星号数 换行
//1 2 1 1
//2 1 3 1
//3 0 5 1
//空格与行数的关系是: 空格 = n(边长) - 行数
//星号与行数的关系是: 星号 = 行数*2 - 1
//换行始终是一个
int n = 0;
printf("请输入一个边长,我们将为你打印n边菱形:");
scanf("%d",&n);
for (int i = 1; i <= n; i++) {
//打印空格
for (int j = 0; j < n - i; j++) {
printf(" ");
}
//打印星号
for (int k = 0; k < 2 * i - 1; k++) {
printf("*");
}
//打印换行
printf("\n");
}
//下三角
//行数 空格数 星号数 换行
//1 1 3 1
//2 2 1 1
//空格与行数的关系是: 空格 = 行数
//星号与行数的关系是: 星号 = (n - 行数)*2 - 1
//换行始终是一个
for (int i = 1; i < n; i++) {
//打印空格
for (int j = 0; j < i; j++) {
printf(" ");
}
//打印星号
for (int k = 0; k < (n - i) * 2 - 1; k++) {
printf("*");
}
//打印换行
printf("\n");
}
// *
// * *
// * *
// * *
// *
printf("\n");
//上三角
//行数 空格数 星号数 空格数 星号数 换行
//1 2 1 0 0 1
//2 1 1 1 1 1
//3 0 1 3 1 1
//前面空格与行数的关系是: 空格 = n(边长) - 行数
//星号与行数的关系是: 星号 = 1
//中间空格与行数的关系是: 空格 = (行数-1) * 2 -1
//后面星号 行数为1的时候,0个,行数不为1的时候1个
//换行始终是一个
for (int i = 1; i <= n; i++) {
//打印前面空格
for (int j = 0; j < n - i; j++) {
printf(" ");
}
//打印前面星号
printf("*");
//打印中间空格
for (int k = 0; k < (i - 1)*2 -1; k++) {
printf(" ");
}
//打印后面星号
if (i != 1) {
printf("*");
}
//打印换行
printf("\n");
}
//下三角
//行数 空格数 星号数 空格数 换行
//1 1 1 3 1
//2 2 1 1 1
//3 3 1 0 1
//空格与行数的关系是: 空格 = 行数
//星号与行数的关系是: 星号 = 1
//空格与行数的关系是: 空格 = (n - 行数 - 1)*2 - 1
//星号与行数的关系是: 如果行数等于n-1,那*是0,否则是1
//换行始终是一个
for (int i = 1; i < n; i++) {
//打印前面空格
for (int j = 0; j < i; j++) {
printf(" ");
}
//打印星号
printf("*");
//打印中间空格
for (int k = 0; k < (n-1-i)*2 -1; k++) {
printf(" ");
}
//打印后面星号
if (i != n-1) {
printf("*");
}
//打印换行
printf("\n");
}
// 7.(****)反复校验用户输入的生日,包括年、月、日。直到年、月、日都合法。
int year = 0,month = 0,day = 0;
while (YES) {
printf("请输入生日(包含年月日):");
scanf("%d%d%d",&year,&month,&day);
int daysForFeb = 28;
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
daysForFeb = 29;
}
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (day >= 1 && day <= 31) {
printf("%d-%d-%d是一个合法的生日\n",year,month,day);
}else{
printf("%d-%d-%d不是一个合法的生日,请重新输入生日\n",year,month,day);
continue;
}
break;
case 2:
if (day >= 1 && day <= daysForFeb) {
printf("%d-%d-%d是一个合法的生日\n",year,month,day);
}else{
printf("%d-%d-%d不是一个合法的生日,请重新输入生日\n",year,month,day);
continue;
}
break;
case 4:
case 6:
case 9:
case 11:
if (day >= 1 && day <= 30) {
printf("%d-%d-%d是一个合法的生日\n",year,month,day);
}else{
printf("%d-%d-%d不是一个合法的生日,请重新输入生日\n",year,month,day);
continue;
}
break;
default:
printf("%d-%d-%d不是一个合法的生日,请重新输入生日\n",year,month,day);
continue;
break;
}
break;
}
// int year = 0, month = 0, day = 0;
// while (true) {
// printf("请输入你的生日:");
// scanf("%d%d%d",&year,&month,&day);
// //假设1940~2013年合法
// int dayInFeb = 28;
// if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
// {
// dayInFeb = 29;
// }
// switch (month) {
// case 1:
// case 3:
// case 5:
// case 7:
// case 8:
// case 10:
// case 12:
// if (day >=1 && day <= 31) {
// printf("日期合法\n");
// break;
// }else {
// printf("日期不合法\n");
// continue;
// }
// break;
// case 4:
// case 6:
// case 9:
// case 11:
// if (day >=1 && day <= 30) {
// printf("日期合法\n");
// break;
// }else {
// printf("日期不合法\n");
// continue;
// }
// break;
// case 2:
// if (day >= 1 && day <= dayInFeb) {
// printf("日期合法\n");
// break;
// }else {
// printf("日期不合法\n");
// continue;
// }
//
// default:
// {
// printf("日期不合法\n");
// continue;
// }
// break;
// }
// break;
// }