您的位置:首页 > 编程语言 > C语言/C++

C语言第三课练习

2015-10-14 20:19 435 查看
#import <Foundation/Foundation.h>

int main(int argc,
const char * argv[]) {

// 1.
(**)随机产生20个[10 , 100]的正整数,输出这些数以及他们中的最大数

// int max = 0;

// for (int i = 0; i < 20; i++) {

// int ran = arc4random()%(100-10+1)+10;

// if (ran > max) {

// max = ran;

// }

// printf("%d ",ran);

// }

// printf("\nmax = %d",max);

// 2.
(**)编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个
各个位立方之和等于该整数的三位数。

// int a = 0 , b = 0 , c = 0 ,count = 0;

// for (int i = 100; i <1000 ; i++) {

// a = i / 100;

// b = i % 100 / 10;

// c = i % 10;

// if (a * a * a + b * b * b + c * c * c == i) {

// printf("%d ",i);

// count++;

// }

// }

// printf("\n总个数为:%d",count);

// 3.
(**)已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合

// int a = 0 , b = 0 , c = 0 ,d = 0;

// for (int i = 100; i <= 500 ; i++) {

// a = i / 100;

// b = i % 100 / 10;

// c = i % 10;

// d = c * 100 + b * 10 + a;

// if (i + d ==1333) {

// printf("%d ",i);

// }

// }

// 4.
(***)输入两个数,求最大公约数和最小公倍数。

// int a = 0 , b = 0 , max = 1 ,min = 0;

// printf("输入两个数:\n");

// scanf("%d,%d",&a,&b);

// for (int i = 1; i < a; i++) {

// if ((a % i == 0)&&(b % i == 0)&&(i > max)) {

// max = i;

// }

// }

// min = a * b / max;

// printf("最大公约数:%d
最小公倍数:%d",max,min);

// 5.
(***)一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高

// float sum = 100.0 , high = 100.0;

// for (int i = 1; i < 10; i++) {

// high = high / 2;

// sum += high * 2;

// }

// high = high / 2;

// printf("共经过%.2f米,第十次反弹%.2f米高",sum,high);

// 6.
(****)输入n,分别用*输出边长为n的实心菱形和空心菱形。

//实心菱形

// printf("输入n:\n");

// int n = 0;

// scanf("%d",&n);

// for (int i = 1; i <= n; i++) {

// for (int j = n - i; j > 0 ; j--) {

// printf(" ");

// }

// for (int k = 1; k < 2 * i ; k++) {

// printf("*");

// }

// printf("\n");

// }

// for (int i = 1; i < n ; i++) {

// for (int j = 0; j < i ; j++) {

// printf(" ");

// }

// for (int k = 1; k < 2 * (n - i) ; k++) {

// printf("*");

// }

// printf("\n");

// }

//空心菱形

// printf("输入n:\n");

// int n = 0;

// scanf("%d",&n);

// for (int i = 1; i <= n; i++) {

// for (int j = n - i; j > 0 ; j--) {

// printf(" ");

// }

// printf("*");

// for (int j = 0; j < 2 * i - 3 ; j++) {

// printf(" ");

// }

// if(i > 1){

// printf("*");

// }

// printf("\n");

//

// }

//

// for (int i = 1; i < n ; i++) {

// for (int j = 0; j < i ; j++) {

// printf(" ");

// }

// printf("*");

//

// for (int j = 2 * n - 2 * i - 3; j > 0 ; j--) {

// printf(" ");

// }

// if(i < n - 1){

// printf("*");

// }

// printf("\n");

// }

// 7.(****)反复校验用户输入的生日,包括年、月、日。直到年、月、日都合法

printf("输入生日,以逗号隔开:\n");

int year = 0, mouth =
0,day = 0;

BOOL birth = YES;

do{

BOOL birth = YES;

scanf("%d,%d,%d",&year,&mouth,&day);

if (year > 2015 || year <
0) {
birth =
NO;

printf("年份输入错误");
}

if (mouth < 0 || mouth >
12) {
birth =
NO;

printf("月份输入错误");
}

switch (mouth) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

if(day < 0 || day >31){
birth =
NO;

printf("日输入错误");
}

break;

case 4:

case 6:

case 9:

case 11:

if(day < 0 || day >30){
birth =
NO;

printf("日输入错误");
}

break;

case 2:

if (year % 400 ==
0 || (year % 4 ==
0 && year % 100 !=
0)) {

if(day < 0 || day >29){
birth =
NO;

printf("%d是闰年,输入错误",year);
}
}else{

if(day < 0 || day >28){
birth =
NO;

printf("%d不是闰年,输入错误",year);
}
}

break;

default:

break;
}

if (birth == YES) {

printf("输入正确!");
}else{

printf("输入错误!\n请重新输入:\n");
}
}while(birth ==
YES);

return
0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: