C語(yǔ)言實(shí)戰(zhàn)開(kāi)發(fā)——C語(yǔ)言基礎(chǔ)第二天

學(xué)習(xí)目標(biāo):掌握全局變量與局部變量的區(qū)別裆熙、switch語(yǔ)句端礼、for循環(huán)禽笑、while循環(huán)、break與continue的應(yīng)用蛤奥、printf與scanf的的相關(guān)細(xì)節(jié)佳镜、數(shù)組

1.全局變量與局部變量

因?yàn)樽兞孔饔糜虻牟煌譃榱司植孔兞颗c全局變量凡桥;

全局變量

在所有函數(shù)外部定義的變量蟀伸。作用域是從聲明時(shí)刻開(kāi)始,到程序結(jié)束

局部變量

函數(shù)內(nèi)部定義的變量缅刽。作用域僅限于函數(shù)內(nèi)部啊掏,離開(kāi)該函數(shù)后就是無(wú)效的,再使用就會(huì)報(bào)錯(cuò)衰猛。

注意:

?在同一源文件中,允許全局變景和局部變量同名,在局部變量作用域內(nèi),同名的全局變量不起作用
?允許在不同的函數(shù)中使用相同的變量名,他們代表不同變量
?當(dāng)全局變量與局部變量重名的時(shí)候,起作用的是局部變量,全局變被屏蔽掉
?局部變量不能賦值為同名全局變量的值

include <stdio.h>
int a=3;//全局變量
int main(){
int a=4;//局部變量
printf("a=%d",a);
returnn0;
}

輸出結(jié)果為0

2.switch語(yǔ)句

一個(gè)變量有多種值的情況下迟蜜,不同值對(duì)應(yīng)的情況不同,根據(jù)不同的值執(zhí)行不同的語(yǔ)句

switch(表達(dá)式){
case 常量表達(dá)式1:
             語(yǔ)句 1;
case 常量表達(dá)式2:
             語(yǔ)句2啡省;
        ............
case 常量表達(dá)式n:
             語(yǔ)句n;
default:
             語(yǔ)句n+1;
}

注意:

?表達(dá)式必須是一個(gè)常量(int,char類(lèi)型等)或者枚舉類(lèi)型
?表達(dá)式與常雖表達(dá)式必須都是相同的數(shù)據(jù)類(lèi)型
?當(dāng)表達(dá)式的值等于某個(gè)常量表達(dá)式的値之后娜睛,執(zhí)行該表達(dá)式之后的語(yǔ)句
?當(dāng)諾句中出現(xiàn)break的時(shí)候,語(yǔ)句中斷卦睹,并跳出switch
?如果case語(yǔ)句不包含break,控制流將會(huì)繼續(xù)后續(xù)的case,直到遇到break為止
?一個(gè)switch語(yǔ)句可以有一個(gè)可選的default case,出現(xiàn)在switch的結(jié)尾

//通過(guò)輸入1-3來(lái)判斷輸入1的結(jié)果
int main(){
iny a=0;
printf("請(qǐng)輸入一個(gè)數(shù)1-3:");
scanf(%d,&a);
switch(a){
case 1:
printf("你輸入的數(shù)是1\n");
break;
case2:
printf("你輸入的數(shù)是2\n");
break;
case3:
printf("你輸入的數(shù)是3\n");
break;
}
}

3.for循環(huán)

for( init ; condition ; increment ) ( 
語(yǔ)句
//inte:循環(huán)變量賦初值(表達(dá)式1)
//condition:循環(huán)條件(表達(dá)式2)
//increment:循環(huán)變量增值(表達(dá)式3)
}

注意:
?循環(huán)控制變量的定義和初始化只執(zhí)行一次
?表達(dá)式1畦戒、表達(dá)式2和表達(dá)式3之間是用分號(hào);隔開(kāi)的
? for(表達(dá)式1结序;表達(dá)式2障斋;表達(dá)式3)的后面不要加(;)分號(hào)
?for循環(huán)的循環(huán)條件(condition)是決定循環(huán)的次數(shù)
?for(;;)與while(1)等價(jià)徐鹤,都是死循環(huán)配喳,不停的執(zhí)行語(yǔ)句

int main(){
//輸出1~10之間的整數(shù)
for(int i=1; i<=10;i++){
printf("i=%d\n",i);
}
for(int i=1;i<=10;i++){
printf("i=%d\n",i);
if(i==10){
i=0;
}
}
//死循環(huán)
for(;;){
}
return 0;
)

輸出結(jié)果:
第一個(gè)循環(huán)輸出:i=1~i=10;
第二個(gè)循環(huán)持續(xù)輸出:i=1~i=10凳干;
第三個(gè)循環(huán)死循環(huán)晴裹,一直加載,從未停止救赐;

4.while 循環(huán)

語(yǔ)句塊
}
//表達(dá)式:循環(huán)條件
//語(yǔ)句塊:循環(huán)體

?先計(jì)算“表達(dá)式”的值涧团,當(dāng)值為真時(shí),執(zhí)行“語(yǔ)句塊”
?執(zhí)行完“語(yǔ)句塊”经磅,再次計(jì)算表達(dá)式的值泌绣,如果為其,繼續(xù)執(zhí)行“語(yǔ)句塊”
?重復(fù)執(zhí)行這個(gè)過(guò)程预厌,直到表達(dá)式的值為假阿迈,就退岀循環(huán),執(zhí)行while語(yǔ)句后面的代碼

//使用while循環(huán)打印1~100的和
int main(){
int i=1;//控制循環(huán)條件
int sum=0;//總和
while(i<=100){
sum+=i;
i++;
}
printf("sum=%d\n",sum);
return 0;
}

輸出結(jié)果:
sum=5050

5.Break 與 C ontinue 關(guān)鍵字

?Break

在switch語(yǔ)句轧叽,當(dāng)遇到break時(shí)苗沧,不再執(zhí)行switch中的任何語(yǔ)句
在while, for循環(huán)當(dāng)中刊棕,當(dāng)遇到break時(shí),會(huì)終止循環(huán)而執(zhí)行整個(gè)循環(huán)語(yǔ)句后面的代碼

?Continue

跳過(guò)循環(huán)體中剩余的語(yǔ)句而強(qiáng)制進(jìn)入下一次循環(huán)(只用于while, for循環(huán)語(yǔ)句當(dāng)中)

6.printf 與 scanf相關(guān)補(bǔ)充

緩沖區(qū):輸入輸出流
? printf
向終端輸出字符串:
先將字符串內(nèi)容輸入到緩沖區(qū)待逞,之后再依次輸出緩沖區(qū)內(nèi)容
? scanf
接收終端的輸入:
在緩沖區(qū)里讀數(shù)據(jù)甥角,當(dāng)緩沖區(qū)里有對(duì)應(yīng)類(lèi)型數(shù)據(jù),就從緩沖區(qū)里面取數(shù)據(jù) 如果沒(méi)有對(duì)應(yīng)類(lèi)型數(shù)據(jù)识樱,就等待用戶(hù)輸入數(shù)據(jù)

注意:`臀蕖!怜庸!一般情況在scanf当犯、getchar之前都需要:fflush(stdin) !割疾! 此函數(shù)需要在<stdio.h>中調(diào)用灶壶;、

getchar():從緩沖區(qū)讀取一個(gè)字符
#include<stdio.h>
int main(){
char a;
printf("請(qǐng)輸入a:");
scanf("%c",&a);
char b;
printf("請(qǐng)輸入b:");
getchar();
scanf("%c",&b);
char c;
printf("請(qǐng)輸入c:");
scanf("%c",&c);
printf("\na=%c b=%c c=%c\n",a,b,c);
return 0;
}

輸入A ,按下回車(chē)之后杈曲,緩沖流里面為A\n
之后取出A放到a的地址里面驰凛,此時(shí)緩沖區(qū)還剰下\n
輸入B,按下回車(chē)之后,此時(shí)緩沖區(qū)里面為\nB\n
getchar()從緩沖區(qū)里面掌走一個(gè)\n,緩沖里還剰下8\n
之后取出B放到b的地址里担扑,此時(shí)緩沖區(qū)還剰下\n
因?yàn)榫彌_區(qū)里面有字符\n , scan嘛將緩沖里的內(nèi)容放到c的地址里 所以當(dāng)我們輸入A,B之后恰响,就直接輸出了結(jié)果
所以
輸出結(jié)果為:

請(qǐng)輸入a:A
請(qǐng)輸入b:B 請(qǐng)輸入c: a=a b=b c=

7.數(shù)組

a.數(shù)組:用于儲(chǔ)存多個(gè)相同類(lèi)型數(shù)據(jù)的集合
b.數(shù)組相關(guān):

?能夠存儲(chǔ)數(shù)據(jù)就必須要有內(nèi)存
?如何定義一個(gè)數(shù)值的同時(shí)為他分配內(nèi)存
?數(shù)組定義時(shí)必須明確知道數(shù)組的大小
?數(shù)組名就是數(shù)組的首地址

c.聲明數(shù)組

在C語(yǔ)言中,聲明一個(gè)數(shù)組涌献,需要指定元素的類(lèi)型和元素的數(shù)量

//數(shù)組聲明格式為:
type arrayName[arraysize];
//arrayName:數(shù)組名字
//[]:數(shù)組標(biāo)識(shí)
//type:數(shù)組數(shù)據(jù)類(lèi)型
//arraySize:數(shù)組大小
d.初始化數(shù)組

-C語(yǔ)言當(dāng)中胚宦,可以逐個(gè)初始化數(shù)組,也可以使用一個(gè)初始化語(yǔ)句燕垃。大括號(hào){}之間的值的數(shù)目不能大于我們?cè)谏⒔M 聲明時(shí)在方括號(hào)|]中指定的元素?cái)?shù)目枢劝。

int a[4]={2,45,21,45};

?如果您省略掉了數(shù)組的大小,數(shù)組的大小則為初始化時(shí)元素的個(gè)數(shù)卜壕。

int a[]={2,3,564,7};

?在定義時(shí)期明確指定數(shù)組的大小

int temp[5];
數(shù)組元素賦值
a[3]=56;//將數(shù)組第四個(gè)位置的值賦值為56

8.rand()與 srand()函數(shù)

?rand()函數(shù)
函數(shù)頭文件:stdlib.h
函數(shù)定義:int rand(void)
函數(shù)功能:產(chǎn)生一個(gè)隨機(jī)數(shù)
返回值:返回0至RAND_.MAX之間的隨機(jī)整數(shù)值
?srand()函數(shù)
函數(shù)頭文件:stdlib.h
函數(shù)定義:void srand(unsigned int seed)
函數(shù)功能:設(shè)置隨機(jī)數(shù)種子
函數(shù)說(shuō)明:通衬裕可以用getpid()(獲取當(dāng)前進(jìn)程的進(jìn)程識(shí)別碼)或者tinw(NULL)(獲取當(dāng)前系統(tǒng)的時(shí)間信息)來(lái)充當(dāng) 種子,保持每次運(yùn)行時(shí)種子是不一樣的.

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main(){
for(int i=0;i<5;i++){
//產(chǎn)生1~10以?xún)?nèi)的數(shù)字
int temp=rand()%9+1;
printf("%d",temp);
}
printf("\n");
srand(time(NULL));//播種
for(int i=0;i<5;i++){
itn temp1=rand()%9+1;
printf("%d",temp);
}
return 0;
}
輸出結(jié)果(第一次結(jié)果):

6 9 8 5 9
5 3 1 4 6

輸出結(jié)果(第二次結(jié)果):

6 9 8 5 9
5 2 1 7 2

從中可以看出兩次結(jié)果不同轴捎,原因是兩次播種時(shí)間不同鹤盒,產(chǎn)生種子不同。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末侦副,一起剝皮案震驚了整個(gè)濱河市侦锯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秦驯,老刑警劉巖尺碰,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡亲桥,警方通過(guò)查閱死者的電腦和手機(jī)洛心,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)两曼,“玉大人皂甘,你說(shuō)我怎么就攤上這事玻驻〉看眨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵璧瞬,是天一觀的道長(zhǎng)户辫。 經(jīng)常有香客問(wèn)我,道長(zhǎng)嗤锉,這世上最難降的妖魔是什么渔欢? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮瘟忱,結(jié)果婚禮上奥额,老公的妹妹穿的比我還像新娘。我一直安慰自己访诱,他們只是感情好垫挨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著触菜,像睡著了一般九榔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涡相,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天哲泊,我揣著相機(jī)與錄音,去河邊找鬼催蝗。 笑死切威,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的丙号。 我是一名探鬼主播牢屋,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼槽袄!你這毒婦竟也來(lái)了烙无?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤遍尺,失蹤者是張志新(化名)和其女友劉穎截酷,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體乾戏,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迂苛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年三热,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片三幻。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡就漾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出念搬,到底是詐尸還是另有隱情抑堡,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布朗徊,位于F島的核電站首妖,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏爷恳。R本人自食惡果不足惜有缆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望温亲。 院中可真熱鬧棚壁,春花似錦、人聲如沸栈虚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)节芥。三九已至在刺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間头镊,已是汗流浹背蚣驼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留相艇,地道東北人颖杏。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像坛芽,于是被迫代替她去往敵國(guó)和親留储。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容