1、do~while循环:
一般用于菜单类程序
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
int x = 0;
do
{
printf("%d ", x);
x++;
}while (x < 10);
printf("\n");
double money = 0;
NSLog(@"请输入您要取的钱数:");
do
{
scanf("%lf", &money);
if (money <= 0)
{
NSLog(@"输入错误,请重新输入:");
}
}while (money <= 0);
NSLog(@"您已经获得了¥%.2lf元", money);
int fun;
do
{
NSLog(@"1.打开文件");
NSLog(@"2.保存文件");
NSLog(@"3.退出");
NSLog(@"请选择:");
scanf("%d", &fun);
;//处理菜单的功能
}while (fun != 3);
}
return 0;
}
2、三种循环的区别
判断先后的区别:
for、while是先判断,后执行循环体
do~while是先执行循环体,后判断
用途:
for:用于固定次数的循环
while:用于不固定次数的循环
do~while:用于菜单类程序
3、break语句:
终止这个循环
#import <Foundation/Foundation.h>
int main()
{
@autoreleasepool {
for (int i = 0; i < 10; i++)
{
printf("%d ", i);
if (i == 5)
{
break;
}
}
printf("\n");
double money = 0;
NSLog(@"请输入您要取的钱数:");
while (1)
{
scanf("%lf", &money);
if (money > 0)
{
break;
}
NSLog(@"输入有误,请重新输入");
}
NSLog(@"您已经获得了¥%.2lf元", money);
}
return 0;
}
4、continue语句:
结束本次循环
#import <Foundation/Foundation.h>
int main()
{
@autoreleasepool {
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
{
continue;
}
printf("%d ", i);
}
printf("\n");
for (int i = 1; i <= 5; i++)
{
if (i % 2)
{
printf("*");
}
else//*#*#*#$
{
continue;
}
printf("#");
}
printf("$\n");
//打印10以内的正整数,但不打印5
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
continue;
}
printf("%d ", i);
}
printf("\n");
}
return 0;
}
5、输出缓冲区
#import <Foundation/Foundation.h>
int main()
{
@autoreleasepool {
NSLog(@"等5秒");
for (int i = 0; i < 10; i++)
{
printf("%d ", i);
fflush(0);
}
sleep(5);
printf("\n");
for (int i = 0; i < 10; i++)
{
printf("%d ", i);
sleep(1);
fflush(0);
}
printf("\n");
}
return 0;
}
6、循环嵌套:
一个循环的循环体内有另一个循环
#import <Foundation/Foundation.h>
int main()
{
@autoreleasepool {
for (int j = 0; j < 4; j++)//行数
{
for (int i = 0; i < 10; i++)//一行中打印多少列
{
printf("*");
}
printf("\n");
}
/*
**
***
****
*****/
for (int i = 0; i < 5; i++)
{
for (int j = 0; j <= i; j++)
{
printf("*");
}
printf("\n");
}
/*----------
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
...
----------*/
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
printf("%dx%d=%d \t", j, i, i * j);
}
printf("\n");
}
/*-----------
*
***
*****
*******
-----------*/
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 3 - i; j++)
{
printf(" ");
}
for (int j = 0; j < 2 * i + 1; j++)
{
printf("*");
}
printf("\n");
}
}
return 0;
}
7、数组
什么是数组:一组数,即多个变量的集合
下标:用于区分数组元素的方法
数组的初始化(3种情况+1种C99新方法,day06-08)
数组名与数组首地址
#import <Foundation/Foundation.h>
int main()
{
@autoreleasepool {
int x = 10;
int a[10] = {1,2,3,4,5,6,7,8,9,0};
for (int i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
printf("\n");
int b[] = {1,2,3,4,5};//数组长度等于初始化元素的个数时,可以不写数组长度
for (int i = 0; i < 5; i++)
{
printf("%d ", b[i]);
}
printf("\n");
int c[10] = {1,2,3,4,5};//数组长度大于初始化元素的个数时,多余的元素会被自动清0
for (int i = 0; i < 10; i++)
{
printf("%d ", c[i]);
}
printf("\n");
int e[10] = {0};
int f[10] = {};
for (int i = 0; i < 10; i++)
{
printf("%d ", e[i]);
}
printf("\n");
int d[5] = {1,2,3,4,5,6,7};//数组长度小于初始化元素的个数时,多余的会被直接丢弃
for (int i = 0; i < 7; i++)
{
printf("%d ", d[i]);
}
printf("\n");
//C99标准新增的方法
int g[5] = {[2] = 20, [0] = 5, [4] = 40};//可以指定元素的初始化,未指定的元素将被清0
for (int i = 0; i < 5; i++)
{
printf("%d ", g[i]);
}
printf("\n");
int h[] = {[2] = 20, [6] = 50, [0] = 10};
int size = sizeof(h) / sizeof(h[0]);
NSLog(@"%d", size);
for (int i = 0; i < size; i++)
{
printf("%d ", h[i]);
}
printf("\n");
//定义一个数组,长度为10,并对其进行初始化。将数组内的所有元素都向前移动一个位置,第0个元素移动到最后一个元素的位置
int k[10] = {1,2,3,4,5,6,7,8,9,0};
int temp = k[0];
for (int i = 0; i < 9; i++)
{
k[i] = k[i + 1];
}
k[9] = temp;
for (int i = 0; i < 10; i++)
{
printf("%d ", k[i]);
}
printf("\n");
}
return 0;
}
数组的赋值与拷贝
#import <Foundation/Foundation.h>
int main()
{
@autoreleasepool {
int a[5];
NSLog(@"%lu", sizeof(a));//a被称为数组名
NSLog(@"%lu", sizeof(int[5]));//int[5]是数组a的数据类型
a[0] = 10;//习惯上,将数组中的每个变量称为一个元素
a[1] = 20;
for (int i = 0; i < 5; i++)
{
a[i] = (i + 1) * 10;
}
for (int i = 0; i < 5; i++)
{
NSLog(@"请输入第%d个学生的成绩", i + 1);
scanf("%d", &a[i]);
}
for (int i = 0; i < 5; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
return 0;
}
思考练习
1、打印100以内的所有数,但不包括7、7的倍数和带7的数;
2、创建一个长度为10的数组,每个元素是一个0~99之间的随机数,要求找出这10个随机数中最大的一个,并输出。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
解析:
#import <Foundation/Foundation.h>
int main()
{
@autoreleasepool {
srand((unsigned)time(0));
for (int i = 0; i < 100; i++)
{
if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7)
{
continue;
}
printf("%d ", i);
}
printf("\n");
int a[10];
for (int i = 0; i < 10; i++)
{
a[i] = rand() % 100;
}
int max = a[0];
for (int i = 1; i < 10; i++)
{
if (max < a[i])
{
max = a[i];
}
}
for (int i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
printf("\n");
printf("max=%d\n", max);
}
return 0;
}