1、while循環(huán)
#include <stdio.h>
int main()
{
/*
* if(條件表達(dá)式){
* 條件滿足才執(zhí)行的代碼
* }
* 特點(diǎn): 只有條件滿足才會(huì)執(zhí)行if后面{}中的內(nèi)容,
* 并且if后面{}中的內(nèi)容只會(huì)被執(zhí)行一次
*
* while(條件表達(dá)式){
* 條件滿足才執(zhí)行的代碼
* }
* 特點(diǎn): 只有條件滿足才會(huì)執(zhí)行while后面{}中的內(nèi)容,
* 并且執(zhí)行完之后會(huì)再次判斷條件表達(dá)式是否為真, 如果為真會(huì)再次執(zhí)行while后面{}中的內(nèi)容
* 重復(fù)上述步驟, 知道條件表達(dá)式不為真為止
*
* 應(yīng)用場(chǎng)景:
* 在企業(yè)開(kāi)發(fā)中, 但凡發(fā)現(xiàn)某些代碼是需要重復(fù)執(zhí)行的就要想到循環(huán)結(jié)構(gòu), 就可以使用while
*/
// printf("發(fā)射子彈\n");
// printf("發(fā)射子彈\n");
// printf("發(fā)射子彈\n");
// printf("發(fā)射子彈\n");
// printf("發(fā)射子彈\n");
// printf("發(fā)射子彈\n");
// printf("發(fā)射子彈\n");
// printf("發(fā)射子彈\n");
// printf("發(fā)射子彈\n");
// printf("發(fā)射子彈\n");
// 1.先編寫(xiě)循環(huán)結(jié)構(gòu)的基本格式
// 2.將需要重復(fù)執(zhí)行的代碼拷貝到循環(huán)體重({}里面我們就稱(chēng)之為循環(huán)體)
// 3.確定循環(huán)結(jié)束的條件
int num = 0;
while(num < 10){
printf("發(fā)射子彈%i\n", num);
num++; // 控制循環(huán)結(jié)束的語(yǔ)句
}
return 0;
}
#include <stdio.h>
int main()
{
/*
* 需求: 1 .. n的和
* 1 + 2 + 3 + 4 + 5
0 + 1
* 1 + 2
* 3 + 3
* 6 + 4
* 10 + 5
* 規(guī)律:
* 1.每一次都是上一次的和加上當(dāng)前的一個(gè)數(shù)
* 2.當(dāng)前加上的數(shù)是一個(gè)遞增的數(shù)
*/
// 定義一個(gè)變量保存用戶(hù)輸入的n
int n = 0;
// 提示用戶(hù)如何輸入
printf("請(qǐng)輸入一個(gè)正整數(shù), 以回車(chē)結(jié)束\n");
// 接收用戶(hù)輸入的數(shù)據(jù)
scanf("%i", &n);
// 1.定義一個(gè)變量保存每次相加的和
int sum = 0;
// 2.定義一個(gè)變量保存每次加上的數(shù)
int num = 1;
// 3.用上一次的和加上當(dāng)前的數(shù)
/*
sum = sum + num; // sum = 0 + 1
num++; // 2
sum = sum + num; // sum = 1 + 2
num++; // 3
sum = sum + num; // sum = 3 + 3
num++; // 4
sum = sum + num; // sum = 6 + 4
num++; // 5
sum = sum + num; // sum = 10 + 5
num++; // 6
// int res = 1 + 2 + 3 + 4 + 5;
// printf("res = %i\n", res);
*/
// 1.編寫(xiě)循環(huán)的固定格式
// 2.將重復(fù)執(zhí)行的代碼拷貝到循環(huán)體中
// 這里使用了編程開(kāi)發(fā)中的一種思想: 累加思想
// 累加實(shí)現(xiàn), 就是定義變量記錄每次的和
while(num <= n){
sum = sum + num;
num++;
}
printf("sum = %i\n", sum);
return 0;
}
#include <stdio.h>
int main()
{
/*
* 需求: 要求統(tǒng)計(jì)1~n中有多少個(gè)數(shù)能被7整除
*/
// 定義變量記錄能被7整除的數(shù)的個(gè)數(shù)
int count = 0;
// 1.定義變量保存用戶(hù)輸入的數(shù)據(jù)
int n = -1; // 5
// 2.提示用戶(hù)如何輸入
printf("請(qǐng)輸入一個(gè)正整數(shù), 以回車(chē)結(jié)束\n");
// 3.接收用戶(hù)輸入的數(shù)據(jù)
scanf("%i", &n);
// 4.拿到1~n中的每一個(gè)數(shù)
int num = 1;
while(num <= n){ // 6 <= 5
// printf("num = %i\n", num); // 1 2 3 4 5
// 這里使用了編程開(kāi)發(fā)中的一種思想: 計(jì)數(shù)器實(shí)現(xiàn)
if(0 == (num % 7)){
count++;
}
num++;
}
printf("count = %i\n", count);
return 0;
}
#include <stdio.h>
int main()
{
// 1.while循環(huán)和if一樣, 可以省略大括號(hào)
// while循環(huán)和if一樣, 省略大括號(hào)時(shí), 只能控制緊隨其后的那條語(yǔ)句
// while循環(huán)和if一樣, 省略大括號(hào)時(shí), 不能定義新的變量
// while循環(huán)和if一樣, 任何數(shù)值都有真假性
// while(0)
// printf("被控制的語(yǔ)句\n");
// printf("不被控制的語(yǔ)句\n");
// while(0)
// int num = 666;
// printf("不被控制的語(yǔ)句\n");
// 2.while循環(huán)和if一樣, 不用書(shū)寫(xiě)分號(hào)
// while循環(huán)和if一樣, 分號(hào)不能再寫(xiě)()和{}之間
// while(0);{
// printf("被控制的語(yǔ)句\n");
// }
// 3.while循環(huán)和if一樣, 可以嵌套其它合法代碼
// if(1){
// if(0){
// }
// switch (1) {
// case 1:
// break;
// default:
// break;
// }
// while(0){
// }
// }
while(0){
while(0){
while(0){
if(0){
}
switch (1) {
case 1:
break;
default:
break;
}
}
}
}
return 0;
}
#include <stdio.h>
int main()
{
/*
* while(條件表達(dá)式){
* 被控制的語(yǔ)句;
* }
* 特點(diǎn): 會(huì)先判斷條件是否滿足, 滿足就執(zhí)行{}中的代碼
*
* do{
* 被控制的語(yǔ)句;
* }while(條件表達(dá)式);
* 特點(diǎn): 不會(huì)像判斷條件是否滿足, 會(huì)先執(zhí)行一次{}中的代碼, 然后再判斷條件
*/
// while和dowhile的區(qū)別:
// while會(huì)先判斷條件再執(zhí)行循環(huán)體
// dowhile會(huì)先執(zhí)行循環(huán)體再判斷條件
// while(0){
// printf("被控制的語(yǔ)句\n");
// }
// do{
// printf("被控制的語(yǔ)句\n");
// }while (0);
// 在大部分的情況下while和dowhile是可以互換的
// 在企業(yè)開(kāi)發(fā)中如果能夠互換, 一般我們會(huì)使用while
// int num = 1;
// while(num <=5){
// printf("num = %i\n", num);
// num++;
// }
// int num = 1;
// do{
// printf("num = %i\n", num);
// num++;
// }while(num <=5);
// dowhile的應(yīng)用場(chǎng)景
// 驗(yàn)證
// 1.定義變量保存用戶(hù)輸入的數(shù)據(jù)
int num = -1;
// 4.排除非法數(shù)據(jù)
// if(num < 1 || num > 3){
// printf("非法數(shù)字\n");
// }else{
// printf("輸入的數(shù)據(jù)是%i\n", num);
// }
// 1.編寫(xiě)循環(huán)的固定格式
// 2.將需要重復(fù)執(zhí)行的代碼放到{}中
// 3.確定循環(huán)結(jié)束條件
// while(num < 1 || num > 3){
// // 2.提示用戶(hù)如何輸入
// printf("請(qǐng)輸入一個(gè)1~3的整數(shù), 以回車(chē)結(jié)束\n");
// // 3.接收用戶(hù)輸入的判斷
// scanf("%i", &num);
// }
do{
// 2.提示用戶(hù)如何輸入
printf("請(qǐng)輸入一個(gè)1~3的整數(shù), 以回車(chē)結(jié)束\n");
// 3.接收用戶(hù)輸入的判斷
scanf("%i", &num);
}while(num < 1 || num > 3);
printf("輸入的數(shù)據(jù)是%i\n", num);
return 0;
}
1.1完沪、 whlie小練習(xí)
#include <stdio.h>
int main()
{
/*
* : 用while循環(huán)實(shí)現(xiàn)如下功能
*
* 1. 輸出
* ****
* ****
* ****
*
* 2.輸出
* ****
* ***
* **
* *
*
* 3.輸出
* *
* **
* ***
* ****
*
* 4.輸出
* ---*
* --**
* -***
*
* 5.輸出99乘法表
*/
return 0;
}
2戏罢、for循環(huán)
#include <stdio.h>
int main()
{
/*
* while(條件表達(dá)式){
* 被控制的語(yǔ)句;
* }
*
* for(初始化表達(dá)式;條件表達(dá)式;循環(huán)后增量表達(dá)式){
* 被控制的語(yǔ)句;
* }
* 初始化表達(dá)式的作用:
* 循環(huán)執(zhí)行的過(guò)程中, 初始化表達(dá)式會(huì)有且只會(huì)被執(zhí)行一次
* 條件表達(dá)式的作用:
* 要想執(zhí)行循環(huán)體, 那么條件表達(dá)式必須為真
* 每次執(zhí)行完循環(huán)體, 都會(huì)再次判斷條件表達(dá)式是否為真
* 循環(huán)后增量表達(dá)式的作用:
* 第一次執(zhí)行循環(huán)體的時(shí)候不會(huì)執(zhí)行循環(huán)后增量表達(dá)式
* 只有循環(huán)體執(zhí)行完之后才會(huì)執(zhí)行循環(huán)后增量表達(dá)式
*
* for循環(huán)的執(zhí)行流程
* 1.執(zhí)行一次初始化表達(dá)式
* 2.判斷條件表達(dá)式是否為真
* 3.如果條件表達(dá)式為真, 執(zhí)行循環(huán)體
* 4.執(zhí)行完循環(huán)體, 執(zhí)行循環(huán)后增量表達(dá)式
* 5.重復(fù)2~4步
*/
// int num = 0;
// while(num < 10){
// printf("發(fā)射子彈%i\n", num);
// num++;
// }
// 1.編寫(xiě)循環(huán)的固定格式
// 2.將需要重復(fù)執(zhí)行的代碼放到{}中
// 3.控制循環(huán)如何結(jié)束
// int num = 0;
for(int num = 0;num < 10; num++){
printf("發(fā)射子彈%i\n", num);
// num++;
}
return 0;
}
#include <stdio.h>
int main()
{
// 如果利用while循環(huán)實(shí)現(xiàn)發(fā)射子彈, 我們講控制循環(huán)結(jié)束的變量, 定義在了while循環(huán)的外面
// 特點(diǎn): 用于控制循環(huán)的變量, 在循環(huán)內(nèi)部和循環(huán)外部都可以使用
// int num = 0;
// while(num < 10){
// printf("發(fā)射子彈%i\n", num);
// num++;
// }
// printf("num = %i\n", num);
// 如果利用for循環(huán)實(shí)現(xiàn)發(fā)射子彈, 我們將控制循環(huán)結(jié)束的變量, 定義在了for循環(huán)里面
// 特點(diǎn): 用于控制循環(huán)的變量, 只能在循環(huán)里面使用, 不能在循環(huán)外面使用
for(int num = 0;num < 10; num++){
printf("發(fā)射子彈%i\n", num);
}
// printf("num = %i\n", num);
// 總結(jié): 如果用于控制循環(huán)的變量, 在循環(huán)結(jié)束之后還需使用, 那么就使用while循環(huán)
// 如果用于控制循環(huán)的變量, 在循環(huán)結(jié)束之后不需要使用, 那么就使用for循環(huán)
// 規(guī)則: 在企業(yè)開(kāi)發(fā)中, 一般情況下, 能用for就用for
return 0;
}
#include <stdio.h>
int main()
{
/*
// 1.for循環(huán)和while循環(huán)一樣, 可以省略大括號(hào)
// 如果for循環(huán)省略了大括號(hào), 和while循環(huán)一樣, 只能控制緊隨其后的那條語(yǔ)句
// 如果for循環(huán)省略了大括號(hào), 和while循環(huán)一樣, 不能定義行的變量
// 和while循環(huán)一樣, 任何數(shù)值都有真假性
// for(;0;)
// printf("被控制的語(yǔ)句\n");
// printf("不被控制的語(yǔ)句\n");
// for(;0;)
// int num = 666;
// 2.還是和while一樣, for循環(huán)可以不寫(xiě)分號(hào)
// 如果寫(xiě)了分號(hào), 一定不能寫(xiě)在()和{}之間
// for(;0;);{
// printf("被控制的語(yǔ)句\n");
// }
*/
// 3.for作用中變量的作用域問(wèn)題
/*
int num = 666;
{
int num = 888;
printf("num = %i\n", num); // 888
}
printf("num = %i\n", num); // 666
*/
// 結(jié)論: 在循環(huán)體中定義和初始化表達(dá)式同名的變量不會(huì)報(bào)錯(cuò)
// for(int num = 0; num < 3; num++)
// {
// int num = 666;
// printf("num = %i\n", num); // 666
// }
// 結(jié)論: 在for的()中不能范圍循環(huán)體中定義的變量
for(int num = 0; num < 3; count++)
{
int count = 666;
printf("num = %i\n", num); // 666
}
return 0;
}