最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【零基礎(chǔ)學(xué)C語言】老九零基礎(chǔ)學(xué)編程系列之C語言

2022-01-21 20:20 作者:FantaLone  | 我要投稿

p2 常用算法:窮舉法、迭代法、遞歸法。




p9

變量命名規(guī)則:

?相關(guān)資料:

保留字_百度百科

https://baike.baidu.com/item/%E4%BF%9D%E7%95%99%E5%AD%97/7674788?fr=aladdin




p10

基本的數(shù)據(jù)類型分為數(shù)值和非數(shù)值。

數(shù)值分為整型(用來表示整數(shù))和非整型(或者說浮點(diǎn)型,用來表示小數(shù))。


整型包括short、int、long三種。三種由于所占內(nèi)存不同,所以能表示的數(shù)值范圍不同(但是C語言中l(wèi)ong和int范圍一樣)。

?相關(guān)資料:

C/C++:long int與long long的區(qū)別

https://blog.csdn.net/tjcwt2011/article/details/109687327


非整型(浮點(diǎn)型)包括float、double兩種。

非數(shù)值的數(shù)據(jù)類型為char。

?相關(guān)資料:

C語言中的字符(char)詳細(xì)講解

https://www.jb51.net/article/88695.htm




p11


一些格式占位符:

%d:代表整數(shù),%f:單精度浮點(diǎn)數(shù)float,%fl:雙精度浮點(diǎn)數(shù)double,%s:字符串,%c:char,%p:指針。

%3.2f:在程序中顯示出的單精度浮點(diǎn)數(shù)會(huì)有小數(shù)點(diǎn)前三位、小數(shù)點(diǎn)后兩位。

把3換成別的數(shù)字就相應(yīng)有小數(shù)點(diǎn)前幾位。

把2換成別的數(shù)字就相應(yīng)有小數(shù)點(diǎn)后幾位。

把f換成lf就是改變雙精度浮點(diǎn)數(shù)的顯示精度。

注意:顯示精度與實(shí)際精度無關(guān)。

?相關(guān)資料:

格式占位符_百度百科

https://baike.baidu.com/item/%E6%A0%BC%E5%BC%8F%E5%8D%A0%E4%BD%8D%E7%AC%A6/8574147?fr=aladdin


C語言-格式輸入輸出中“%d,%o,%x,%e,%f”等的含義

https://blog.csdn.net/u013706540/article/details/82184145




p12

char類型的變量數(shù)值為‘A’(注意是單引號(hào)),和數(shù)值為65的char類型變量本質(zhì)上一樣,輸出后都會(huì)顯示出A,因?yàn)锳對(duì)應(yīng)的十進(jìn)制ASCII碼就是65。


轉(zhuǎn)義序列:

(先不用記,要用再查。慢慢會(huì)記住的。)


我們學(xué)習(xí)的第一個(gè)輸入函數(shù):scanf。代碼格式和printf相似:scanf("%d",&num)。變量num前面要有&符號(hào)。




p15

%:取模(取余數(shù))符號(hào)。

如:5%3的結(jié)果是2




p16

getchar():獲取字符。(不論輸入多長只能獲取一個(gè))

putchar():輸出字符。(只能輸出一個(gè))

fflush(stdin):清空緩沖區(qū)。

看視頻以幫助理解:

開始演示getchar():

?
3.1習(xí)題詳解 P16 - 02:52
?

使用清空緩沖區(qū)功能以實(shí)現(xiàn)目標(biāo):

?
3.1習(xí)題詳解 P16 - 10:36
?

(P25的筆記中有相關(guān)應(yīng)用)


開始演示putchar():

?
3.1習(xí)題詳解 P16 - 14:17
?


經(jīng)典題目:交換a、b的值

解法:

int a,b,c;

c=a;

a=b;

b=c;


整型數(shù)的打印長度控制:

演示%4d

?
3.1習(xí)題詳解 P16 - 22:19
?

演示%04d

?
3.1習(xí)題詳解 P16 - 23:26
?




p17

int num=10;

num++; //這句可以換成num = num + 1;num += 1; 這幾個(gè)表達(dá)式是等價(jià)的。

另外,num = num + 某個(gè)數(shù)字 num += 某個(gè)數(shù)字 是等價(jià)的,都表示給num賦值為num+該數(shù)字。

以此類推,num- -; ++是加1那--就是減1咯。

簡單了解:類型轉(zhuǎn)換(就是對(duì)某個(gè)數(shù)據(jù)類型輸入了不符合該類型精度的數(shù)值,比如double n=6,double是浮點(diǎn)型而6是整數(shù)。)

?
3.2課前回顧 P17 - 15:23
?




p18

算術(shù)運(yùn)算符有一元運(yùn)算符、二元運(yùn)算符、復(fù)合運(yùn)算符。

二元運(yùn)算符是+-*/%之類。

%:取模,意思就是取余數(shù),比如5%3的值就是2,因?yàn)?除以3等于1余2。

復(fù)合運(yùn)算符 :p17筆記中的+=就是復(fù)合運(yùn)算符,

num = num + 某個(gè)數(shù)字 num += 某個(gè)數(shù)字 是等價(jià)的,都表示給num賦值為num+該數(shù)字。)

別的復(fù)合運(yùn)算符如-=、*=、/=用法也都一樣,把+=的等價(jià)表達(dá)式里的+替換成相應(yīng)符號(hào),

(如num = num * 某個(gè)數(shù)字 num *= 某個(gè)數(shù)字 是等價(jià)的,都表示給num賦值為num*該數(shù)字。)

以此類推。

一元運(yùn)算符(++、- -)的前置后置區(qū)別:

?
3.3幾大基本運(yùn)算符 P18 - 07:30
?

當(dāng)后置,是先用num代替num++或num--運(yùn)算完整句,然后再算num++或num--。


除算術(shù)運(yùn)算符外——

關(guān)系運(yùn)算符:就是些比大小之類的運(yùn)算符。

可能用到的符號(hào):>、<、>=、<=,==是等于,!=是不等于。

計(jì)算結(jié)果為1或0,其中1是真,0是假。

例:int num=5>8;

輸出結(jié)果中num的值會(huì)是0,因?yàn)?并不大于8。


邏輯運(yùn)算符:就是與或非。

&&與,||或、!非。


sinzeof運(yùn)算符:


賦值運(yùn)算符為=,單等號(hào)。


選學(xué)內(nèi)容:

和二進(jìn)制有關(guān)了這玩意。




P19

&&存在短路運(yùn)算,如果&&左邊已經(jīng)為0了,&&右邊的表達(dá)式就不會(huì)被運(yùn)算了。


運(yùn)算符優(yōu)先級(jí)示意圖:

(越上面的優(yōu)先級(jí)越高。)





P20

if結(jié)構(gòu):

if(條件)

{

代碼塊1

}

else

{

代碼塊2

}

如果條件為真就執(zhí)行代碼塊1,不然就執(zhí)行代碼塊2。




P21

多重if結(jié)構(gòu):

if(條件1)

{

代碼塊1

}

else if(條件2)

{

代碼塊2

}

else

{

代碼塊3

}

如果滿足條件1就執(zhí)行代碼塊1,如果不滿足條件1但滿足條件2就執(zhí)行代碼塊2,都不滿足就代碼塊3。




P22

switch結(jié)構(gòu),用個(gè)例子理解吧。

int star; //玩家所獲得物品的星級(jí)

scanf("&d",&star); //且不論為什么這個(gè)程序還要玩家自己輸入星級(jí)

switch(star)

{

case 5:

printf("哇,抽到大獎(jiǎng)啦!");

break; //如果輸入的星級(jí)為5,則執(zhí)行:輸出“哇,抽到大獎(jiǎng)啦!”,之后運(yùn)算過程直接跳出這個(gè)大括號(hào)

case 4:

printf("運(yùn)氣還不錯(cuò)嘛。") ;

break;

default:

printf("呃……這個(gè)也能用吧。") ;;

}


注意:

1.switch()——括號(hào)中的變量只能是整型或字符型。

2.case后面的常量不能相同,就像上面的范例程序,不能先寫一個(gè)“case 5; ……break;” 再寫一個(gè)“case 5;……break;” 。

3.如果其中一個(gè)break沒了,就會(huì)一直往后運(yùn)行。假設(shè)例中去掉第一個(gè)break,那么輸入5的時(shí)候就會(huì)輸出:“哇,抽到大獎(jiǎng)啦!運(yùn)氣還不錯(cuò)嘛?!?/span>

4.default子句可以往前放,但是此時(shí)如果沒有break句就會(huì)出現(xiàn)3的情況,詳見:

?
3.7switch選擇結(jié)構(gòu) P22 - 14:44
?

5.可以不使用default子句。




P24

while循環(huán)(當(dāng)型循環(huán))

int i=1;

while(i<=10000)

{

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

i++;

}

這就是一個(gè)會(huì)從1只羊一直數(shù)到10000只羊的while循環(huán)程序。




P25

本P中第二道練習(xí)題,我的解法(假設(shè)密碼為四位字母):

#include<stdio.h>

int main()

{

char a='L',b='o',c='n',d='e',e,f,g,h;//四位密碼Lone?

int i=0; //用來計(jì)入錯(cuò)誤次數(shù)的數(shù)值?

while (i<3)?

{

e=getchar();f=getchar();g=getchar();h=getchar(); //輸入四位字母?

if (e==a&&f==b&&g==c&&h==d==1) //如果四個(gè)字母一一符合Lone?

{?

printf("密碼正確");

break; //跳出循環(huán)?

}

else

{

printf("密碼錯(cuò)誤\n");

i++; //錯(cuò)誤次數(shù)+1?

fflush(stdin);//清空緩存區(qū)?

}

}

return 0;

?}??


其中涉及到清空緩存區(qū)的問題。其實(shí)我還是不太明白緩存區(qū)具體是什么,但是在這個(gè)程序中,如果不在再次輸入之前清空緩存區(qū),那么只要第一遍輸入錯(cuò)誤,后面就怎么著都是錯(cuò)誤的。


本P中提到了exit(0),意思是運(yùn)行到這里就退出程序。

用的時(shí)候需要頭文件:stdlib.h。

相關(guān)資料:

C語言中break和exit()的區(qū)別

https://blog.csdn.net/tomatolee221/article/details/89526575


P26

涉及時(shí)間函數(shù),需要用頭文件:time.h

涉及隨機(jī)函數(shù),需要用頭文件:stdlib.h

隨機(jī)函數(shù):srand;一般要用的時(shí)候可以就寫成srand(time(NULL));意思是使用時(shí)間作為種子,產(chǎn)生不同的隨機(jī)數(shù)字。

寫成srand((unsigned)time(NULL));


rand()是隨機(jī)數(shù),范圍:0~32767。如果單獨(dú)輸出rand(),那么會(huì)輸出一個(gè)隨機(jī)但是不變的數(shù),編譯運(yùn)行多少次都是這個(gè)數(shù)。

而如果按圖中步驟:

先srand再輸出rand(),每次運(yùn)行就會(huì)輸出不同的隨機(jī)數(shù)。


Sleep函數(shù):Sleep()的括號(hào)中輸入一個(gè)數(shù)字x,就會(huì)產(chǎn)生x毫秒的間隔。使用時(shí)需要用頭文件:windows.h。具體效果參考:

?
4.3代碼實(shí)戰(zhàn)~拳皇 P26 - 18:45
?


關(guān)于單步調(diào)試和監(jiān)視:

?
4.3代碼實(shí)戰(zhàn)~拳皇 P26 - 30:38
?




P27

do-while循環(huán):

do{

循環(huán)操作

}while(循環(huán)條件);

使用時(shí)會(huì)先執(zhí)行一次循環(huán)操作,再判斷是否循環(huán)條件,是則再執(zhí)行循環(huán)操作再判斷,否則退出循環(huán)。


如何取四位數(shù)中的每一位:




P29

for循環(huán):


const,用于定義常量,常量就是只讀的變量。

使用方法:const 數(shù)據(jù)類型 常量名稱以及賦值。

例:const int num=256;

注意:

1.必須在這一個(gè)語句中就賦值,在這個(gè)語句之后,常量就不能再被賦初值或更新了。

2.循環(huán)變量必須更新,否則死循環(huán)。

3.打好分號(hào)。


一般能確定循環(huán)次數(shù)時(shí),使用for循環(huán),否則用while或do-while循環(huán)。




P30

break語句:用于跳出循環(huán)或switch結(jié)構(gòu)。




P31

continue語句的作用:跳過本次循環(huán),繼續(xù)下次循環(huán)。

在while循環(huán)中:跳過本次循環(huán),到判斷循環(huán)條件處。

在do-while循環(huán)中:跳過本次循環(huán),到判斷循環(huán)條件處。

在for循環(huán)中:跳過本次循環(huán),到更新循環(huán)變量處。




P32

講解打印各種星號(hào)圖形

?
5.5活學(xué)活用~實(shí)戰(zhàn)練習(xí)【筆記作業(yè)在公眾... P32 - 03:07
?




P34





P35&P36

定義數(shù)組的語法:數(shù)據(jù)類型 數(shù)組名[容量];

例:char englishgrade[42];//表示42個(gè)同學(xué)的英語成績等級(jí)(A\B\C\D\E)

初始化數(shù)組的語法:數(shù)據(jù)類型 數(shù)組名[容量]={元素0,元素1,元素2,……};

例:char englishgrade[10]={A,B,E,C,B,A,A,E,C,D};


注意:

1.如果填進(jìn){ }里的元素個(gè)數(shù)沒有達(dá)到[ ]里面所規(guī)定的值,那么剩下的元素默認(rèn)為0。

2.如果[ ]中不填數(shù)字,那么{ }中的元素?cái)?shù)量就默認(rèn)為數(shù)組的容量。(不可以兩個(gè)括號(hào)內(nèi)都不填東西?。?/span>

3.數(shù)組的容量是固定的。


englishgrade[6]表示englishgrade數(shù)組中的第7個(gè)元素(因?yàn)閺?開始)。

如果要錄入第7個(gè)元素對(duì)應(yīng)的數(shù)據(jù):scanf("%c",&englishgrade[6]);


另一種定義常量的方法:#define 常量名 數(shù)據(jù)

例:#define N 42

要寫在int main()前面的位置。

寫了這條定義之后,上面的char englishgrade[42];也可以寫成char englishgrade[N];

與P29筆記中講的定義常量方法的區(qū)別在于,這種定義方法是宏定義。這里的N可以看成int N=42或char N=42等等,宏定義的N是沒有確定的數(shù)據(jù)類型的,它被用在需要什么數(shù)據(jù)類型的地方就會(huì)變成什么數(shù)據(jù)類型。




P37

數(shù)組排序之冒泡排序

基礎(chǔ)原理:反復(fù)判斷,兩兩交換。

?
6.4小議數(shù)組排序 P37 - 04:28
?

核心算法:

?
6.4小議數(shù)組排序 P37 - 13:51
?




P39

定義二維數(shù)組的語法:數(shù)據(jù)類型 數(shù)組名[行數(shù)][列數(shù)];

初始化二維數(shù)組的語法:數(shù)據(jù)類型 數(shù)組名[行數(shù)][列數(shù)]={ { },{ },{ },...,{ } };//{ }的個(gè)數(shù)和行數(shù)一致,{ }內(nèi)的元素個(gè)數(shù)和列數(shù)一致。

例:

關(guān)于%-8.2lf的解釋:

?
7.1二維數(shù)組 P39 - 13:23
?




P41

播放聲音的關(guān)鍵代碼:

#include<windows.h>

#include<mmsystem.h>

#pragma comment(lib, "Winmm.lib")

PlaySound(TEXT("路徑\\音樂文件名.wav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);

老師是這么寫的,但我并未試驗(yàn)成功,目前還沒有弄懂怎么播放音頻。



C語言中字符串本質(zhì)上是字符數(shù)組。要將多個(gè)字符串存儲(chǔ)為一組時(shí)(比如某班所有學(xué)生的名字),相當(dāng)于將多個(gè)字符數(shù)組存成一組,就要用到二維數(shù)組。

char names[6][9]表示names數(shù)組最多容納6個(gè)字符串,每個(gè)字符串最大長度為8個(gè)英文字符或4個(gè)中文字符。(關(guān)于字符串容量的內(nèi)容,具體見P62筆記。也可以不用管,最大長度直接定個(gè)很大的數(shù)也行。)

存儲(chǔ)語句可以這樣寫:

char name[6][8]={"小明","小紅","小剛","小王","小張","小李"};

其中6可以不寫。二維數(shù)組里規(guī)定高維容量的數(shù)字可以不寫,但是低維得寫。

也可以在引號(hào)兩邊加{ },可以但沒必要。

要打印時(shí),以打印出“小紅”為例,就是

printf("%s",names[1]};




P42

當(dāng)輸出字符串時(shí),可以規(guī)定輸出長度。比如:

printf("%12s",names[1]};

輸出的字符串長度就有12格,右對(duì)齊,缺少字符的部分為空格。

若要調(diào)整為左對(duì)齊,在12前加上負(fù)號(hào)-即可實(shí)現(xiàn),即:

printf("%-12s",names[1]};


簡單了解查找字符串函數(shù)strcmp:

使用strcmp時(shí)需要存在預(yù)處理命令:#include<string.h>

strcmp的用法:

strcmp(字符串1,字符串2)的運(yùn)算結(jié)果為x;

若兩個(gè)字符串相等,則x=0;若字符串1>字符串2,則x=1;若字符串1<字符串2,則x=-1。字符串的大小是通過ASCII碼來判斷的。


注意:

這里的字符串1和字符串2指的是字符串的名字,如果要在strcmp里直接輸入一個(gè)字符串的內(nèi)容,應(yīng)該在內(nèi)容兩邊加引號(hào)。很多字符串相關(guān)操作可以以此類推。

簡單了解數(shù)組賦值的函數(shù)strcpy:strcpy(字符串1,字符串2);

作用:將字符串2的內(nèi)容賦給字符串1。

?
7.4代碼實(shí)戰(zhàn) P42 - 58:20
?



P43

指針是一個(gè)值為內(nèi)存地址的變量。是一個(gè)變量。是變量。變量。

基本用法:數(shù)據(jù)類型 * 指針變量名;

暫不確定指針變量值時(shí),將指針變量的初值設(shè)為空:NULL,表示指針不指向任何地址。

應(yīng)用范例:int * ptr_a=NULL;

或:int a; int * ptr_a=&a;

指針變量對(duì)應(yīng)的占位符:%p。


*:取指針?biāo)涗浀牡刂飞系淖兞恐怠?/span>

應(yīng)用范例:

int a=1;//初始化a=1。

int * ptr_a=&a;//初始化指針變量ptr_a為a的地址。

*ptr_a=2;//更改ptr_a所記錄的地址上變量的值,使該地址上的變量a的值變成2。


如果要用另一個(gè)指針來表示指針ptr_a的地址,請(qǐng)注意,定義指針的指針時(shí)需要兩個(gè)*。應(yīng)用范例:

int a=1;

int * ptr_a=&a;

*ptr_a=2;

int ** ptr_ptr_a=&ptr_a;若要通過指針ptr_a的指針ptr_ptr_a來訪問ptr_a指向的空間(所記錄地址上的變量值),則:

printf("%d",**ptr_ptr_a);




P46

數(shù)組就是一塊連續(xù)的內(nèi)存空間。數(shù)組名就是這塊連續(xù)內(nèi)存空間的首地址/首元素地址。

也就是說,假設(shè)有一數(shù)組,名為score,另有一指針變量ptr_score,則:

“ptr_score=&score[0];”與“ptr_score=score;”這兩種寫法是相等的。


關(guān)于指針運(yùn)算:


使用指針訪問數(shù)組元素:

?
9.1指針與數(shù)組 P46 - 11:15
?


打印時(shí),“score[5]”和“*(score+5)”這兩種寫法是相等的。



P48

二維數(shù)組的首地址也可以用數(shù)組名表示。也就是說,假設(shè)有一二維數(shù)組,名為score,另有一指針變量ptr_score,則:

打印時(shí),“score[ i ][ j ]”、“*(score[ i ]+j)”和“*(*(score+i)+j)"這三種寫法是相等的。

這一節(jié)很多東西難以總結(jié),看視頻+上手練習(xí)才能有效理解。




P50

函數(shù)分為內(nèi)置函數(shù)和自定義函數(shù)。

內(nèi)置函數(shù)由C語言系統(tǒng)提供,使用時(shí)需要在程序前用預(yù)處理指令處理導(dǎo)入頭文件。比如我們寫代碼時(shí)都要用#include<stdio.h>,而使用一些用來處理字符串的函數(shù)時(shí)一定要在程序前寫上#include<string.h>。

自定義函數(shù)可以帶參數(shù)也可以不帶,可以給返回值也可以不給。




P51

一些常用的內(nèi)置函數(shù):

注意:

1.使用以上部分函數(shù)進(jìn)行判斷時(shí),可能輸出結(jié)果并不只有0和1,還有其他數(shù)字。只需要記住,C語言中0位假,非0為真。

2.使用以上函數(shù)時(shí),如果括號(hào)中傳入的是數(shù)字,則表示ASCII碼。要輸入'數(shù)字'表示的才是數(shù)字。就像給char型變量賦值一樣。




P52

另一些常用的內(nèi)置函數(shù):

對(duì)ceil函數(shù),如果小數(shù)點(diǎn)后不為零,則往更大的數(shù)上進(jìn)1,如ceil(9.1)運(yùn)算結(jié)果為10.000000(double型小數(shù)點(diǎn)后是這么多位嗎?記不得了……)。如果需要運(yùn)算的數(shù)是負(fù)數(shù),如ceil(-9.1),那么運(yùn)算結(jié)果是-9,因?yàn)?9更大嘛。floor函數(shù)對(duì)負(fù)數(shù)的運(yùn)算規(guī)則也同理。


還有一些內(nèi)置函數(shù):


srand一般用時(shí)間作為種子,因?yàn)闀r(shí)間會(huì)變化,這樣出來的rand隨機(jī)數(shù)才會(huì)變化。用時(shí)間的話要用time.h頭文件,語句:srand(time(NULL));


用system函數(shù)調(diào)顏色玩的話,需要用到的小資料:


用system("cls")清屏可以做動(dòng)畫玩。




P53

我以后再回頭來學(xué)。




P54

自定義函數(shù)格式:

return_type function_name([datatype1 arg1],[datatype2 arg2],[...])

{

//函數(shù)體

}

其中的三要素:

1.返回值類型return_type

2.函數(shù)名function_name

3.各個(gè)參數(shù)類型和參數(shù)名稱(以上標(biāo)黃部分),參數(shù)可有可無、可多可少


自定義函數(shù)的完整寫法:


如果函數(shù)有返回值,調(diào)用時(shí)要使用對(duì)應(yīng)類型的變量來接收。

要一下返回多個(gè)值的話,可以返回?cái)?shù)組。

返回空值時(shí),函數(shù)返回值類型得是void,語句為:return;




暫時(shí)跳過P56-P57


P58

遞歸就是函數(shù)自己調(diào)用自己的過程。換個(gè)說法,編寫函數(shù)體的時(shí)候就用函數(shù)自己。不過要注意!設(shè)置遞歸退出條件,不然就無限調(diào)用啦。

來個(gè)例子:



暫時(shí)跳過P59-P63

P64

一個(gè)或多個(gè)字符形成的序列叫字符串。像“Hello, I'm Fanta Lone!”是一個(gè)字符串,當(dāng)然這一句的雙引號(hào)不算字符串的一部分。

C語言中的字符串使用字符數(shù)組來存儲(chǔ),相當(dāng)于每個(gè)字符都是字符數(shù)組中的一個(gè)元素。但是用存儲(chǔ)字符數(shù)組的方式存儲(chǔ)字符串時(shí),結(jié)尾一定是\0(這個(gè)是空字符,是字符串的終止符)。

比如說存儲(chǔ)一個(gè)名為“zifuchuan”內(nèi)容為“Cat”的字符串,語句為:

char zifuchuan[4]={'C','a','t','\0'};

另外也可以用這個(gè)語句存儲(chǔ):

char zifuchuan[4]="Cat";

[ ]內(nèi)的4也可以省略。




P65

新函數(shù):gets,用于錄入字符串;puts,用于輸出字符串。

用法:

先定義一個(gè)字符數(shù)組,假設(shè)它名為zifuchuan:

char zifuchuan[50];//隨便定個(gè)數(shù)組空間,免得以后不夠用。

然后進(jìn)行錄入:

gets(zifuchuan);//效果相當(dāng)于scanf("%s",zifuchuan);

再進(jìn)行輸出:

puts(zifuchuan);//效果相當(dāng)于printf("%s\n",zifuchuan);puts函數(shù)自帶末尾換行。

但是gets函數(shù)是存在問題的,已經(jīng)規(guī)定了數(shù)組空間是50,除開\0只能讀入49個(gè)字符,但是你就算輸入超過49個(gè)字符gets函數(shù)也照樣接受,這樣容易產(chǎn)生bug。

解決方法:不要用gets函數(shù)(…),用scanf或fgets函數(shù)。

fgets函數(shù)用法(同樣以zifuchuan為例):

fgets(zifuchuan,50,stdin);//即從標(biāo)準(zhǔn)輸入流中讀取50字節(jié)(49個(gè)字符+\n,沒錯(cuò)是\n)到數(shù)組zifuchuan中。




暫時(shí)跳過P65-P70


P71

定義、基本用法、注意事項(xiàng):



用法1:

用法2(將用法1中大段語句做成類似數(shù)組的形式):




P72

寫結(jié)構(gòu)語句其實(shí)也有兩種方法:


結(jié)構(gòu)里面裝結(jié)構(gòu)(像遞歸一樣)叫嵌套結(jié)構(gòu)。

例(第38行):


當(dāng)使用和打印嵌套結(jié)構(gòu)時(shí)用的語句(第45、46行):





P73

用法:

struct 結(jié)構(gòu)名 *指針名=&結(jié)構(gòu)名;

訪問時(shí):

printf("占位符",(*指針名) . 結(jié)構(gòu)成員);

或:

printf("占位符", 指針名->結(jié)構(gòu)成員);

如圖(47、51、52行):

typedef使用方法:

typedef struct 結(jié)構(gòu)名

{

//結(jié)構(gòu)體

}新名字;

以后就可以用新名字代替“struct 結(jié)構(gòu)名”了。

新函數(shù):gets,用于錄入字符串;puts,用于輸出字符串。

用法



好,今天就學(xué)到這里。

【零基礎(chǔ)學(xué)C語言】老九零基礎(chǔ)學(xué)編程系列之C語言的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
依兰县| 新源县| 乌兰县| 高雄市| 林周县| 古田县| 翁牛特旗| 遂宁市| 沂源县| 深水埗区| 桐梓县| 龙泉市| 西和县| 霍邱县| 贵定县| 登封市| 西充县| 长海县| 古田县| 双城市| 乐至县| 丰县| 太谷县| 霸州市| 达尔| 工布江达县| 吉林省| 平湖市| 河间市| 安达市| 岫岩| 炎陵县| 昭通市| 潜山县| 金阳县| 蒙城县| 古丈县| 漯河市| 廉江市| 兖州市| 新泰市|