天天看點

c語言常見代碼以及循環

1、ASCII碼

    printf("%c\n", 'a');

    printf("%c\n", 97);

輸出的都是a,ASCII碼97對應的是a

int main()

{

    int arr[] = { 73,32,99,97 };

    int i = 0;

    int size = sizeof(arr) / sizeof(arr[10]);//計算數組元素 個數

    while (i<size)

    {

        printf("%c", arr[i]);//列印ASCII碼

        i++;

    }

    return 0;

}

 列印出來的是{73,32,99,97}對應的ASCII碼 => I ca

//列印出生年月日

int main()

{

    int year = 0;

    int month = 0;

    int day = 0;

    scanf("%4d%2d%2d", &year, &month, &day);//%2d是 擷取2位

    printf("year = %d\n", year);

    printf("month = %02d\n", month);//%02d是拿0補齊2位

    printf("day = %02d\n", day);

    return 0;

//學生基本資訊

int main()

{

    int id = 0;

    float c = 0.0f;//後面加f以float存儲,否則以double存儲形式

    float math = 0.0f;

    float eng = 0.0f;

    scanf("%d,%f,%f,%f", &id, &c, &math, &eng);

    printf("學号為%d每科分數:%.2f,數學為%.2f,英語為%.2f ",id,c,math,eng);

    return 0;

//float存儲小數

           0           1             0               1                       bit

                      2^-1         2^-2          2^-3       

                       0.5          0.25         0.125

                       0.5            0            0.125

                =>    0.625                                                 結果

 //printf的傳回值

int main()

{

    int n = printf("hello world!\n");

    printf("%d\n", n);

    printf("printf(\"Hello world\\n\");\n");

    printf("count << \"Hello world!\" << endl;\n");

    return 0;

}

=> 

hello world!

13

printf("Hello world\n");

count << "Hello world!" << endl;

//printf傳回值為int ,數值為字元串的大小

\為列印的時候防止轉義

//找最大數

int main()

{

    int arr[4] = { 0 };//初始化

    int i = 0;

    while (i < 4)

    {

        scanf("%d", &arr[i]);

        i++;

    }

    int max = arr[0];

    i = 1;

    while (i < 4)

    {

        if (arr[i] > max)

        {

            max = arr[i];

        }

        i++;

    }

    printf("%d\n", max);

    return 0;

}

//計算球體積

int main()

{

    float r = 0.0f;

    float v = 0.0f;

    scanf("%f", &r);

    v = 4 / 3.0 * 3.1415 * r * r * r;

    printf("%.3f\n", v);

    return 0;

//計算體重指數

int main()

{

    int weight = 0;

    int high = 0;

    scanf("%d %d", &weight, &high);

    float bmi = weight / (high / 100.0) / (high / 100.0);

    printf("%.2f\n", bmi);

    return 0;

2、while循環

//while 循環
int main()
{
	int i = 1;//初始化
	while (i <= 10)//判斷
	{
		printf("%d ", i);//循環語句
		i++;//調整
	}
}
           

 3、for循環

      for(表達式1;表達式2;表達式3)   

           循環語句

表達式1:初始化

表達式2;判斷

表達式3:調整

for(int i = 1;i <= 10;I++)

{

       printf("%d ",i);

       break;//跳出循環

        continue;//跳過本次循環後面的代碼,直接來到i++,與while循環不一樣

             //建議:不可在for循環體更改循環變量,for循環控制變量采用前閉後開

}

 int main()

{

    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

    //0--9

    for (int i = 0; i < 10; i++)//最好不要i <=9

    {

        printf("%d ", arr[i]);

    }

    return 0;

}

for循環的變種

   for(  ;  ;  )//for循環,判斷部分省略,意味着判斷值恒成立為真

 = > 死循環 

int main()

{

    int i = 0;

    for (; i < 10; i++)//省略了初始化

    {

        printf("%d\n", i);

    }

    return 0;

}

=>可以執行

int main()

{

    for (i = 0; i < 10; i++)

    {

        for (j = 0; j < 10; j++)//外此循環一次後,j = 10,不滿足内循環,循環一次

        {

        }

    }

    return 0;

}

 如果省略初始化,列印10次

for(int i = 0;i<10;i++)與int i = 0;for(i = 0;i<10;i++),C99文法支援int 寫在for裡面

 //for循環采用多個變量控制變量

int main()

{

    int y = 0;

    for (int x = 0, y = 0; x < 10, y < 10; x++, y++)

    {

        printf("%d %d\n", x, y);

    }

    return 0;

}//可以運作

3、do while循環

     do 

        {

             循環語句;

         }while(條件式);

break:跳出循環

continue:跳過後面循環語句接着判斷下一次循環

//計算n的階層

int main()

{

    int ret = 1;

    int i = 1;

    int n = 0;

    scanf("%d", &n);

    for (i = 1; i <= n; i++)

    {

        ret = ret * i;

    }

    return 0;

}

 //計算1!+2!+3!......+10!;

int main()

{

    int n = 0;

    int ret = 1;

    int sum = 0;

    for (n = 1; n <= 10; n++)

    {

        ret = 1;

        for (int i = 1; i <= n; i++)

        {

            ret += ret * i;

        }

        sum = sum + ret;

    }

    printf("%d\n", sum);

}

//優化

int main()

{

    int n = 0;

    int ret = 1;

    int sum = 0;

    for (n = 1; n <= 10; n++)

    {

        ret = ret * n;

        sum = sum + ret;

    }

    printf("%d\n", sum);

    return 0;

}

//周遊查找在一個有序數組查找一個數

int main()

{

    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };

    int find = 7;

    int size = sizeof(arr) / sizeof(arr[0]);

    for (int i = 0; i < size; i++)

    {

        if (arr[i] == find)

        {

            printf("找到了,下标是:%d\n", i);

            break;

        }if (i == size)

        {

            printf("找不到\n");

        }

    }

}

二分法查找 

c語言常見代碼以及循環

//二分法查找在一個有序數組查找一個數

int main()

{

    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };

    int find = 7;

    int size = sizeof(arr) / sizeof(arr[0]);

    int left = 0;

    int right = size-1;

    while(left <= right)

   {

    int mid = (left + right)/2;

        if (arr[i]  find)

        {

             left = mid  +1;

        }else if (arr[mid]>find)

        {

           right = mid -1;

        }else

        {

         printf("找到了,下标是:%d\n", i);

         }

         if(left > right)

          {

              printf("找到了,下标是:%d\n", i);

           }

    }

}            

繼續閱讀