//
// main.m
// LessonCThirdText03
//
// Created by lanou on 15/10/12.
// Copyright (c) 2015年 ZhangFengtian. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
1. (**)随机产生20个[10 , 100]的正整数,输出这些数以及他们中的最大数
//
// int n = 1;
// int max = 0;
// while (n <= 20) {
// int random = arc4random() % (100 - 10 + 1) + 10;
// printf("%d ",random);
// n++;
// max = max > random ? max : random;
// }
//
// printf("\nmax = %d",max);
2. (**)编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个 各个位立方之和等于该整数的三位数。
//
// 第一种方法
//
// int n = 0;
// for (int a = 0; a <= 9 ; a++) {
// for (int b =0; b <= 9; b++) {
// for (int c = 0; c <= 9; c++) {
// if (100 * a + 10 * b + c == a * a * a + b * b * b + c * c * c) {
// printf("%d%d%d ",a,b,c);
// n++;
// }}}}
// printf("个数为:%d",n);
// 第二种方法
// int a,b,c = 0;
// int n = 0;
// for (int i = 0; i <= 999; i++) {
// a = i / 100;
// b = (i % 100) / 10;
// c = (i % 100 ) % 10;
// if (100 * a + 10 * b + c == a * a * a + b * b * b + c * c * c) {
// printf("%d%d%d ",a,b,c);
//
// n++;
//
// }
// }
// printf("个数为:%d",n);
3. (**)已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合
//
// for (int a = 0; a <= 9; a++) {
// for (int b = 0; b <= 9; b++) {
// for (int c = 0; c <= 9; c++) {
// if ((100 * a + 10 * b + c) + (c * 100 + b * 10 + a) == 1333) {
//
// printf("%d %d %d ",a,b,c);
//
// }
// }
// }
// }
4. (***)输入两个数,求最大公约数和最小公倍数。
//
// int a,b,m,n,max = 0;
//
// printf("请输入两个数,用逗号隔开:\n");
// scanf("%d,%d",&a,&b);
// int min = a * b;
// for (int i = 1; i < 10; i++) {
// for (int j = 1; j < 10; j++) {
// if ( a / i == b / j) {
// n = a / i;
// max = max > n ? max : n;
// }
//
// }
// }
//
// for (int x = 1; x < 10; x++) {
// for (int y = 1; y < 10; y++) {
// if ( a * x == b * y) {
// m= a * x;
// min = min < m ? min : m;
// }
//
// }
// }
// printf("最大公约数为:%d,最小公倍数为:%d",max,min);
// // 5.(***)一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高
//
// float h = 100.0;
// float s = 0;
// for (int n = 1; n <= 10; n++) {
// h = 0.5 * h;
// s = s + h ;
//
// }
// printf("第十次反弹%f米 ",h);
// printf("\n共经过:%f米",s + 100);
/*
6. (****)输入n,分别用*输出边长为n的实心菱形和空心菱形。
例如:n = 3时,输出:
*
***
*****
***
*
*
* *
* *
* *
*
*/
// int n = 0;
// printf("请输入n:\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");
// }
// for (int i = n - 1; i > 0; i--) {
// for (int j = 0; j < n - i; j++) {
// printf(" ");
// }
// for (int k = 0; k < 2 * i - 1; k++) {
// printf("*");
// }
// printf("\n");
// }
// 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");
// }
// for (int i = n - 1; i > 0; i--) {
// for (int j = 0; j < n - i; j++) {
// printf(" ");
// }
// printf("*");
// for (int k = 0; k < 2*(i - 1) - 1; k++) {
// printf(" ");
// }
// if (i != 1) {
// printf("*");
// }
// printf("\n");
// }
//7.(****)反复校验用户输入的生日,包括年、月、日。直到年、月、日都合法。
int year = 0, mouth = 0, day = 0;
while (1) {
printf("请输入年月日用逗号隔开\n");
scanf("%d,%d,%d",&year,&mouth,&day);
BOOL a = year >= 0 && year <= 2015;
BOOL b = mouth >= 1 && mouth <= 12;
BOOL m1 = mouth == 1 || mouth == 3 || mouth == 5 || mouth == 7 || mouth == 8 || mouth == 10 || mouth == 12;
BOOL m2 = mouth == 4 || mouth == 6 || mouth == 9 || mouth == 11;
BOOL m3 = mouth == 2;
if (m1) {
BOOL d1 = day >= 1 && day <=31;
if (a && b && d1) {
printf("输入合法");
break;
}else{
printf("输入不合法");
}
}
if (m2) {
BOOL d2 = day >= 1 && day <=30;
if (a && b && d2) {
printf("输入合法");
break;
}else{
printf("输入不合法");
}
}
if (m3) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
BOOL d3 = day >= 1 && day <= 29;
if (a && b && d3) {
printf("输入合法");
break;
}else{
printf("输入不合法");
}
}else{
BOOL d4 = day >= 1 && day <= 28;
if (a && b && d4) {
printf("输入合法");
break;
}else{
printf("输入不合法");
}
}
}
printf("\n");
}
return 0;
}