學習c語言詳細筆記_第1頁
學習c語言詳細筆記_第2頁
學習c語言詳細筆記_第3頁
學習c語言詳細筆記_第4頁
學習c語言詳細筆記_第5頁
已閱讀5頁,還剩141頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C語言視頻教程

第一講:(1-13)C語言概述

一、為什么學習c語言

1)c的起源和發展

2)C的特點

3)C的應用領域

4)C的重要性

二、怎樣學習C語言

三、學習目標

四、常見問題答疑

(1)學習JAVA為什么建議先學C語言

(2)沒學過計算機專業課程能夠學懂C語言

(3)英語和數學不好能學好C語言么?

五、課程計劃

六、舉例子:一元二次方程

一、為什么學習C語言

1)C的起源和發展(ppt)

I機器語畬1第一代語言

I匯編語言~1第二代語言

在第三代語言中,以1980年為分水嶺,分為結構化和面向對象語言。

Fortran語言主要用于科學計算。

Basic語言是vb的前生,pascal語言一般是用于教學。

C語言是最重要的,其他的語言一般很少用了。結構化的代表語言是c語言。結構化語言的數

據和操作是分離的,導致在寫大項目的時候,會出現各種各樣莫名其妙的問題。

在面向對象的語言中C++是最復雜的語言。由于C++語言太復雜,sun公司對C++進行了改裝,

產生了java語言。而c#是由微軟開發的,和java相似,幾乎一模一樣。

■高級語言:a+b

■匯編語言ADDAX,BX

■機器語言00000001110110000

在高級語言的執行速度上,C是最快的,C++其次,而java和c#是最后的。Java和c#流行,主

要的一個原因是可以跨平臺。

■產生時間:1972-1973

■產生地點:美國貝爾實驗室(Bell)

■創始人:Dennis.M.Ritchie和Ken.Thompson

■目的:改寫UNIX操作系統

■C語言發展過程

?1983年ANSIC

?1987年ANSIC87

-1994年C99

2)C語言的特點:

?優點:代碼量小,速度快,功能強大。

金山公司最主要是靠wps辦公軟件來發展的。Wps是c語言開發的,其安裝包比Office少了10

多倍。

三大操作系統:windows,unix,linux

Windows內核是c語言寫的,而外殼是C++寫的。Java永遠不可能寫操作系統。因為java運行

速度太慢了。

而linux和unix都是純c寫的。

操作系統控制了硬件,如果說操作系統的運行速度慢,那么當我們在運行軟件的時候,運行速

度會更慢。

為什么使用c語言寫操作系統呢,首先是因為c的運行速度快,然后是因為c可以直接控制硬

件,而其他語言不可以。沒有指針的語言是不能直接訪問硬件的。

?缺點:危險性高,開發周期長,可移植性弱。

危險性高:寫同一個程序,在java中會報錯,而在c中不會報錯,為什么呢,因為c認為程序你想

怎么寫就怎么寫,c語言認為你寫的程序不是很離譜,他都認為你寫的這個程序有特殊的含義。可

以直接通過,而java則不可以。

開發周期長:c語言是面向過程的語言,面向過程的語言的特點就是在開發大項目的時候,很容易

崩潰,好比蓋大樓,C語言還要造大量的磚塊、鋼筋等結構原材料,而C++C#JAVA則進行了一定的

繼承封裝等操作,相當于原材料直接給你,你只需要用它蓋樓即可。

現在市場上的語言分三塊:

C/C++:單純的學習c是什么都做不了的。

Java

C#

可移植性不強:這是針對java來說的,因為java的可移植性太強了,所以就感覺說c的可移植性不

強。

3)C語言的應用領域:

■系統軟件開發

■操作系統:Windows,Linux、Unix

■驅動程序:主板驅動、顯卡驅動、攝像頭驅動

■數據庫:DB2、Oracle、SqlServer

■應用軟件開發

■辦公軟件:Wps

■圖形圖像多媒體:ACDSeePhotoshop

MediaPlayer

-嵌入式軟件開發:智能手機、掌上電腦

■游戲開發:2D、3D游戲

驅動一般是用c和匯編來寫的。

數據庫一般是用C和C++來寫的

4)C語言的重要性:

■有史以來最重要語言

?所有大學工科和理科學生必修課程

■最重要系統軟件:windows、linux、unix均使用c開發

?一名合格黑客必須掌握的語言

?任何一個想終身從事程序設計和開發人員必須熟練掌握的語言

?大企業、外企招聘程序員必考的語言

■為學習數據結構、C++、Java、C#奠定基礎

雖然應用場合相對較窄,但貼近系統內核,較底層。病毒最基本的是要感染系統,

數據結構,C,C++這三門語言是必須要學習的。

牛人牛語:

入門最基本的方法就是從C語言入手.

當你成為C語言的高手,那么就你很容易進入到操作系統的平臺里面去;

當你進入到操作系統的平臺里去實際做程序時,就會懂得進行調試;當你

懂得調試的時候,你就會發現能輕而易舉地了解整個平臺的架構。這時候

,計算機基本上一切都在你的掌握之中了,沒有什么東西能逃得出你的手

掌心

一一《編程箴言》梁肇新

梁肇新:編寫的超級解霸播放器軟件,被暴風影音收購。編寫的書《編程箴言》

二、怎樣學習C語言(ppt)

1、要將編程當成一項事業來經營,而不是糊口的工具。

2、途徑:多思考,多上機。

目標:不能光看,光聽,而要排錯,能看懂程序,能調試程序,自學能力要很強。

3、在犯錯誤中成長。

參考資料:

?譚浩強《C語言程序設計》清華

■《TheCprogramminglanguage》機械工業

■《CPrimerPlus》60元人名郵電

■《C和指針》65元人名郵電

■《C專家編程》絕版

?《C陷阱與缺陷》人名郵電30

?《C科學與藝術》機械,業

王爽寫的C++也很不錯

三、學習的目標(ppt)

掌握簡單的算法-解決問題的方法和步驟。

熟悉語法規則。

能看懂程序并調試程序。

四、常見問題答疑(ppt)

(1)學習JAVA為什么建議先學C語言

(2)沒學過計算機專業課程能夠學懂C語言

(3)英語和數學不好能學好C語言么?

C語言的關鍵字:

32個關鍵字:(由系統定義,不能重作其它定義)

autobreakcasecharconst

continuedefaultdodoubleelse

enumexternfloatforgoto

ifintlongregisterreturn

shortsignedsizeofstaticstruct

switchtypedefunsignedunionvoid

volatilewhile

五、課程計劃

共分23講

C語言簡介1講

第一講、基本編程知識1講

第二講、數據類型1講

第三講、運算符和表達式1講

第四講、流程控制4講

第五講、函數2講

第六講、數組1講

第七講、指針4講

第八講、變量的作用域和存儲方式1講

第九講、擴展數據類型1講

第十講、專題:

字符串的處理1講

進制料換1講

補碼1講

動態內存分配1講

綜合應用:鏈表的使用2講

六、舉例子:一元二次方程

C語言程序的格式:

#include<stdio.h>

#include<math.h>

intmain(void)

〃把三個系數保存在計算機中,定義三個變量。

inta=l;〃=不表示相等,表示賦值

intb=2;

intc=3;

floatdelta;//delta存放的是b*b-4*a*c//float改double

floatxl;〃存放一元二次方程的其中一個解

floatx2;〃存放一元二次方程的其中一個解

de1ta=b*b-4*a*c;

if(delta>0)

xl=(-b+sqrt(delta))/(2*a);

x2=(-b-sqrt(delta))/(2*a);〃兩個解

printf(“該一元二次方程有兩個解,xl=%f,x2=%f\n",xl,x2);

)

elseif(delta==O)

{

xl=(-b)/(2*a);〃唯一解

x2=xl;〃右邊值賦給左邊

printf(“該一元二次方程有一個唯一解,xl=x2=%f\nw,xl);

)

else

(

printf(“無解\n");〃無解

}

return0;

)

一定要養成良好的習慣:代碼規范,邊寫邊保存,括號成對

出現,應用空格。

VC6.0軟件操作:

新建保存關閉(關閉空間)

.cpp是原始文件,可單獨拷貝到其它電腦。

第二講:(14-25)C語言編程必備知識

1、Cpu,內存條,硬盤,顯卡,主板,顯示器之間關系。

Cpu不能直接處理硬盤上的數據,必須要先調入內存。

2、Helloword程序是如何運行起來的。

3、什么是數據類型

數據類型--數據的分類,對編程而言,首要考慮問題是數據的輸入和存

儲。可以分為

A:基本數據類型:(整數、浮點數、字符)

(1)整型

整型int—4字節一字節byte=8位bit

短整型shortint-2字節

長整型longint—8字節

(2)浮點型【實數】

單精度浮點數float:存儲范圍小-4字節

雙精度浮點數double:存儲范圍大-8字節

Float和Double都不能保證將小數完全準確保存。

(3)字符char:

c語言中是沒有字符串string字節

(區別于JAVA、C#中有string且C#中char為2字節)

B:復合類型:就是把基本類型拼湊在一起

結構體

枚舉-實用

共用體一基本淘汰

4、什么是變量

變量的本質是內存中一段存儲空間。

inti;i=5;i是變量,程序向系統申請了一個內存單元,在程序運行

中,i的值可以改變,但程序結束后,其所占的空間不是釋放,而是被系統

收回權限。

5、Cpu,內存條,VC++6.0,操作系統之間的關系。

6、變量為什么必須的初始化(即賦值)

軟件運行與內存關系(垃圾數據-9868598658)

內存是在操作系統的統一管理下使用的!

(1)軟件在運行前需要向操作系統申請存儲空間,在內存空間足夠空

閑時,操作系統將分配一段內存空間并將該外存中軟件拷貝一份存入該內

存空間中,并啟動該軟件運行。

(2)在軟件運行期間,該軟件所占內存空間不再分配給其他軟件。

(3)當該軟件運行完畢后,操作系統將回收該內存空間(注意:操作

系統并不清空該內存空間遺留下來的數據),以便再次分配給其他軟件使

用。《操作系統》一門課中系統分配表中會講到,用1標記表示內在是被占

用的,用0標記表示是空閑的。

綜上所述,一個軟件所分配到的空間中極可能存在著以前其他軟件使

用過后的殘留數據,這些數據被稱之為垃圾數據,所以通常情況下我們為

一個變量,為一個數組,分配好存儲空間之前都要對該內存空間初始化。

7、如何定義變量

數據類型變量名稱=賦予的值;

等價于

數據類型變量名;

變量名=要賦予的值;

舉例子:

int3;等價于inti;i=3;

inti,j;等價于intintj;

inti,j=3等價于intintj;j=3;

inti=3,j=5;等價于inti;intj;i=3;j=5;

inti,j;i=j=5;等價于inti,j;i=5;

8、什么是進制(逢幾進一)看ppt

我們規定八進制前面加0(零),十六進制前面加Ox。

在匯編中:在數字后加字母B表示二吐制裁,加學

母。表示人址制敷,加字母D表示十迷制數,加字母H表

示十六選制數。

例:

1Q11B為二進制數1011,也記為(1011)2

13570為八進制數1357,也記為(1357)J

2049D為十進制數2049,也記為(2049)lft.

3FB9H為十六進制數3FB9,也i己為(3FB9)16

■3(一)什么叫n進制

■十進制

■十個基數,逢10進一

■基數:0123456789

■二進制

-二個基數逢二進一

-基數:01

■2->103->114->1005->101

■八進制

?8個基數逢8進一

■基數:01234567

■8->109->1110->12

■十六進制:

■16個基數逢16進一

■基數:0123456789ABCEF或

>0123456789abedef

>16->1017->1118->1219->13

常用計數制對照表:

.十進制(D)二進制(B)八進制(0)十六進制(H)

常000。

1111

用21022

31133

410044

計510155

611066

711177

數81000居8

91001=9

31010&a

制二

1011位b

靛1100三C

后短d

對1101

工11105e

晶11111r

八昭、、

」■

Printf的基本用法:

printfCi=%d\n”,i);

/*

printf的用法

%d袤示以4■?進制輸等

%x或%X表示以十六遵制輸|出

%。表示以八進制輸出

*/

9、常量在c中是如何表示的

整數

十進制:傳統的寫法

十六進制:前面加Ox或0X

八進制:前面0注意是數字零不是字母。

浮點數

傳統的寫法

floatx3.2;//傳統

科學計數法

floatx3.2§3,〃x的值是3200

floatx123.45e-2,〃x的值是1.2345

I

字符

單個字符使用單引號括起來,多個字符串使用雙引號括起來(指針、

數組)。

公'表示字符A

公B,錯誤“AB”正確(字符串要用雙引號括起來)

"A"正確,因為“A”代表了代''0'的組合

intmain(void)

floatx=123.45e-2F|;1

printf("%f\n",x):

return0;

)

在c中,默認是double類型的。在后面加F表示當做float來處理,否

則會有警告提示-丟失部分字節。

10、常量以什么樣的二進制代碼存儲在計算機中?

編碼:

整數是以補碼的形式轉換為二進制代碼存儲在計算機

浮點數是以ieee754標準轉換為二進制代碼存儲

字符本質實際是與整數的存儲方式相同,ASCII碼標準。

第二講:(26-46)

一、代碼規范化

?可以參考林銳《高質量C/C++編程》

?代碼的規范化非常的重要,是學習一門編程語言的基礎,代碼可以允

許錯誤,但不能不規范。

例如:

成對敲括號{}()

加空格于運算符和數字之間i=1+2;

加縮進分清上下級地位。

換行--進行功能區域分隔or{}括號單獨成一行。

?代碼規范化的好處

1:整齊,別人和自己都容易看懂。

2:代碼規范了,代碼不容易出錯。

3:一般的程序可以分為三塊:

a:定義變量

b:對變量進行操作

c:輸出值

二、什么是字節

?存儲數據的單位,并且是硬件所能訪問的最小單位。

內存中存儲的最小單位是位bit(O或1),但是硬件控制的時候不能精確

到位,只能精確到字節(8位),是通過地址總線來控制的,而精確到位是

通過軟件來控制的,叫做位運算符來精確到位的。

1字節=8位

1K=1024字節

1M=1024K

1G=1024M

1T=1024G

2G的內存條的總空間:

2*1024*1024*1024*8=4*1032

三、不同類型數據之間相互賦值的問題

不同數據類型之間最好不要相互轉換。

inti=45;

longj=102345;

i=J;

printf(*%ld%d\n”,i,j);

floatx=6.6,

doubley=8.8;

printf(*%f%lf\n,x,y"),

inti

如果需要明白這個知識點,那么需要明白補碼。

四、什么是ASCII碼

0include<stdio.h>

intmain(void)

(

Icharch=A'.//4行OK等價charch,赤=?A'.

//charch="AB"http://error因為"AB"是字符串,我們不能把字符串賦給單個字符

//charch="A".//error

//charch='AB',//'AB'是錯誤的

//charch二'B',"error,因為ch變量已經在4行定義了,這樣會導致變量名被:

ch='C;

printf(x%c\n*,ch);

在上圖中注釋的最后一樣是重復定義了ch的值,是錯誤的,而下面的

ch=七是指把C賦值給ch,是正確的。

以Char定義變量的時候,只能使用單引號括起一個字符才是正確的。

Uinc1ude<stdio.h>

intmainlxpid)

cQr'b"

printch).

return0;

)

上圖中輸出的值是98(將字符以整數%d的形式輸出)

Ascii碼規定了ch是以哪個值去保存。

Ascii碼不是一個值,而是一種規定,

規定了不同的字符是以哪個整數值去表示。

它規定了:

W-65'B,-66

匕'-97W-98

'0'--48

五、字符的存儲

字符本質上與整數的存儲方式相同

基本的輸入和輸出函數的用法:

Printf()

——將變量的內容輸出到顯示器上。

四種用法:

1.printf("字符串");

2.printf("輸出控制符“,輸出參數);

3.printf("輸出控制符1輸出控制符2.。。*,輸出參數1,

輸出控制符和輸出參數的個數必須一一對應

4.printfC輸出控制和非輸出控制符:輸出參數)|;

輸什么是輸出控制符,什么是非輸出控制符

輸出控制符包含如下:

%d—int

%ld―longint

%c—char

%f—float

%lf-double

%x(或者%X后者%#X)int或longint或shortint

%o—同上

%sI—字符串1

Printf為什么需要輸出控制符:

?01組成的代碼可以表示數據也可以表示指令。必須要有輸出控制符告訴

他怎么去解讀。

?如果01組成的代碼表示的是數據的話,那么同樣的01代碼組合以不同

的輸出格式輸出就會有不同的輸出結果,所以必須要有輸出控制符。

8include<stdio.h>

intmain(void)

intx=47,〃100是十進制

printf("%x\rT,x);〃輸出結果是:2f

printf(^%X\n*,x);//輸出結臬是:2F

printfC%8X\n\x);//輸出結果是:0X2F|

printfx),〃輸出結果是:0乂2f

return0;

在上圖中,intx=47,如果前面加0(零)048表示的是八進制,如果前面

加Ox(零x)0X47則表示的是十六進制,而在輸出的時候,則是。(字母o)

表示八進制,ox(字母o,x)表示十六進制。

非輸出控制符:非輸出控制符在輸出的時候會原樣輸出。

printf(*i=%d,j=%d\n*,j,k);

Scanf()一一通過鍵盤將數據輸入到變量中

有兩種用法:

用法一:scanf("輸入控制符",輸入參數);

功能:將從鍵盤輸入的字神轉化為輸入控制符所規定格式的數據

,然后存入以輸入參數的值為地址的變量中|

示例:

#include<stdio.h>

intmain(void)

(

inti;

scanf&i);//&i表示i的地址&是一個取地址符

printf("i=%d'n”,i);

return0;|

)

非輸入控制符:在輸入的時候也會原樣輸入。

用法二:scanf「非檢入控制符檢入控制符,輸入參數);

功能:將從鍵盤愴入的字符轉化為愴入控制符所規定格式的數據

,然后存入以輸入參數的值為地址的變量中

非輸入控制符必須原樣輸入

"include<stdio.h>

intmain(void)

{

inti,

I”.

scanf("m%d,&i),

printf(*i=%d\n\i)^

return0;

}

但是強烈建議:在使用scanf的時候,不使用非輸入控制符。

給多個變量賦值:

#include<stdio.h>

intmain(void)

(

inti,j;

scanf(“%d%d”,&i,&j);

printf(ui=%d,j=%d\nw,i,j);

return0;

)

需要記住,非控制符需要原樣輸入。

如何使用scanf編寫出高質量代碼

如何使用scanf編寫出高質量代碼

1,使用scanf之前最好先使用printf提示用戶以什么樣的

方式來輸入

2.scanf中盡量不要使用非輸入控制符,尤其是不要用\n|

ftinclude<stdio.h>

intmain(void)

{

inti;

[scanf(〃陶八n“,&i);〃非常不好的格式,不要加\n

printf(^i=%d'n”,i);

return0;

}

3.應該編寫代碼對用戶的非法輸入做適當的處理【非重點】

while((ch=getchar())!='\n')

continue;

Sinclude<stdio.h>

intmain(void)

(

inti;

charch;

scanf("%d",&i);

printf(^i二強d'n”,i);

I//-.........、,,

while((ch=getchar())!='\n')

//continue;

intj;

scanf("%d",&j);

printf("j=%d'n”j);

return0;

}

運算符:

(1)算術運算符:

加(+)減(一)乘(*)除(/)取余(%)

(2)關系運算符:

(3)邏輯運算符:

!(非)&&(并且)II(或)

[真假

!假真

真&&真真

真&&假

假&&真假

假&&假

真假

II真

假真

II真

真II真假

假II假

C語言對真假的處理

非零是真

零是假[

真是1表示

假是。表示

&&左邊的表達式為假右邊的表達式肯定不會執行

11左邊的表達式為真I右邊的表達式肯定不會執行

(4)賦值運算符:

=+=*=/—

例如:a+=3是等價于a=a+3,a/=3等價于a=aR

其優先級別是算術〉關系〉邏輯〉賦值。

■除法與取模運算符

■除法/的運算結果和運算對象的數據類型有關,兩個數都是int

,則商就是int,若商有小數,則截取小數部分;被除數和除數

中只要有一個或兩個都是浮點型數據,則商也是浮點型,不

截取小數部分。

如:16/5==316/5.0==3.20000-13/4==-4

-13/-3==43/5==05/3==1

最典型的例題就是求s=1+1/2+1/3+1/4+1/5--..+1/100的值(具體程序我

們以后再講).

?取余%的運算對象必須是整數,結果是整除后的余數,其余數

的符號與被除數相同

如:13%3=?113%-3==1-13%3==-1

-13%23==-133%5==3

?測試取模運算符的例子

I.#include<stdio.h>

2.intmain(void)

工{

printf("%d%d%d%d%d%d\n';3%3,13%-3,-13%3,-13%-3,-13%23,3%5);

5.return0;

6.}

7.r

8.輸出結果是:

***m*******m*********************

10.01-1-1-133

itPressanykeytocontinue

〔2*******************************m*********

總結:取余%的運算對象點是整數,結果是雌后的球,其余數的符號與被除數相同

14.*/

取余的結果的正負只和被除數有關。

第四講(47-96)

流程控制(第一個重點):

1、什么是流程控制

程序代碼執行的順序。

2、流程控制的分類

①順序執行

②選擇執行

定義:某些代碼可能執行,也可能不執行,有選擇的執行某些代碼。

③循環執行

分類:if>switch

1.金最簡單的用法

2.if的范圍問題

3.if.,else...的用法

4.if..elseif...else...的用法

5.C語言對真假的處理

6.if舉例一求分數的等級

7.if的常見問題解析

if最簡單的用法:

1.if最簡單的用法

格式:

if(表達式)

語句

功能:

如果表達式為真,執行語句

如果表達式為假,語句不執行

#include<stdio.h>

intmain(void)

if(3)

printf("AAAA'n");〃會輸出

if(0)

printf;〃不會輸出

if(0==0)

printf("CCCC'n");〃會輸出

return0;

2.if的范圍問題

1.

if(表達式)

語句A;

語句B;

解釋:if躍認只能控制語句A的執行或不執行

if無法控制語句B的執行或不執行

或者講:語句B一定會執行

if*認的只能控制一個語句的執行或不執行|

2.

if(表達式)

語句A;

語句B;

)

此時if可以控制語句A和語句B

I

由此可見:if默認只能控制一個語句的執行或不執行

如果想控制多個語句的執行或不執行

就必須把這些語句用{}括起來|

如果想控制多個語句的執行或者不執行,那么需要使用{}括起來。

3.if...else...的用法:

#include<stdio.h>

intmain(void)

(

inti]j;

scanf("%dM,&j);

if(i>j)

printf(〃i大于八n〃);

else

printf("i小于j\n〃);

return0;

)

4include<stdio.h>

intmain(void)

(

if(1|>2)

printf("AAAA'n");

else

printf;

printf("CCCC'n");

return0;

}

4、if...elseif...else的用法:(格式)

if(1)

A"

elseif(2)

應;

elseif(3)

C;

else

D:

#include<stdio.h>

intmain(void)

doubledelta=3;

if(delta>0)I

printf("看兩個解八n");

elseif(delta==0)

printf("有一個唯一解!\n");

else

printf("無解!、nf);

return0;

}

C錯誤的if...elseif...else語句:

ttinclude<stdio.h>

intmain(void)

doubledelta=~1;

if(delta>0)

printf("看兩個解!\n");

]printf("哈哈!\n");

elseif(delta==0)

printf("有一個唯一解!\n");

else

printf("無解八n");

return0;

}

在上圖中,當執行到哈哈那句時,下面的else將會被算作另外一個語

句來執行,而在我們的c語言中,沒有以else開頭的語句。所以會出錯。

5、C語言對真假的處理

非零是真(真用1表示)

零就是假(假用0表示)

6、if實例(舉例-一求分數的等級):

Ainclude<stdio.h>

intmain(uoid)

(

Floatscore;//score分數

printf(“請輸入您的考試成績:”);

scanF,%”,ftscore);

if(score>100)

printf(“這是做夢,\n“);

elseif(score>=90&&score<=100)〃不能寫成90<=score<=100

printf(“優秀八n”);

elseif(score>=80&&score<90)

printf(“良好八n”);

elseif(score>=60&&score<80)

printf("及格八n”);

elseif(score>=0&&score<60)

printf,不及格?繼續努力,\n”);

else

printf(“輸入的分數過低,不要如此自卑八n“);

return0;

(1)變量的替換:(互換兩個數字)

intt:〃定義臨時變;I

和7行代碼無法定成i和j的〃.換

'7fi.=j.:////6行1=5.:j?=5一:

J=1://Ifj1=□:J=0:

I

//正確的九換i和j的方法I

t=i:

i=j:

j=t:

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

return0:

(2)對任意三個數字進行排序:

inta,b,c;〃等價于:inta;intb;intc;

intt;

printf(“請輸入三個整數(中間以空格分隔):“);

scanf("%d%d%d",&a,&b,&c);

〃編寫代碼完成a是最大值b是中間值c是最小值

>

printf(-%d%d\n",a,b,c);

return0;

(3)(:語言常見誤區:

①素數:只能被1和自己整除的數,如1,5,9等。

②回文數:正著寫和倒著寫一樣的數。如1221,121,等。

③編程實現求一個十進制數字的二進制形式。

④求一個數字的每位是奇數的數字取出來組合形成的新數字。

⑤求一個數字倒過來的數字。

算法:解題的方法和步驟。

如何看懂一個程序,分三步:

1、流程:也就是程序執行的順序;

2、每個語句的功能;

3、試數:找一個數帶入程序驗證。

如何學習一些需要算法的程序(如何掌握一個程序):

1、嘗試自己編程解決它,但要意識到大部分人都是自己無法解決的,

這時不要氣餒。如果十五分鐘還想不出來,此時我建議您就可以看答案了。

2、如果解決不了,看答案。

3、關鍵是把答案看懂,這個要花很大的精力,也是我們學習的重點。

看懂一個程序要分三步:流程、每個語句的功能、試數。

4、看懂之后嘗試自己修改程序,并且知道修改之后程序的不同輸出結

果的含義。不建議看懂程序之后就立即自己敲程序。

5、照著答案去敲

6、調試錯誤

7、自己不看答案,自己獨立把答案敲出來。

8、如果程序實在是徹底無法理解,就把他背會。(很少有這種程序)

7、if常見的問題解析:

1、空語句的問題:

if(3>2);

等價于

if(3>2)

;//這是一個空語句

intmain(void)

(

if(1>2)

printf("還;

printf("BBBB\n");

return0;

在上圖中,最終的結果會是AAAA,BBBB,程序也不會報錯,為什么呢,

因為在程序執行的時候,會在;哪里認為是一個空語句。也就是說,如果

if成立,那么執行空語句。

2、If常見錯誤解析(重點)

if(表達式1)

A:

else

B;

是正確的

if(表達式D;lI

A;

else

B;

是錯誤的

ttinclude<stdio.h>

intmain(void)

(

if(3>2)〃4行如果這里加分號,則會導致程序編譯到6行時就會出錯

printf("哈哈!\n*);

<lse//6行

printf("嘿嘿!\n");

return0,

上面這個程序是錯誤的,為什么呢,在該程序中,總的有4個語句,

而在以else開頭的那個語句中是有錯誤的,因為在c語言中是沒有以else

開頭的這種語法。

3、If常見錯誤解析

if(表達式1)

A;

elseif(表達式2)

B;

elseif(表達式3)

c;

else

即便表達式1和2都成立,也只會執行A語句。

程序測試:

#include<stdio.h>

intmain(void)

{

if(3>2)

printf("AAAA'n");

elseif(3>1)

printf("BBBB\n〃);

elseI

printf("CCCC'n");

return0,

}

在上面這個程序中,最終的值是AAAA,雖說后面的3>1也滿足條件,

但是當3>2滿足條件后,該if語句就會終止,后面的語句是不會在執行的。

4、If常見錯誤解析(用成績等級程序驗證)

if(表達式1)

A;

elseif(表達式2)

B;

elseif(表達式3)

C;

這樣寫語法不會出錯,但邏輯上有漏洞

5、If常見錯誤解析(用成績等級程序驗證)

if(表達式1)

A'

elseif(表達式2)

B■

elseif(表達式3)

C;

else1(表達式4)〃7行

D;

這樣寫是不對的,正確的寫法是:

要么去掉第7行的(表達式4)

要么在第7行的else后面加if

6、If常見錯誤解析(if常見問題解析_5.cpp)

if(表達式1)

elseif(表達式2)

B;

elseif(表達式3)

C;丁

else(表達式4);工

D;

這樣寫語法不會出錯,但邏輯上是錯誤的

else(表達式4);

D;

等價于

else

(表達式4);

D;I

③循環的定義、分類。

定義:某些代碼會被重復執行。

分類:for(重點)

while

do.......while

(1)格式:for(1;2;3)

語句A;

(2)執行的流程(重點)

單個for循環的使用

多個for循環的嵌套使用(具體附后)

(3)范圍問題:{}

(4)舉例:1+2+3+...+100

1+1/2+1/3+...+1/100

#include<stdio.h>

intmain(void)

(

inti;

intsum=0-?■

|i-

for(i=l,i<=4+T

sum=s⑥+i,

printf(*sum=%d\n”,sum);

return0,

在上圖中,先執行1,在執行2,2如果成立,標志著循環成立,那么

在執行4,最后在執行3,3執行完后代表一次循環完成,然后在執行2.以

此類推。1永遠只執行一次。

++i等價于i+1

例1:求1-10的所有奇數的和:

#include<stdio.h>

intmain(void)

{

inti;

intsum=0,

for(i=l;i<10;i+=2)//i+=2;等價于i=i+2;

{

sum=sum+i|;

)

return0;

)

for所控制的語句:

#include<stdio.h>

intmain(void)

{I

inti;

for(i=l;i<4;++i)

(

printf("AAAA'n");

printf;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論