//
// main.m
// CLesson_练习
//
// Created by lanou3g on 15/7/28.
// Copyright (c) 2015年 com.lanou3g. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
//作业1. 随机产生20个[10, 100]的整数,输出这些数以及他们中得最大数
int count1= 0;
int maxNum = 0;
printf("产生的随机数为:\n");
while (count1< 20) {
int tempNum = arc4random() % (100 - 10 +1 ) +10;
printf("%4d",tempNum);
if (tempNum > maxNum) {
maxNum = tempNum;
}
count1 ++;
}
printf("\n 最大数为:%2d\n",maxNum);
printf("---------------------------------------作业1完\n\n\n");
//作业2.编程将所有"水仙花数"打印出来, 并打印其总个数."水仙花数"是一个 各个位立方之和等于该数的三位数.
int basicUnit = 0;
int tenPlace = 0;
int hundredNum = 0;
int countN = 0;
for (int i = 100; i <= 1000; i ++ ) {
basicUnit = i % 10;
hundredNum = i / 100;
tenPlace =( i % 100 ) /10;
int cubeSum = pow(basicUnit, 3) +pow(hundredNum, 3) + pow(tenPlace, 3);
if ( cubeSum == i ) {
printf("%5d 是水仙花数.\n",i);
countN ++;
}
}
printf("一共有%d个水仙花数.\n",countN);
printf("---------------------------------------作业2完\n\n\n");
//作业3:已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合
for (int i = 0; i <= 9; i ++) {
for (int j = 0; j <= 9; j ++) {
for (int k = 0; k <= 9; k ++) {
if (101 * ( i + k ) + 20 * j ==1333 ) {
printf("a=%d b=%d c=%d\n",i,j,k);
}
}
}
}
printf("---------------------------------------作业3完\n\n\n");
//作业4:输入两个数,求最大公约数和最小公倍数。(用两种方法:辗转相除法和普通方法)
// ******方法一:辗转相除法:
int uNum = 0 ;
int vNum = 0 ;
int rNum = 1 ;
int count2 = 1 ;
int mNum = 0 ;
int maxDivisor = 0;
int minMuliple = 0;
printf("请输入两个整数,回车结束:\n") ;
scanf("%d%d",&uNum,&vNum);
mNum = uNum * vNum ;
// 除数比被除数大,两数交换
if (uNum > vNum) {
uNum = uNum ^ vNum ;
vNum = uNum ^ vNum ;
uNum = vNum ^ uNum ;
}
rNum = vNum % uNum ;
//普通方法:
for (int i = vNum; i > 0 ; i --) {
if (vNum % i == 0 && uNum % i == 0) {
printf("最大公约数为:%d\n",i);
maxDivisor = i;
break;
}
}
minMuliple = uNum * vNum / maxDivisor;
printf("最小公倍数为:%d\n",minMuliple);
// //辗转相除求公约数
// while (rNum != 0) {
//
// vNum = uNum ;
// uNum = rNum ;
// printf("第%d次辗转相除的余数为:%d\n",count2,rNum);
// rNum = vNum % uNum ;
// count2 ++ ;
//
// }
// if (uNum == 1)
// printf("呀!这两个整数互质!\n") ;
// else
// printf("这两个整数的公约数为:%d\n",uNum) ;
// // 求最小公倍数
// mNum = mNum / uNum ;
//
// printf("这两个整数的最小公倍数为:%d\n",mNum);
//
printf("---------------------------------------作业4完\n\n\n");
//作业5: 一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高
float height = 100;
float sumHeight = 0;
for (int i = 0 ; i < 10 ; i ++) {
sumHeight += height;
height *= 0.5;
}
printf("在第十次落地是,共经过%.2f米\n.",sumHeight);
printf("第十次反弹高度为:%.2f.\n", height );
printf("---------------------------------------作业5完\n\n\n");
//作业6:输入n,分别用*输出边长为n的实心菱形和空心菱形。
int n = 0;
printf("输入你要打印棱形的边长:");
scanf("%d",&n);
for (int i = 0; i <= n + 1 ; i ++) {
for (int j = 0; j < n - i + 1; j ++) {
printf(" ");
}
for (int k = 0; k < 2*i-1; k ++) {
printf("*");
}
printf("\n");
}
for (int i = 0; i <= n ; i ++) {
for (int j = 0; j <= i; j ++) {
printf(" ");
}
for (int k = 0; k < 2*(n-2) - 2*i + 3; k++ ) {
printf("*");
}
printf("\n");
}
for (int i = 0; i <= n; i ++) {
for (int j = 0; j < n - i; j ++) {
printf(" ");
}
for (int l = 0; l < 1; l++) {
printf("*");
}
for (int k = 0; k < 2*i-1; k ++) {
printf(" ");
}
for (int m = 0; m< 1; m ++) {
if (i > 0) {
printf("*");
}
}
printf("\n");
}
for (int i = 0; i <= n-1; i ++) {
for (int j = 0; j <= i; j ++) {
printf(" ");
}
for (int l = 0; l < 1; l++) {
printf("*");
}
for (int k = 0; k < 2*(n-2) - 2*i +1 ; k++ ) {
printf(" ");
}
if (i < n - 1) {
for (int l = 0; l < 1; l++) {
printf("*");
}
}
printf("\n");
}
printf("---------------------------------------作业6完\n\n\n");
//作业7:反复校验用户输入的生日,包括年、月、日。直到年、月、日都合法。
BOOL b = NO;
int birthdayYear = 0;
int birthdayMonth = 0;
int birthday = 0;
while (!b) {
printf("请输入正确的生日:\n");
scanf("%d %d %d",&birthdayYear,&birthdayMonth,&birthday);
if (birthdayYear == 1991 && birthdayMonth == 5 && birthday == 1) {
b = YES;
}
}
printf("你的身份以确定.\n") ;
printf("---------------------------------------作业7完\n\n\n");
return 0;
}
// main.m
// CLesson_练习
//
// Created by lanou3g on 15/7/28.
// Copyright (c) 2015年 com.lanou3g. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
//作业1. 随机产生20个[10, 100]的整数,输出这些数以及他们中得最大数
int count1= 0;
int maxNum = 0;
printf("产生的随机数为:\n");
while (count1< 20) {
int tempNum = arc4random() % (100 - 10 +1 ) +10;
printf("%4d",tempNum);
if (tempNum > maxNum) {
maxNum = tempNum;
}
count1 ++;
}
printf("\n 最大数为:%2d\n",maxNum);
printf("---------------------------------------作业1完\n\n\n");
//作业2.编程将所有"水仙花数"打印出来, 并打印其总个数."水仙花数"是一个 各个位立方之和等于该数的三位数.
int basicUnit = 0;
int tenPlace = 0;
int hundredNum = 0;
int countN = 0;
for (int i = 100; i <= 1000; i ++ ) {
basicUnit = i % 10;
hundredNum = i / 100;
tenPlace =( i % 100 ) /10;
int cubeSum = pow(basicUnit, 3) +pow(hundredNum, 3) + pow(tenPlace, 3);
if ( cubeSum == i ) {
printf("%5d 是水仙花数.\n",i);
countN ++;
}
}
printf("一共有%d个水仙花数.\n",countN);
printf("---------------------------------------作业2完\n\n\n");
//作业3:已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合
for (int i = 0; i <= 9; i ++) {
for (int j = 0; j <= 9; j ++) {
for (int k = 0; k <= 9; k ++) {
if (101 * ( i + k ) + 20 * j ==1333 ) {
printf("a=%d b=%d c=%d\n",i,j,k);
}
}
}
}
printf("---------------------------------------作业3完\n\n\n");
//作业4:输入两个数,求最大公约数和最小公倍数。(用两种方法:辗转相除法和普通方法)
// ******方法一:辗转相除法:
int uNum = 0 ;
int vNum = 0 ;
int rNum = 1 ;
int count2 = 1 ;
int mNum = 0 ;
int maxDivisor = 0;
int minMuliple = 0;
printf("请输入两个整数,回车结束:\n") ;
scanf("%d%d",&uNum,&vNum);
mNum = uNum * vNum ;
// 除数比被除数大,两数交换
if (uNum > vNum) {
uNum = uNum ^ vNum ;
vNum = uNum ^ vNum ;
uNum = vNum ^ uNum ;
}
rNum = vNum % uNum ;
//普通方法:
for (int i = vNum; i > 0 ; i --) {
if (vNum % i == 0 && uNum % i == 0) {
printf("最大公约数为:%d\n",i);
maxDivisor = i;
break;
}
}
minMuliple = uNum * vNum / maxDivisor;
printf("最小公倍数为:%d\n",minMuliple);
// //辗转相除求公约数
// while (rNum != 0) {
//
// vNum = uNum ;
// uNum = rNum ;
// printf("第%d次辗转相除的余数为:%d\n",count2,rNum);
// rNum = vNum % uNum ;
// count2 ++ ;
//
// }
// if (uNum == 1)
// printf("呀!这两个整数互质!\n") ;
// else
// printf("这两个整数的公约数为:%d\n",uNum) ;
// // 求最小公倍数
// mNum = mNum / uNum ;
//
// printf("这两个整数的最小公倍数为:%d\n",mNum);
//
printf("---------------------------------------作业4完\n\n\n");
//作业5: 一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高
float height = 100;
float sumHeight = 0;
for (int i = 0 ; i < 10 ; i ++) {
sumHeight += height;
height *= 0.5;
}
printf("在第十次落地是,共经过%.2f米\n.",sumHeight);
printf("第十次反弹高度为:%.2f.\n", height );
printf("---------------------------------------作业5完\n\n\n");
//作业6:输入n,分别用*输出边长为n的实心菱形和空心菱形。
int n = 0;
printf("输入你要打印棱形的边长:");
scanf("%d",&n);
for (int i = 0; i <= n + 1 ; i ++) {
for (int j = 0; j < n - i + 1; j ++) {
printf(" ");
}
for (int k = 0; k < 2*i-1; k ++) {
printf("*");
}
printf("\n");
}
for (int i = 0; i <= n ; i ++) {
for (int j = 0; j <= i; j ++) {
printf(" ");
}
for (int k = 0; k < 2*(n-2) - 2*i + 3; k++ ) {
printf("*");
}
printf("\n");
}
for (int i = 0; i <= n; i ++) {
for (int j = 0; j < n - i; j ++) {
printf(" ");
}
for (int l = 0; l < 1; l++) {
printf("*");
}
for (int k = 0; k < 2*i-1; k ++) {
printf(" ");
}
for (int m = 0; m< 1; m ++) {
if (i > 0) {
printf("*");
}
}
printf("\n");
}
for (int i = 0; i <= n-1; i ++) {
for (int j = 0; j <= i; j ++) {
printf(" ");
}
for (int l = 0; l < 1; l++) {
printf("*");
}
for (int k = 0; k < 2*(n-2) - 2*i +1 ; k++ ) {
printf(" ");
}
if (i < n - 1) {
for (int l = 0; l < 1; l++) {
printf("*");
}
}
printf("\n");
}
printf("---------------------------------------作业6完\n\n\n");
//作业7:反复校验用户输入的生日,包括年、月、日。直到年、月、日都合法。
BOOL b = NO;
int birthdayYear = 0;
int birthdayMonth = 0;
int birthday = 0;
while (!b) {
printf("请输入正确的生日:\n");
scanf("%d %d %d",&birthdayYear,&birthdayMonth,&birthday);
if (birthdayYear == 1991 && birthdayMonth == 5 && birthday == 1) {
b = YES;
}
}
printf("你的身份以确定.\n") ;
printf("---------------------------------------作业7完\n\n\n");
return 0;
}