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;
}
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;
}
相关文章推荐
- c语言中的fgets函数
- C语言第四课练习
- struct和typedefstruct 的区别
- sscanf() 的作用
- C语言第五课练习
- 深度探索C语言函数可变长参数
- [c++] How many bytes do pointers take up?
- C++Primer学习:动态内存与智能指针(3)
- [原]《征服C指针》读书笔记
- 小小君的C语言第五课
- c语言几个点
- 【c++程序】虚函数的本质
- 【c++程序】 多态与虚函数
- [c++]类型转换
- OC语言---封装,继承,多态
- C++动态链接库DLL-非MFC动态库
- C++ 对象成员
- C++编程细节总结
- C/C++语言void及void指针深层探索
- c语言中的#号和##号的作用