Home [C# 筆記] while
Post
Cancel

[C# 筆記] while

1
2
3
while(循環條件) {
    循環體
}

範例:向控制台輸出100遍,下次考試我一定要細心

1
2
3
4
5
6
7
8
9
10
//向控制台輸出100遍,下次考試我一定要細心
//循環體:Console.WriteLine("下次考試我一定要細心");
//循環條件:輸出次數小於100

int i = 0; //定義一個變數,來記錄循環的次數
while (i < 100)
{
    Console.WriteLine("下次考試我一定要細心");
    i++; //每循環一次,自身加1
}

範例:求1-100和

1
2
3
4
5
6
7
8
9
10
11
12
//求1-100和
//循環體: 累加的過程
//循環條件:i <= 100
int i = 1;
int sum = 0;
while (i <= 100)
{
    sum += i;
    i++;
}
Console.WriteLine(sum);
Console.ReadKey();

範例:求1-100偶數和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//求1-100偶數和
//循環體: 累加的過程
//循環條件:i <= 100
int i = 1;
int sum = 0;
while (i <= 100)
{
    if (i % 2 == 0) { //若是求奇數和 i%2 !=0
        sum += i;
    }
    i++;
}
Console.WriteLine(sum);
Console.ReadKey();

若是求奇數和,判斷改成:if (i % 2 != 0)

範例:要求用戶輸入帳號/密碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//要求用戶輸入帳號/密碼
//循環體:提示用戶輸入帳號/密碼、接收帳號/密碼、判斷是否登入成功
//循環條件:帳號密碼錯誤

string userName = "";
string userPwd = "";
while (userName!="admin" || userPwd!="8888")
{
    Console.WriteLine("請輸入帳號");
    userName = Console.ReadLine()!;
    Console.WriteLine("請輸入密號");
    userPwd = Console.ReadLine()!;
}
Console.WriteLine("登入成功");
Console.ReadKey();

範例:輸入班級人數,然後依次輸入學生成績,計算班級學生平均成績和總成績

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//輸入班級人數,然後依次輸入學生成績,計算班級學生平均成績和總成績
//循環體:提示輸入學員成績、接收、並轉換成整數類型,累加到總成績中。
//循環條件:循環次數<=班級人數

Console.WriteLine("請輸入班級人數");
int count = Convert.ToInt32(Console.ReadLine());
int i = 1; //宣告一個變數,用來記錄迴圈的次數
int sum = 0; //用來存放總成績
while (i <= count)
{
    Console.WriteLine($"請輸入第{i}學生成績");
    int score = Convert.ToInt32(Console.ReadLine());
    sum += score; //把每一個學生的成績累加到總成績中
    i++; //每循環一次,自身加1
}
Console.WriteLine($"{count}個人班級的總成績: {sum},平均: {sum/count}");
Console.ReadKey();

範例:2006年培養學生8000人,每年增長25%,請問按些增長速度,到哪一年培訓學員人數將達到20萬人?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//2006年培養學生8000人,每年增長25%
//請問按些增長速度,到哪一年培訓學員人數將達到20萬人?

//循環體:人數每年增長25%
//循環條件:人數>=20萬

double people = 80000;
int year = 2006;

while (people<=200000) {
    people *= 1.25;
    year++;
}
Console.WriteLine($"到第{year}年學員人數將達到20萬人");
Console.ReadKey();

範例:要求用戶只能輸入yes或者no

提示用戶輸入yes或者no
要求:只能輸入yes或者no,只要不是yes或者no,就要求用戶一直重新輸入

1
2
3
4
5
6
7
8
9
//提示用戶輸入yes或者no
//要求:只能輸入yes或者no,只要不是yes或者no,就要求用戶一直重新輸入

string input = ""; //yes
while (input != "yes" && input != "no")
{
    Console.WriteLine("請輸入yes或者no");
    input = Console.ReadLine()!;
}

範例:提示用戶輸入帳號和密碼,錯誤,就重新輸入,最多3次

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
提示用戶輸入帳號和密碼,要求用戶名為admin,密碼為888888
只要帳號或是密碼錯誤,就重新輸入
但是最多只能輸入3次

循環體:提示用戶輸入帳號和密碼,判斷帳號和密碼
循環條件:次數<=3
 */

string username = "";
string password = "";
int count = 3;
int i = 0;
while (i < count && (username != "admin" || password != "888888"))
{
    Console.WriteLine("請輸入帳號");
    username = Console.ReadLine()!;
    Console.WriteLine("請輸入密碼");
    password = Console.ReadLine()!;
    i++;
}

範例:寫兩個循環

寫兩個循環
第一個循環提示用戶A輸入用戶名,要求A的用戶名不能為空,
只要為空,就要求A一直重新輸入

第二個循環提示用戶B輸入用戶名,要求B的用戶名不能跟A的用戶名相同,並且不能為空,
只要為空,並且跟A的用戶名相同,就一直提示B重新輸入用戶名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//寫兩個循環
//第一個循環提示用戶A輸入用戶名,要求A的用戶名不能為空,只要為空,就要求A一直重新輸入

//循環體: 提示用戶A輸入用戶名、接收、判斷
//循環條件:用戶名為空

string usernameA = "";
while (usernameA == "")
{
    Console.WriteLine("請輸入用戶名,不能為空");
    usernameA = Console.ReadLine();
}

//第二個循環提示用戶B輸入用戶名,要求B的用戶名不能跟A的用戶名相同,並且不能為空
//只要為空,並且跟A的用戶名相同,就一直提示B重新輸入用戶名

//循環體: 提示B重新輸入用戶名、接收、判斷
//循環條件:不能跟A的用戶名相同、不能為空
Console.WriteLine("請輸入用戶名,不能與A相同,不能為空");
string usernameB = "";
while (usernameB == "" || usernameB == usernameA)
{
    if (usernameB == "")
    {
        Console.WriteLine("請輸入用戶名,不能為空");
        usernameB = Console.ReadLine();
    } else if (usernameB == usernameA)
    {
        Console.WriteLine("請輸入用戶名,不能與A相同");
        usernameB = Console.ReadLine();
    }
}
Console.ReadKey();

練習:不斷要求用戶輸入一個數字,輸出這個數字的兩倍,當用戶輸入q結束程式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//不斷要求用戶輸入一個數字,輸出這個數字的兩倍,當用戶輸入q結束程式

//循環體:提示用戶輸入一個數字、接收、轉換、輸出2倍
//循環條件:輸入不是q

string input = "";
while (input != "q")
{
    Console.WriteLine("請輸一個數字,我們將輸出這個數字的2倍"); //提示
    input = Console.ReadLine(); //接收

    if (input == "q")
    {
        Console.WriteLine("輸入的是q,程式退出");
        break;
    }
    try
    {
        int num = Convert.ToInt32(input); //轉換
        Console.WriteLine($"你輸入數字的兩倍是:{num * 2}"); //輸出2倍
    } catch
    {
        Console.WriteLine("輸入不是數字,請重新輸入");
    }
}

練習:不斷輸入數字,當輸入end就結束,並輸出最大值

不斷要求用戶輸入一個數字(正整數),當用戶輸入end的時候結束,顯示剛才輸入數字中的最大值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//循環體:輸入一個數字、接收、轉換int、比大小
//循環條件:輸入不是end

string input = "";
int max = 0;
while (input != "end")
{
    Console.WriteLine("請輸入一個數字(正整數)"); //提示
    input = Console.ReadLine(); //接收

    if (input != "end")
    {
        try
        {
            int num = Convert.ToInt32(input); //轉換int
            max = max > num ? max : num; //最大值: 比大小

        } catch
        {
            Console.WriteLine("你輸入的不是數字,請重新輸入");
        }

    } else //end
    {
        Console.WriteLine(max);
    }
}
This post is licensed under CC BY 4.0 by the author.