ioS开发之c语言基础-循环结构
//
// main.m
// C3-循环结构
//
// Created by dllo on 15/10/7.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
//while 循环
// while (循环条件) {
// 循环体
// 循环增量
// }
// int a = 0;
// //循环条件- a< 3
// while (a < 3 ) {
// //循环体-要循环做的事情
// printf("做俯卧撑\n");
// // 循环增量不要忘记!!!
// a++;
// }
//从键盘输入一个数n,打印n变"做俯卧撑"
// int n = 0 ;
// scanf("%d",&n);
// while ( n > 0) {
// printf("做俯卧撑\n");
// n--;
// }
//
//
//用 while循环打印1-100
// int i = 1;
// while (i <= 100) {
// printf("%d ",i);
// i++;
// }
//找出1-100之间7的倍数,个数为7的数,十位为7的数,不是7的倍数并且不包含7的数
// int a = 1;
// while (a < 101) {
// if ( 0 == a % 7 ) {
// printf("%d ",a );
//
// }
// a++; //7的倍数
//
// if ( 7 == a % 10) {
// printf("%d ",a);
// // 个位数为7
// }
// if ( 7 == a / 10 ) {
// printf("%d ",a);
// //十位数为7
//
// }
// if ((7 != a / 10 ) && ( 7 != a % 10 ) && 7 != a % 7 ) {
// printf("%d ",a);
//
// }
// a--;
// 随机数
//arc4random() % (b - a + 1 ) + a ;
//功能;随机产生一个a 到 b 范围内的整数
// int ret = arc4random() % (30 -10 + 1) + 10;
// printf("%d",ret);
//用户从控制台输入n,用while打印n个随机数,范围是10到30
// int n = 0;
// scanf("%d",&n );
// while (n >0) {
// int ret = arc4random() % (30 -10 + 1) + 10;
// printf("%d ",ret);
// n--;
//
// }
//
// 输出较大随机数
// int n = 0;
//
// int max = 0 ;
// //int min = 70;
// scanf("%d",&n);
// while(n > 0 ){
// int ret = arc4random() % (70 - 30 + 1) + 30 ;
//
// printf("%d\n",ret);
//
// //判断大小 将较大的存入变量
// if(ret > max ){
// max = ret ;
// }
//
//
// n--;
// }
// printf("%d\n",max );
//
// break
// while(1){
// // 终端,退出循环
// break;
// printf( "循环\n");
//
// }
// int a = 0 ;
// while (a < 3){
// printf("循环\n ");
// //continue;
// // 不会往下走,提前进入下一次循环
// a++;
// break;
// }
// for ( 循环条件的定义及初始化;循环条件;循环增量){
// 循环体
// }
//找出1-100之间7的倍数,个数为7的数,十位为7的数,不是7的倍数并且不包含7的数
// for (int i = 1; i < 100 ; i ++) {
// printf("做俯卧撑\n");
// if ( 0 == i % 7) {
// printf("%d\n",i);
// }
// if ( 7 == i % 10) {
// printf("%d\n",i);
// }
// if ( 7 == i / 10) {
// printf("%d\n",i);
// }
//if (( 7 != i / 10) && ( 7 != i % 10) && ( 0 != i % 7)){
// printf("%d ",i);
// }
// }
// 1
// 1 2
// 1 2 3 图形的打印
//第一步
//1 2 3
// for (int i = 1; i < 4 ; i++) {
// printf("%d",i );
//第二步
// 1 2 3
// 1 2 3
// 1 2 3
//(1)=(2)
// for (int i = 1; i < 4 ; i++) {
// printf("%d ",i );
// }
// printf("\n");
// for (int i = 1; i < 4 ; i++) {
// printf("%d ",i );
// }
// printf("\n");
// for (int i = 1; i < 4 ; i++) {
// printf("%d ",i );
// }
// printf("\n");
// (2)=(1)
// 里面的for循环就是i 的那个循环控制的的是每行输出多少个数字,外面的for循环控制的是输出多少行. 先看最后一行,上面的行有残缺,或者按照一定形式输出,将里面的for循环用第一个j表示就可以,就可已按照 一定图案输出
// for (int j = 1 ; j < 5; j ++) {
// for (int i = 1; i < 5; i++) {
// printf("*" );
//
// }
// printf("\n");
// }
//
//
// }
// 99 乘法表
// for (int j = 1; j < 10; j ++) {
//
// for (int i = 1 ; i < j + 1 ; i ++) {
// printf("%d*%d=%2d ",i,j,i * j); //2是用来对齐用的
// }
// printf("\n");
// }
// 打印3个数字的组合可能
// for (int a = 1 ; a < 10; a++) {
// for (int b = 0; b < 10; b++) {
// for (int c = 0; c < 10; c++) {
// printf("%d%d%d ",a,b,c);
// // printf("%d ",a * 100 + b * 10 + c );
// }
// }
// printf("\n");
// }
int i = 0;
int j = 0;
int m = 0;
scanf("%d%d",&i,&j);
m = i > j ? j : i ;
while (m ) {
if ((i % m == 0)&&(j % m == 0)) {
printf("最大公约数%d",m );
break;
}
m--;
}
printf("最小公倍数:%d",i * j / m );
// 7.(****)反复校验用户输入的生日,包括年、月、日。直到年、月、日都合法。
// int year = 0;
// int month = 0;
// int day = 0;
// int i = 1;
// int j = 1;
// int k = 1;
// printf(" 请输入出生年月日:格式:年份-月份-日期\n");
// scanf("%d-%d-%d",&year,&month,&day);
// while ( i ){
//
//
// if ((year > 2015) || (year < 1905) ) {
// printf("输入无效,请重新输入");
// year = 1;
// i = year;
// } }
// while ( j ){
// if ((month > 12) || (month < 10) ) {
// printf("输入无效,请重新输入");
// month = 1;
// j = month;
//
// }
// while ( k ){
// if ((day > 30 ) || (day < 1) ) {
// printf("输入无效,请重新输入");
// day = 1;
// k = month;
//
// }
//
// }
// }
}
/* 1. (**)随机产生20个[10 , 100]的正整数,输出这些数以及他们中的最大数
int n = 0 ;
scanf("%d",&n );
int max = 0 ;
while (n > 0){
int ret = arc4random() % (100 - 10 + 1) + 10;
printf ("%d ",ret );
if (ret > max )
{
max = ret ;
}
n--;
}
printf("max:%d\n",max );
2. (**)编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个 各个位立方之和等于该整数的三位数。
int a = 0;
int b = 0;
int c = 0;
int count = 0;
for(a = 0;a < 10;a++)
for(b = 0;b < 10;b++)
for(c = 1;c < 10;c++)
if(a+b*10+c*100 == a * a * a + b * b * b + c * c * c){
count++;
printf("%d%d%d\n",c,b,a);
}
printf("%d\n",count);
3. (**)已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合
int a = 0;
int b = 0;
int c = 0;
for(a = 1;a < 10;a++)
for(b = 0;b < 10;b++)
for(c = 1;c < 10;c++)
if(1333 == a + b * 10 * 2 + c * 100 + a * 100 + c )
printf("%d%d%d\n",c,b,a);
4. (***)输入两个数,求最大公约数和最小公倍数。(用两种方法:辗转相除法和普通方法)
// 辗转相除法
int a = 0;
int b = 0;
int j = 0;
int r = 0;
scanf("%d%d",&a,&b);
if(a < b){
j = a;
a = b;
b = j;
}
r = a % b;
while (r) {
a = b;
b = r;
r = a % b;
}
printf("最大公约数:%d\n",b);
j = (a > b ? a : b) ;
while (!((j % a == 0 )&& (j % a == 0 )) ) {
j++;
}
printf("最小公倍数:%d",j);
printf("最小公倍数:%d",i * j / m ); 上面的代码有一点麻烦,公约数和公倍数之间是有关系的
//普通方法
int i = 0;
int j = 0;
int m = 0;
scanf("%d%d",&i,&j);
m = i > j ? j : i ;
while (m ) {
if ((i % m == 0)&&(j % m == 0)) {
printf("最大公约数%d",m );
break;
}
m--;
}
printf("最小公倍数:%d",i * j / m );
• (***)一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高
float i = 100;
float sum = 0;
int n = 0;
scanf("%d",&n );
for (int j = 0; j < n ; j++) {
// i = i / 2;
sum += i;
i = i / 2;
}
printf("共经过:%f第%d次反弹高:%f ",sum,n,i );
}
6. (****)输入n,分别用*输出边长为n的实心菱形和空心菱形。
例如:n = 3时,输出:
int n = 0;
int i = 0;
int j = 0;
scanf("%d",&n);
for (int i = 1 ; i < 2 * n ; i++) {
if (i <= n ) {
for (int j = 0; j < n - i ;j ++) {
printf(" ");
}
for (int j = 0; j < 2 * i - 1 ; j ++) {`
printf("*");
}
for (int j = 0; j > n - i ; j ++) {
printf(" ");
}
}else {
for (j=0; j < i % n; j++)printf(" ");
for (j=0; j< 2 * n - 1 - 2 * (i % n); j++)printf("*");
for (j=0; j< i % n; j++)printf(" ");
}
printf("\n");
}
7.(****)反复校验用户输入的生日,包括年、月、日。直到年、月、日都合法。
*/
// int a = 0;
// int b = 0;
// int c = 0;
// int n = 100;
//
//
// while (n < 1000) {
// a = n / 100;
// b = n /10 % 10 ;
// c = n % 100;
// if (n == a * a * a + b * b * b + c * c * c ) {
// printf("%d\n",n);
// n ++;
// }
//
// }
//#include<stdio.h>
// void fun(int m);
// main()
// {
// int m;
// printf("请输入一个三位数:"); //"水仙花数"是针对三位数的;
// scanf("%d",&m);
// fun(m);
// return 0;
// }
//
// void fun(int num)
// {
// int a,b,c,n;
// a=num/100;
// b=num/10-a*10;
// c=num-a*100-b*10;
// n=a*a*a+b*b*b+c*c*c;
// if(num==n)
// printf("%d是水仙花数!\n",num);
// else
// printf("%d不是水仙花数!\n",num);
// }
//#include "stdio.h"
// void main()
// {
// int n,a,b,c;
// n=100;
// while(n<1000)
// {
// a=n/100;
// b=n%100/10;
// c=n%10;
// if(n==a*a*a+b*b*b+c*c*c)
// printf("%d\n",n);
// n++;
// }
// printf("\n");
// }
//
//
// int a,b,c;
// for(int a = 1;a <= 9;a++)
// {
// for(int b=0;b<=9;b++)
// {
// for(int c=0;c<=9;c++)
// {
// if(a*100+b*10+c==a*a*a+b*b*b+c*c*c)
// {
// printf("%d,%d,%d\n",a,b,c);
// }
// }
// }
// }
//int main(void)
//{
// int m,n,i,j;
// printf("请输入两个正整数");
// scanf("%d%d",&m,&n);
// i=(m>n?n:m);
// while(!(m%i==0&&n%i==0))
// {
// i--;
// }
// printf("最大公约数:%d\n",i);
// j=(m>n?m:n);
// while(!(j%m==0&&j%n==0))
// {
// j++;
// }
// printf("最小公倍数:%d\n",j);
// return 0;
//}
//int main(int argc,const char *argv[]){
// int n,i,j;
// scanf("%d",&n);
// for (i=1; i<=2*n-1; i++) {
// if (i<=n) {//实心菱形上半部分
// //n-i空格
// for (j=0; j<n-i; j++)printf(" ");
// //2i-1 *
// for (j=0; j<2*i-1; j++)printf("*");
//
// //n-i kongge
// for (j=0; j<n-i; j++)printf(" ");
// }
//
// else {//实心下半部分
// //i%n kongge
// for (j=0; j<i%n; j++)printf(" ");
// //2*n-1-2(i%n)
// for (j=0; j<2*n-1-2*(i%n); j++)printf("*");
// //i%n kongge
//
// for (j=0; j<i%n; j++)printf(" ");
// }
//
// printf("\n");
// }
// for(i=1;i<=2*n-1;i++){//空心菱形上半部分
// if(i<=n){
// for(j=1;j<=n+i-2;j++)
// {
// if(j==n-i+1)printf("*");
// else printf(" ");
//
// }
// printf("*\n");}
// else {//空心菱形下半部分
// for(j=1;j<=2*n-i%n-2;j++)
// {
// if(j==i%n+1)printf("*");
// else printf(" ");
//
// }
// printf("*\n");}
//
//
// }
//
//
// return 0;
//}