欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言如何實現(xiàn)循環(huán)輸入

 更新時間:2023年02月05日 09:39:44   作者:冬凌的“發(fā)光”日常  
這篇文章主要介紹了C語言如何實現(xiàn)循環(huán)輸入問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

C語言實現(xiàn)循環(huán)輸入

根據(jù)次數(shù)循環(huán)輸入

根據(jù)循環(huán)次數(shù)輸入

首先輸入循環(huán)次數(shù),然后可進行多次輸入,注意:循環(huán)條件是n --,而不是 – n;具體區(qū)別是n --的值是n,而-- n的值是n-1,這樣導(dǎo)致-- n的循環(huán)次數(shù)會少1;

#include <stdio.h>

int main(int argc, char const *argv[])
{
?? ?int n;
? ? int w;
?? ?scanf("%d", &n);?? ?//確定循環(huán)n次
?? ?while(n --){?? ??? ??? ?//while循環(huán)條件是括號中的值不為0則進行循環(huán),所以直接每次循環(huán)后都減一;
?? ??? ?printf("%d循環(huán)\n", n);
? ? ? ? scanf("%d", &w);
? ? ? ? printf("%d\n", w);
?? ?}
?? ?return 0;
}

根據(jù)條件循環(huán)輸入

1.死循環(huán)輸入

while循環(huán)條件是括號中的值為不為0則進行循環(huán),所以直接為1,可以直接開始循環(huán)。然后可以循環(huán)輸入。當(dāng)滿足n等于10的條件是就會跳出循環(huán)。

#include <stdio.h>

int main(int argc, char const *argv[])
{
?? ?int n;
?? ?while(1){?? ??? ??? ?//while循環(huán)條件是括號中的值為1則進行循環(huán),所以直接為1,可以直接開始循環(huán)
?? ??? ?scanf("%d", &n);
?? ??? ?printf("%d\n", n);
?? ?
?? ??? ?if (n == 10)?? ?//跳出循環(huán)的條件,可以沒有,最好要有,要不然死循環(huán)。
?? ??? ?{
?? ??? ??? ?break;
?? ??? ?}
?? ?}
?? ?return 0;
}

2.直接while(scanf(""))

首先我們要清楚scanf()函數(shù)的返回值:

scanf()的返回值是int型;返回值的大小是按正確輸入格式進行輸入的個數(shù)。

其次我們也會遇到EOF的形式:

EOF是end of file的簡稱說明是已經(jīng)是文件末了,通常是用-1代替EOF。EOF在輸入時是^Z(即ctrl+Z)。

當(dāng)然也有可能是用逗號運算符:

即括號里面的值為逗號后面的值。

scanf()也常與邏輯運算符一起使用:

上代碼:

#include <stdio.h>

int main(int argc, char const *argv[])
{
?? ?int n;

?? ?//==========輸入的n不為0==========//
?? ?while(scanf("%d", &n), n){?? ??? ??? ?//while循環(huán)條件是括號中的值不為0則進行循環(huán),所以直接每次循環(huán)后都減一;
?? ??? ?printf("%d\n", n);
?? ?}
?? ?while(scanf("%d", &n)&&n!=0){
?? ??? ?printf("%d\n", n);
?? ?}

?? ?int N = 8;
?? ?//==========輸入的n不為N==========//
?? ?while(scanf("%d", &n)&&n!=N){
?? ??? ?printf("%d\n", n);
?? ?}
?? ?while(scanf("%d", &n), n != N){
?? ??? ?printf("%d\n", n);
?? ?}
?? ?while(scanf("%d", &n)){
?? ??? ?if (n == N)
?? ??? ?{
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?printf("%d\n", n);
?? ?}
?? ?//==========輸入的n全都符合格式====//
?? ?while(scanf("%d", &n) == 1){
?? ??? ?printf("%d\n", n);
?? ?}
?? ?//==========輸入的n一直到文件尾====//
?? ?while(scanf("%d", &n)!=EOF){
?? ??? ?printf("%d\n", n);
?? ?}
?? ?while(scanf("%d", &n)!=-1){
?? ??? ?printf("%d\n", n);
?? ?}

?? ?
?? ?return 0;
}

C語言之循環(huán)語句

一. while 

while 語句,可以實現(xiàn)循環(huán)

//while 語法結(jié)構(gòu)
while(表達(dá)式)
?循環(huán)語句; //表達(dá)式為真執(zhí)行循環(huán)語句,表達(dá)式為假則不執(zhí)行循環(huán)語句

在屏幕上打印1-10的數(shù)字

#include <stdio.h>
int main()
{
?int i = 1;
?while(i<=10)
?{
?printf("%d ", i);
?i = i+1;
?}
?return 0;
}

1. while語句中的break

//break 代碼實例
#include <stdio.h>
int main()
{
?int i = 1;
?while(i<=10)
?{
?if(i == 5)
?break;
printf("%d ", i);
?i = i+1;
?}
?return 0;
}
//輸出 1 2 3 4?

總結(jié):

break在while循環(huán)中的作用:

其實在循環(huán)中只要遇到break,就停止后期的所有的循環(huán),直接終止循環(huán)。 所以:while中的break是用于永久終止循環(huán)的。

2. while語句中的continue

//continue 代碼實例1
#include <stdio.h>
int main()
{
?int i = 1;
?while(i<=10)
?{
?if(i == 5)
?continue;
?printf("%d ", i);
?i = i+1;
?}
?return 0;
}
//輸出 1 2 3 4 (程序中在5處死循環(huán)且不輸出5)
?
?
//continue 代碼實例2
#include <stdio.h>
int main()
{
?int i = 1;
?while(i<=10)
?{
? ? i = i+1;
? ? if(i == 5)
? ? ? ? ?continue;
? ? printf("%d ", i);
?}
?return 0;
}
//輸出 2 3 4 6 7 8 9 10

總結(jié):

continue在while循環(huán)中的作用就是:

continue是用于終止本次循環(huán)的,也就是本次循環(huán)中continue后邊的代碼不會再執(zhí)行, 而是直接跳轉(zhuǎn)到while語句的判斷部分。進行下一次循環(huán)的入口判斷

//代碼什么意思?
//代碼1
#include <stdio.h>
int main()
{
?int ch = 0;
?while ((ch = getchar()) != EOF)
? ? ? ?putchar(ch);
? ? return 0;
}
?
//這里的代碼適當(dāng)?shù)男薷氖强梢杂脕砬謇砭彌_區(qū)的.
//scanf/getchar并不是讓鍵盤輸入,而是從緩存區(qū)獲取字符,而緩存區(qū)無字符才等待鍵盤錄入
//scanf不讀取'\n'和' '(空格),而getchar讀取'\n',而gets讀取' '(空格)
//修改如下:
//清理緩存區(qū)
int temp = 0;
while ((temp = getchar()) != '\n')
{
? ? ;//空語句
}
??
?
//代碼2
#include <stdio.h>
int main()
{
? ? char ch = '\0';
?while ((ch = getchar()) != EOF)
?{
? ? ?if (ch < ‘0' || ch > ‘9')
? ? ? ? continue;
? ? ?putchar(ch);
?}
?return 0;
}
//這個代碼的作用是:只打印數(shù)字字符,跳過其他字符的、

二. for

1. 語法

for(表達(dá)式1; 表達(dá)式2; 表達(dá)式3)
?循環(huán)語句;

表達(dá)式1

  • 表達(dá)式1為初始化部分,用于初始化循環(huán)變量的。

表達(dá)式2

  • 表達(dá)式2為條件判斷部分,用于判斷循環(huán)時候終止。

表達(dá)式3

  • 表達(dá)式3為調(diào)整部分,用于循環(huán)條件的調(diào)整

使用for循環(huán) 在屏幕上打印1-10的數(shù)字

#include <stdio.h>
int main()
{
?int i = 0;
?//for(i=1/*初始化*/; i<=10/*判斷部分*/; i++/*調(diào)整部分*/)
?for(i=1; i<=10; i++)
?{
?printf("%d ", i);
?}
?return 0;
}

2. for與while的對比

int i = 0;
//實現(xiàn)相同的功能,使用while
i=1;//初始化部分
while(i<=10)//判斷部分
{
?printf("hehe\n");
?i = i+1;//調(diào)整部分
}
//實現(xiàn)相同的功能,使用while
for(i=1; i<=10; i++)
{
?printf("hehe\n");
}

可以發(fā)現(xiàn)在while循環(huán)中依然存在循環(huán)的三個必須條件,但是由于風(fēng)格的問題使得三個部分很可能偏離較遠(yuǎn),這樣查找修改就不夠集中和方便。所以,for循環(huán)的風(fēng)格更勝一籌;for循環(huán)使用的頻率也最高

3. for語句中的break和continue

//代碼1
#include <stdio.h>
int main()
{
?int i = 0;
?for(i=1; i<=10; i++)
?{
?if(i == 5)
?break;
?printf("%d ",i);
?}
?return 0;
}
?
?
//代碼2
#include <stdio.h>
int main()
{
?int i = 0;
?for(i=1; i<=10; i++)
?{
?if(i == 5)
?continue;
?printf("%d ",i);
?}
?return 0;
}

4. for語句的循環(huán)控制變量

建議:

1. 不可在for 循環(huán)體內(nèi)修改循環(huán)變量,防止 for 循環(huán)失去控制。

int main()
{
? ? int i = 0;
? ? for (i = 0; i < 10; i++)
? ? {
? ? ? ? i = 0;//i=0讓每次進來的i賦值后都為0,導(dǎo)致該循環(huán)變成死循環(huán)
? ? ? ? printf("hehe\n");
? ? }
? ? return 0;
}

2. 建議for語句的循環(huán)控制變量的取值采用“前閉后開區(qū)間”寫法

int i = 0;
//前閉后開的寫法
for(i=0; i<10; i++)
{}
//兩邊都是閉區(qū)間
for(i=0; i<=9; i++)
{}

5. 一些for循環(huán)的變種

#include <stdio.h>
int main()
{
//代碼1
//for的初始化,判斷,調(diào)整都可以省略
//中間的判斷部分如果省略,意味著判斷恒為真,就構(gòu)成了死循環(huán)
? ? for(;;)
?{
? ? printf("hehe\n");?
?}
//for循環(huán)中的初始化部分,判斷部分,調(diào)整部分是可以省略的,但是不建議初學(xué)時省略,容易導(dǎo)致問題。
? ??
?
//代碼2
? ? int i = 0;
? ? int j = 0;
? ? //循環(huán)嵌套,打印9個hehe
? ? for(i=0; i<10; i++)
? ?{
? ? ? ? for(j=0; j<10; j++)
? ? ? ?{
? ? ? ? ?printf("hehe\n");
? ? ? ?}
? ?}
?
?
//代碼3
? ? int i = 0;
? ? int j = 0;
? ? //如果省略掉初始化部分,打印10個hehe
? ? for(; i<10; i++)
? ?{
? ? for(; j<10; j++)//初始化語句為空語句,當(dāng)?shù)诙窝h(huán)進入時,j仍然為內(nèi)循環(huán)最后一次的10,并非為初識化的0
? ? ? ?{
? ? printf("hehe\n");
? ? ? ?}
? ?}
?
?
//代碼4-使用多余一個變量控制循環(huán)
? ? int x, y;
? ? for (x = 0, y = 0; x<2 && y<5; ++x, y++)
? ?{
? ? ? ? printf("hehe\n");
? ?}
?return 0;
}

6. 筆試題

//循環(huán)要循環(huán)0次
#include <stdio.h>
int main()
{
?int i = 0;
?int k = 0;
//判斷語句寫成賦值語句,k==0才為判斷語句,k=0為假, 循環(huán)0次
?for(i=0,k=0; k=0; i++,k++)
? ? ? ? k++;
?return 0;
}

三. do while

1. 語法

do
?循環(huán)語句;
while(表達(dá)式);

2. do語句的特點

循環(huán)至少執(zhí)行一次,使用的場景有限,所以不是經(jīng)常使用

#include <stdio.h>
int main()
{
?int i = 10;
?do
?{
?printf("%d\n", i);
?}while(i<10);
?return 0;
}

3. do while循環(huán)中的break和continue

?//代碼1
#include <stdio.h>
int main()
{
?int i = 10;
? ??
?do
?{
? ? if(5 == i)
? ? ? ?break;
? ? printf("%d\n", i);
? ? i++;
?}while(i<10);
? ??
?return 0;
}
?
?
//代碼2
#include <stdio.h>
int main()
{
?int i = 10;
? ??
?do
?{
? ? if(5 == i)
? ? ? ?continue;//以下語句均被跳過,打印1,2,3,4并 在4處一直打印4(4處死循環(huán))
? ? ?printf("%d\n", i);
? ? ?i++;
?}while(i<10);
? ??
?return 0;
}

四. goto語句

最常見的用法就是終止程序在某些深度嵌套的結(jié)構(gòu)的處理過程

多層循環(huán)這種情況使用break是達(dá)不到目的的。

它只能從最內(nèi)層循環(huán)退出到上一層的循環(huán)。

goto語言真正適合的場景如下:(goto語句和跳轉(zhuǎn)標(biāo)簽需在一個函數(shù)內(nèi))

for(...)
? ? for(...)
? ?{
? ? ? ? for(...)
? ? ? ?{
? ? ? ? ? ? if(disaster)
? ? ? ? ? ? ? ? goto error;
? ? ? ?}
? ?}
? ? …
error:
?if(disaster)
? ? ? ? ?// 處理錯誤情況

下面是使用goto語句的一個例子,然后使用循環(huán)的實現(xiàn)方式替換goto語句:

一個關(guān)機程序

#include <stdio.h>
int main()
{
? ? char input[10] = {0};
? ? system("shutdown -s -t 60");
again:
? ? printf("電腦將在1分鐘內(nèi)關(guān)機,如果輸入:我是豬,就取消關(guān)機!\n請輸入:>");
? ? scanf("%s", input);
? ? if(0 == strcmp(input, "我是豬"))
? ?{
? ? ? ? system("shutdown -a");
? ?}
? ? else
? ?{
? ? ? ? goto again;
? ?}
? ? return 0;
}

注:cmd操作命令

  • shutdown -s:關(guān)機指令
  • shutdown -s -t 時間:設(shè)置關(guān)機倒計時(如60)即60秒后關(guān)機
  • shutdown -a:取消關(guān)機
  • shutdown -f:強行關(guān)閉應(yīng)用程序
  • shutdown -m \\計算機名:控制遠(yuǎn)程計算機
  • shutdown -l:注銷當(dāng)前用戶(立即關(guān)機)
  • shutdown -r:關(guān)機并重啟
  • shutdown -r -t 時間:設(shè)置重新啟動倒計時
  • shutdown -h:休眠

而如果不適用goto語句,則可以使用循環(huán):

#include <stdio.h>
#include <stdlib.h>
int main()
{
? ? char input[10] = {0};
? ? system("shutdown -s -t 60");
? ? while(1)
? ?{
? ? ? ? printf("電腦將在1分鐘內(nèi)關(guān)機,如果輸入:我是豬,就取消關(guān)機!\n請輸入:>");
? ? ? ? scanf("%s", input);
? ? ? ? if(0 == strcmp(input, "我是豬"))
? ? ? ?{
? ? ? ? ? ? system("shutdown -a");
? ? ? ? ? ? break;
? ? ? ?}
? ?}
? ? return 0;
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論