重溫c語言之,7天開整,就是隨便的寫寫,第五天

我是一个小笨蛋發表於2024-11-05

一:庫函式---printf()

  這個函式printf()的返回值是int,這個函式竟然有返回值,值的多少是取決於輸出的內容有多少個字元

二:迴圈

  1、for迴圈

    這個迴圈中,如果判斷的地方省略的話,這個迴圈就是永遠成立(恆成立),

1 for(;;)

    這樣的話,就會無線迴圈下去--------(弊端1)

    其中初始化省略的話也會有一些問題,例如下面的程式碼:

1 int i=0;
2 int j=0;
3 for(;i<3;i++){
4     for(;j<3;j++){
5         printf("hello world! ");
6     }
  prtintf("\n");
7 }

    這個程式碼就是會發生錯誤,原本要列印3X3的hello world的,但是結果就列印了一行的hello world,為什麼?是因為這個初始化沒有寫,

  當第一次執行完外層迴圈的時候,內層迴圈會執行完(3次都執行,也就是j=3),然而外層迴圈開始第二次的時候,j沒有初始化,也就是說,j=3,沒有改變值,

  所以,內層迴圈會直接不執行,最後結果就是:hello world! hello world! hello world! ,與一開始想要整出矩陣不一樣,那怎麼解決這個問題呢,初始化就可以了

 1 #include <stdio.h>
 2 
 3 int main() {
 4     int i = 0;
 5     int j = 0;
 6 
 7     for (; i < 3; i++) {
 8         for (j=0; j < 3; j++) {
 9             printf("hello world"); 
10         }
11         printf("\n");
12     }
13     
14     return 0;
15 }

結果:

hello worldhello worldhello world
hello worldhello worldhello world
hello worldhello worldhello world

  

    還有就是當判斷變成賦值的時候,這個迴圈可能不會執行,例如下面的程式碼:

 1 #include <stdio.h>
 2 int main()
 3 {
 4     for (int i = 0; i = 0; i++)
 5     {
 6         printf("hello!");
 7     }
 8 
 9     return 0;
10 }

    這個判斷的條件就是假,所以,不會執行迴圈,

    但如果是其他的等式呢,直接就是變成了死迴圈,因為其他的條件都為true

 1 #include <stdio.h>
 2 int main()
 3 {
 4     for (int i = 0; i = 1; i++)
 5     {
 6         printf("hello!");
 7     }
 8 
 9     return 0;
10 }

    所以在這段程式碼裡面,程式會一直輸出:hello!

  2、while

    當需要在陣列中查詢某一個資料的時候,可以用到----二分查詢,注意:需要陣列是有序陣列,例如以下的程式碼:

    

 1 // 在一個有序的陣列中查詢某個具體的數字。(二分查詢)
 2 // 前提:有序
 3 #include <stdio.h>
 4 int main()
 5 {
 6     int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 7     int n = 0;
 8     scanf("%d", &n);
 9     int length = sizeof(arr) / sizeof(arr[0]);
10     int left = 0;
11     int right = length - 1;
12     int middle = (left + right) / 2;
13     while (left <= right)//前提是陣列裡面需要左邊的座標要小於右邊的座標
14     {
15         if (n < middle)
16         {
17             right = length - 1;//這裡是把目光放到了陣列左邊的地方
18         }
19         else if (n > middle)
20         {
21             left = length + 1;//這裡是把目光放到了陣列右邊的地方
22         }
23         else
24         {
25             printf("找到了!\n");
26             break;
27         }
28     }
29     if (left > right)
30     {
31         printf("沒找到!\n");
32     }
33 
34     return 0;
35 }

相關文章