天天看點

C基礎學習筆記——01-C基礎第05天(運算符和流程結構語句)

在學習C基礎總結了筆記,并分享出來。有問題請及時聯系部落客:​​Alliswell_WP​​,轉載請注明出處。

01-C基礎第05天(運算符和流程結構語句)

目錄:

一、運算符(運算符優先級)

二、程式流程結構(break語句、continue語句、goto語句)

三、練習(九九乘法表、等腰三角星星、猜數字)

一、運算符

1、運算符

算術運算符【+ - * / % ++(自增) --(自減)】

2、指派運算符

3、比較運算符

C 語言的比較運算中, “真”用數字“1”來表示, “假”用數字“0”來表示。

4、邏輯運算符

5、運算符優先級

優先級 運算符 名稱或含義 使用形式 結合方向 說明
1 [] 數組下标 數組名[常量表達式] 左到右 --
() 圓括号 (表達式)/函數名(形參表) --
. 成員選擇(對象) 對象.成員名 --
-> 成員選擇(指針) 對象指針->成員名 --
2 - 負号運算符 -表達式 右到左 單目運算符
~ 按位取反運算符 ~表達式
++ 自增運算符 ++變量名/變量名++
-- 自減運算符 --變量名/變量名--
* 取值運算符 *指針變量
& 取位址運算符 &變量名
! 邏輯非運算符 !表達式
(類型) 強制類型轉換 (資料類型)表達式 --
sizeof 長度運算符 sizeof(表達式) --
3 / 表達式/表達式 左到右 雙目運算符
* 表達式*表達式
% 餘數(取模) 整型表達式%整型表達式
4 + 表達式+表達式 左到右 雙目運算符
- 表達式-表達式
5 <<  左移 變量<<表達式 左到右 雙目運算符
>>  右移 變量>>表達式
6 大于 表達式>表達式 左到右 雙目運算符
>= 大于等于 表達式>=表達式
小于 表達式<表達式
<= 小于等于 表達式<=表達式
7 == 等于 表達式==表達式 左到右 雙目運算符
!= 不等于 表達式!= 表達式
8 & 按位與 表達式&表達式 左到右 雙目運算符
9 ^ 按位異或 表達式^表達式 左到右 雙目運算符
10 | 按位或 表達式|表達式 左到右 雙目運算符
11 && 邏輯與 表達式&&表達式 左到右 雙目運算符
12 || 邏輯或 表達式||表達式 左到右 雙目運算符
13 ?: 條件運算符

表達式1?

表達式2: 表達式3

右到左 三目運算符
14 = 指派運算符 變量=表達式 右到左 --
/= 除後指派 變量/=表達式 --
*= 乘後指派 變量*=表達式 --
%= 取模後指派 變量%=表達式 --
+= 加後指派 變量+=表達式 --
-= 減後指派 變量-=表達式 --
<<= 左移後指派 變量<<=表達式 --
>>= 右移後指派 變量>>=表達式 --
&= 按位與後指派 變量&=表達式 --
^= 按位異或後指派 變量^=表達式 --
|= 按位或後指派 變量|=表達式 --
15 逗号運算符 表達式,表達式,… 左到右 --

6、類型轉換

轉換的方法有兩種:

(1)自動轉換(隐式轉換):遵循一定的規則,由編譯系統自動完成。

(2)強制類型轉換:把表達式的運算結果強制轉換成所需的資料類型。

類型轉換的原則:占用記憶體位元組數少(值域小)的類型,向占用記憶體位元組數多(值域大)的類型轉換,以保證精度不降低。

二、程式流程結構

C語言支援最基本的三種程式運作結構:順序結構、選擇結構、循環結構。

(1)順序結構:程式按順序執行,不發生跳轉。

(2)選擇結構:依據是否滿足條件,有選擇的執行相應功能。

(3)循環結構:依據條件是否滿足,循環多次執行某段代碼。

注意差別三個語句

1) break語句

在switch條件語句和循環語句中都可以使用break語句:

(1)當它出現在switch條件語句中時,作用是終止某個case并跳出switch結構。

(2)當它出現在循環語句中,作用是跳出目前内循環語句,執行後面的代碼。

(3)當它出現在嵌套循環語句中,跳出最近的内循環語句,執行後面的代碼。

2)continue語句

在循環語句中,如果希望立即終止本次循環,并執行下一次循環,此時就需要使用continue語句。

3)goto語句

(無條件跳轉,盡量少用)

三、練習

練習:九九乘法表

1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<string.h>
 4 #include<stdlib.h>
 5 
 6 int main()
 7 {
 8     int i, j;
 9     for (i = 1; i <= 9; i++)
10     {
11         for (j = 1; j <= i; j++)
12         {
13             printf("%d*%d=%d\t", j, i, i*j);
14         }
15         printf("\n");
16     }
17 
18 
19     system("pause");
20     return EXIT_SUCCESS;
21 }      

注意:此處的printf("%d*%d=%d\t", j, i, i*j);第一列才是1*1,1*2....

練習:等腰三角星星

1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<string.h>
 4 #include<stdlib.h>
 5 
 6 int main()
 7 {
 8 
 9     int row;
10     printf("輸入行數:\n");
11     scanf("%d", &row);
12     for (int i = 1; i <= row; i++)
13     {
14         for (int j = 1; j <= row - i; j++)
15         {
16             printf(" ");
17         }
18         for (int k = 1; k <= i * 2 - 1; k++)
19         {
20             printf("*");
21         }
22         printf("\n");
23 
24     }
25 
26     system("pause");
27     return EXIT_SUCCESS;
28 }      

練習:猜數字

1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <time.h>
 3 #include<stdio.h>
 4 #include<string.h>
 5 #include<stdlib.h>
 6 
 7 int main()
 8 {
 9     //加入随機數種子
10     srand((unsigned int)time(NULL));
11     int num = rand()%100+1;//1-100
12     int value;
13     while (1)//for(;;)
14     {
15         scanf("%d", &value);
16         if (value > num)
17             printf("您輸入的數太大了\n");
18         else if (value < num)
19             printf("您輸入的數太小了\n");
20         else
21         {
22             printf("恭喜您!中獎啦~\n");
23             break;
24         }
25     }
26 
27 
28     system("pause");
29     return EXIT_SUCCESS;
30 }