關於C語言迴圈結構的一些習題
//
// 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, constchar * 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");
}
return0;
}