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;
}