上篇我們講解了變量、常量、字符串、轉義字符、注釋。那么我們繼續(xù)來學習C語言的一些基本知識,同樣,知識也是點到為止,不會很深入,后面我會發(fā)布更深層次的知識。(注:本篇的內(nèi)容稍稍有點多,大家可以分批學習)
站在用戶的角度思考問題,與客戶深入溝通,找到集安網(wǎng)站設計與集安網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站建設、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、國際域名空間、虛擬主機、企業(yè)郵箱。業(yè)務覆蓋集安地區(qū)。1.選擇語句在C語言中有時有多種分支,我們就需要用到選擇語句
在C語言中有兩種常見的選擇語句:if語句、switch語句,本篇先來學習if語句
1.1if語句:語法結構
if(//表達式1)
{
//語句1;
}
else if(//表達式2)
{
//語句2;
}
else
//語句3;
我們這里要注意,如果if、else if、else后面有多條語句就得加上{},如果只有一條語句可以不用加{},另外else if可以使用多次用來進行多個選擇
我們來寫一串代碼來實現(xiàn)選擇語句:
#includeint main()
{
int input = 0;
//進行選擇
printf("你要學好C語言嗎?(1 or 0)\n");
//輸入
scanf("%d", &input);
//選擇語句
if (input == 1) //要注意這里使用的是==,意思是如果input等于1則執(zhí)行下面的語句
{
//輸出
printf("你可以得到好offer\n");
}
else //這里是input不等于1的情況,則執(zhí)行下面的語句
{
//輸出
printf("另尋出路吧!\n");
}
return 0;
}
1.2注意事項:if語句里面的表達式如果要判斷相不相等一定要使用==
如果if、else后面有多條語句得加上{}
如果要判斷多個條件可以使用多次else if
循環(huán)很好理解,就比如我們?nèi)諒鸵蝗盏膶W習,老師日復一日的講課...等等
那在C語言中怎么樣實現(xiàn)循環(huán)呢?
在C語言中的循環(huán)語句有while循環(huán);for循環(huán),do while循環(huán)
本篇我們先來介紹while循環(huán)
2.1while循環(huán):語法結構
while(//表達式)
{
//循環(huán)語句;
}
我們用代碼來表示一下:
比如:跟著我學C語言,每天都要敲代碼,當你敲了20000行有效代碼時,你將會有一個好的offer
#includeint main()
{
printf("跟著我學習C語言\n");
int line = 0;
//設置循環(huán):當line小于20000時進入這個循環(huán)
while (line< 20000)
{
printf("敲代碼:%d\n",line);
line++; //這里的意思表示line每次進來之后都會+1
}
if (line >= 20000) //當line大于等于20000之后跳出上面的循環(huán)進入這個選擇語句中
printf("你將會得到一個好offer\n");
return 0;
}
3.函數(shù)函數(shù)能夠使用一個獨立的功能
我們在初識C語言(2)里面在講注釋的時候使用了一串代碼就是使用函數(shù)來求兩個數(shù)的和
不用函數(shù)來寫兩個數(shù)的求和:
#includeint main()
{
int a = 0;
int b = 0;
int sum = 0;
//輸入
printf("請輸入兩個整數(shù)\n");
scanf("%d %d", &a, &b);
//計算
sum = a + b;
//輸出
printf("sum=%d\n", sum);
return 0;
}
當我們在一個工程里寫很多加法運算的時候,如果每次使用這種寫法會很麻煩,這時候就要使用函數(shù)
用函數(shù)寫兩個數(shù)的求和:
#include//這里設置這個用來求和的函數(shù)Add
int Add(int x, int y) //由于輸入的是整形,所以函數(shù)類型也應該為整形
{ //在函數(shù)里面設置兩個整形x,y來接收a,b
int z = x + y; //這里用z來表示兩個數(shù)的和
return z; //這里返回值是z,是因為當我們計算出a,b的和將它存放在z里面,將它返回
} //我們的sum,從而打印輸出
int main()
{
int a = 0;
int b = 0;
int sum = 0;
printf("請輸入兩個整數(shù)\n");
//輸入
scanf("%d %d", &a, &b);
//求和
sum = Add(a, b); //這里使用一個函數(shù)Add,將輸入的a,b放進函數(shù)Add中 //然后設置一個sum變量來存放計算出的值
//輸出
printf("sum=%d\n", sum);
return 0;
}
函數(shù)的特點就是簡化代碼,代碼復用
說到這里還有老鐵不理解的話我們來畫一個圖來展示一下:
函數(shù)的功能就好比一個工廠,我們只需要把原材料給工廠,然后通過工廠的加工來得到我們需要的東西
由上面的函數(shù)求和的例子來說明函數(shù)的一些基本組成
4.數(shù)組要存儲1~10的數(shù)字,該怎么儲存呢?
數(shù)組從簡單方面理解就是一堆數(shù)字組合起來,但是C語言中有明確定義
4.1數(shù)組的定義:數(shù)組:一組相同類型元素的集合
int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定義一個整形數(shù)組,最多放10個元素
4.2數(shù)組的下標:C語言規(guī)定:數(shù)組的每個元素都有一個下標,下標是從0開始的
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
//下標 0 1 2 3 4 5 6 7 8 9
//假設n是元素個數(shù),那么它的下標的范圍是0~n-1
使用下標的方式訪問元素
arr [//下標];
假設一個數(shù)組里面有10個元素,我們需要找到下標為5的元素
#includeint main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("%d\n", arr[5]);
return 0;
}
我們可以很直觀的看到,我們打印下標為5的元素就可以得到6
4.3數(shù)組的使用:當我們給定了一組數(shù)組,我們需要把這組數(shù)全部打印出來,我們需要如何做呢?
按照我們以前的方法,我們可以使用查找下標的方法依次將他們打印,但是非常麻煩
但是我們可以使用我們前面學過的while循環(huán),我們可以先找元素下標為0的元素,然后依次下標+1,從而循環(huán)打印出整個數(shù)組
#includeint main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i = 0; //這里設置一個循環(huán)變量
while (i< 10) //while循環(huán)開始:當i<10時,循環(huán)開始
{
printf("%d ", arr[i]); //在這里剛剛進來的i是0,所以打印的下標為0的元素
i++; //在這里i+1,每次進來都會加1,直到加到10
//則不滿足whiel循環(huán)的條件則會跳出循環(huán)
}
return 0;
}
5.操作符關于操作符在初識C語言里只是簡單介紹,后面的文章會詳細介紹
5.1算數(shù)操作符:+ | - | * | / | % |
//a+b a-b a*b a/b a%b
關于算數(shù)操作符,有幾點要注意:
%:這個是取模(取余)
當使用A%B時要注意,%兩邊都得是整數(shù)
//5%2=1
當使用A/B時要注意,如果兩邊都為整數(shù),則計算出的結果是整數(shù),如果兩邊有一個是小數(shù),則計算出的結果是小數(shù)
//5/2 = 2
//5.0/2 = 2.5
//5.0/2.0 = 2.5
5.2移位操作符(移動的是二進制位):
>> | << |
后面會發(fā)布文章介紹
5.3位操作符(操作的是二進制位):& | ^ | | |
后面會發(fā)布文章介紹
5.4賦值操作符:= | += | -= | /= | *= | &= | |= | <<= | >>= |
這里我們只講前面五個
= :這里是賦值的意思,就比如a=5,是把5賦值給a
+= :a += 5 這里的意思是給a加上5再賦值給a,比如原本a = 0,那么a+ =5之后a=5
-= 、*=、/=都是同樣的道理
5.5單目操作符:單目指的就是操作符兩邊只有一個操作數(shù)
! | 邏輯反操作 |
- | 負值 |
+ | 正值 |
& | 取地址 |
sizeof | 操作數(shù)的類型長度(以字節(jié)位單位) |
~ | 對一個數(shù)的二進制位按位取反 |
-- | 分為前置、后置 |
++ | 分為前置、后置 |
* | 間接訪問操作符(解引用操作符) |
(類型) | 強制轉換類型 |
在C語言中0表示假,非0表示真
在這里我們講一下sizeof和--、++
5.5.1sizeof:sizeof:可以用來計算變量、類型所占空間的大小(以字節(jié)為單位)
#includeint main()
{
? ? int a=10;
? ? printf("%d\n",sizeof(a));
? ? printf("%d\n",sizeof(int));
? ? return 0;
}
計算出的結果都是4個字節(jié)
了解到這里我們可以計算出一個字符串里面有多少個字符
#includeint main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("%d\n", sizeof(arr)); //計算的是整個字符串的總的大小 40個字節(jié)
printf("%d\n", sizeof(arr[0])); //計算的是一個字符的大小
int sz = sizeof(arr) / sizeof(arr[0]); //計算出這個字符串里面有多少個字符
printf("%d\n", sz);
return 0;
}
我們再來了解一個前面提到過的知識:strlen
strlen是一個計算字符串長度的函數(shù),使用時要包含頭文件#include
#include#includeint main()
{
char arr[] = "abcdef";
printf("%d\n", strlen(arr)); //?
printf("%d\n", sizeof(arr)); //?
return 0;
}
那這里打印出來為什么是6、7呢?
是因為:
sizeof計算的是所占內(nèi)存空間的大小,不在乎內(nèi)存里面放的是什么,單位是字節(jié)
strlen統(tǒng)計的是\0之前的字符的個數(shù),所以不包含\0
在這個字符串里面有abcdef\0這7個字符,所以用strlen來統(tǒng)計時是6,不統(tǒng)計\0,而用sizeof來計算時,它不管這個字符串里面放的是什么,統(tǒng)統(tǒng)都計算,所以計算出來的大小是7.
5.5.2++、--:++、--可以分為兩類:前置和后置
先來了解后置++:
后置++的意思就是先使用,后++
#includeint main()
{
int a = 2; //這里簡單解讀一下
int c = 0;
c = a++; //c=a;a=a++;
printf("c=%d a=%d\n", c, a);
return 0;
}
這里的a++類似于我們前面見到過的line++,就是在a的基礎上+1再賦值給a,這里的后置++就是先把a的值使用賦值給c,然后a再++賦值給a,所以c=2,a=3.
前置++:先++,再使用
#includeint main()
{
int a = 2;
int c = 0;
c = ++a; //c=a++,a=a++
printf("c=%d a=%d\n", c, a);
return 0;
}
前置++,先++,再使用,意思就是:先給a++,然后使用賦值給c,所以c=3,a=3.
前置++和前置--意思一致,后置++和后置--意思也一致。
5.6關系操作符:> | 用于測試“大于” |
>= | 用于測試“大于等于” |
< | 用于測試“小于” |
<= | 用于測試“小于等于” |
== | 用于測試“相等” |
!= | 用于測試“不相等” |
注:要注意區(qū)分“==”和“=”,前者是相等,后者是賦值
5.7邏輯操作符:&& | 邏輯與(并且) |
|| | 邏輯或(或者) |
我們定義0~18歲為未成年,18~28歲為青年,28~45歲為中年,45歲以上為老年
我們可以用代碼來表示一下:
#includeint main()
{
int age = 0;
scanf("%d", &age);
if (age >= 0 && age<= 18) //邏輯與操作符:兩邊的條件同時滿足才可以執(zhí)行
{
printf("未成年\n");
}
else if (age >18 && age<= 28)
printf("青年\n");
else if (age >28 && age<= 45)
printf("中年\n");
else
printf("老年\n");
return 0;
}
邏輯與操作符類似于并且,A并且B
#includeint main()
{
int num = 0;
scanf("%d", &num);
if (num == 5 || num == 10) //邏輯或操作符:只要滿足兩邊任何一個條件便可以執(zhí)行
printf("hehe\n");
else
printf("haha\n");
return 0;
}
邏輯或操作符類似于或者,A或者B
5.8條件操作符:exp1 ? exp2: exp3 |
簡單介紹這個操作符的意思:exp1成立嗎?,如果成立,則執(zhí)行exp2,如果不成立,則執(zhí)行exp3
這個也叫三目操作符
使用三目操作符來比較兩個數(shù)的大?。?/p>
#includeint main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b); //在輸入的時候兩個數(shù)中間要有空格
printf("MAX= %d", a >b ? a : b); //如果a>b成立,則執(zhí)行a,如果不成立,則執(zhí)行b
return 0;
}
5.9逗號表達式:
exp1, exp2, exp3, ..... expn |
逗號表達式會從左向右依次計算,整個表達式的結果是最后一個表達式的結果
代碼演示:
#includeint main()
{
int a = 3;
int b = 5;
int c = 0;
int d = (a += 3, b -= a, c - 2);
printf("%d\n", d);
return 0;
}
我們來分析一下這個代碼:a+=3的意思是給a+3再賦值給a,所以a=3+3=6。b-=a的意思是給b-a再賦值給b,所以b=5-6=-1。c-2=-2,所以打印出的結果就是-2。
因為逗號表達式最后打印的是最后一個表達式的結果,那么我們是不是不用管前面的表達式,直接去計算最后一個表達式呢?
可不敢這樣去想,如果前面有一個表達式改變了最后一個表達式的值,那么還這樣計算就出現(xiàn)bug,我們來看一個代碼:
#includeint main()
{
int a = 3;
int b = 5;
int c = 0;
int d = (a += 3, b -= a, c = a + b, c - 2);
printf("%d\n", d);
return 0;
}
如果我們只計算最后一個表達式的結果:c-2的出的結果是-2,那可就錯了,因為前面有一個表達式改變了c的值,所以可不敢貿(mào)然去計算,如果從左向右依次計算:a+=3,所以a=6。b-=a,所以b=-1。c=a+b,所以c=5。c-2,所以最終結果c=3,這樣就對了。
5.10下標引用、函數(shù)調(diào)用、結構成員操作符:[ ] | ( ) | . | -> |
我們這里只講前兩個
5.10.1下標引用操作符:下標引用操作符在前面的數(shù)組的下標中提到過,我們在使用元素下標可以找到該元素時就采用的"[ ]"
#includeint main()
{
char arr[10] = { 1,2,3,4,5,6,7,8 };//不完全初始化:設置的字符串里面一共有10個元素
//但是我只寫了8個元素,剩下的元素默認初始化都是0
printf("%d", arr[5]); //下標引用,找下標為5的元素
return 0;
}
5.10.2函數(shù)調(diào)用操作符:在使用函數(shù)時需要用到"( )"
#include//包含頭文件可不敢忘記
#includeint main()
{
int len = 0;
len = strlen("abcd");
printf("%d\n", len);
return 0;
}
可以看到我們在使用strlen函數(shù)求這個字符串的長度時使用了“()”,在使用其他函數(shù)時也是同樣的道理。
本篇的分享到此為止,大家可以慢慢學習,最后感謝大家閱覽,如果有什么不足和疑問可以私信我或者打在品論區(qū),感謝大家!
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
文章名稱:初識C語言:從0開始,由菜鳥變大牛(3)-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://jinyejixie.com/article24/gpjje.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、云服務器、網(wǎng)站策劃、搜索引擎優(yōu)化、網(wǎng)站設計、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容