C語言程序設(shè)計(jì)_第1頁
C語言程序設(shè)計(jì)_第2頁
C語言程序設(shè)計(jì)_第3頁
C語言程序設(shè)計(jì)_第4頁
C語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第1章概述C語言教學(xué)網(wǎng)站:

http://c.ytu.edu.cn1.1程序設(shè)計(jì)與高級(jí)語言1.1.1程序與程序設(shè)計(jì)程序是使用計(jì)算機(jī)語言解決某個(gè)問題的方法和步驟的描述。而程序設(shè)計(jì)是在某一程序語言環(huán)境下,編寫出能夠使計(jì)算機(jī)理解并執(zhí)行的程序代碼。因此,可以說計(jì)算機(jī)語言是人與計(jì)算機(jī)進(jìn)行交流的工具。

程序的特點(diǎn)例如:求兩個(gè)整數(shù)和的方法和步驟如下:第一步獲取兩個(gè)整數(shù)a和b;

第二步計(jì)算c=a+b;

第三步輸出c;

第四步結(jié)束?!纠?.1】求兩數(shù)和。#include<stdio.h>

main(){

inta,b,c;

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

c=a+b;

printf("sum=%d\n",c);}1.1.2高級(jí)語言

最早期是用二進(jìn)制代碼編寫程序,稱為“機(jī)器語言”,機(jī)器語言難以記憶。

匯編語言,匯編語言用符號(hào)來代表二進(jìn)制代碼,所以又稱為“符號(hào)語言”。機(jī)器語言和匯編語言都是“面向機(jī)器的語言”,又稱為“低級(jí)語言”。程序設(shè)計(jì)的關(guān)鍵是將問題解決的算法過程描述出來,同時(shí)脫離了對機(jī)型要求、并且能夠面向問題設(shè)計(jì)計(jì)算機(jī)程序,高級(jí)語言的特點(diǎn)是更加接近自然語言和數(shù)學(xué)語言,非常容易掌握和普及。高級(jí)語言編寫的程序稱為“源程序”。計(jì)算機(jī)只能接受0和1組成的二進(jìn)制程序。翻譯程序有兩種執(zhí)行方式:一種是翻譯一句執(zhí)行一句,稱為“解釋執(zhí)行”方式,完成翻譯工作的程序?yàn)椤敖忉尦绦颉?;另一種是將源程序全部翻譯成二進(jìn)制程序后再執(zhí)行,此種執(zhí)行方式稱為“編譯執(zhí)行”方式,完成翻譯工作的程序稱為“編譯程序”。C語言源程序C語言編譯程序二進(jìn)制機(jī)器指令執(zhí)行源程序過程源程序的編輯

源文件名用戶自定,文件的擴(kuò)展名為“.c”或“.cpp”。

2.編譯系統(tǒng)會(huì)自動(dòng)生成二進(jìn)制程序(.obj),稱為“目標(biāo)文件”。3.連接

用戶必須用連接編輯器將它和其他目標(biāo)文件以及系統(tǒng)所提供的庫函數(shù)進(jìn)行連接,生成可執(zhí)行文件(.exe)才能執(zhí)行。

4.執(zhí)行執(zhí)行文件生成后,可直接執(zhí)行它了。

p21.2算法

學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)語言的目的,是要用語言作為工具,設(shè)計(jì)出計(jì)算機(jī)能夠運(yùn)行的程序。設(shè)計(jì)一個(gè)程序首先需要作兩方面的工作:一是選定合理的數(shù)據(jù)結(jié)構(gòu);二是設(shè)計(jì)解決問題的算法。程序算法+數(shù)據(jù)結(jié)構(gòu)1.2.1算法的特性

算法是指為了解決某個(gè)特定問題而采用的確定且有效的步驟。p2計(jì)算機(jī)算法可分為兩大類別:數(shù)值運(yùn)算和非數(shù)值運(yùn)算。

數(shù)值運(yùn)算的目的是求數(shù)值解,例如,求方程的根、求圓的面積、求n的階乘等,都屬于數(shù)值運(yùn)算。

非數(shù)值運(yùn)算包括的面十分廣泛,主要用于事務(wù)管理,例如,人事管理、圖書管理、學(xué)籍管理等。

算法五個(gè)特性1.有窮性2.確定性3.可行性4.有零個(gè)或多個(gè)輸入5.有一個(gè)或多個(gè)輸出p31.2.2用流程圖表示算法

算法可以用各種描述方法來進(jìn)行描述,常用的是用偽代碼、傳統(tǒng)流程圖和N-S圖,將算法勾畫出來,然后,根據(jù)流程圖編寫程序代碼。流程圖又稱框圖。1.偽代碼【例1.2】用偽代碼描述輸出x的絕對值。p3IFxispositiveTHENprintxELSEprint–x也可以中英混用,將上例改寫成:若x為正打印x否則打印-x2.傳統(tǒng)流程圖p3

開始/結(jié)束框處理框輸入/輸出框判斷框流程線連接點(diǎn)【例1.3】求兩個(gè)整數(shù)和的算法的流程圖p4(a)傳統(tǒng)流程圖計(jì)算c=a+b開始輸入a,b輸出c值結(jié)束(b)N-S流程圖輸出a,b計(jì)算c=a+b輸出c值3.N-S流程圖語句1語句21.3.1C語言的發(fā)展史C語言的前身是ALGOL語言。在ALGOL語言基礎(chǔ)上增添了處理硬件的能力,推出了CPL語言。對CPL語言進(jìn)行了簡化,推出了BCPL語言。既簡單又接近硬件系統(tǒng)的B語言。1972年美國貝爾實(shí)驗(yàn)室(BellLaboratories)的Dennis.M.Ritchie在B語言的基礎(chǔ)上設(shè)計(jì)出C語言。美國標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)于1983年制定了一套ANSIC標(biāo)準(zhǔn),此后又相繼推出87ANSI、C99標(biāo)準(zhǔn)。1.3C語言的發(fā)展史與特點(diǎn)

模塊化結(jié)構(gòu)----是程序設(shè)計(jì)的方法由許多個(gè)模塊組成了一個(gè)結(jié)構(gòu)化程序。用這種方法設(shè)計(jì)的程序結(jié)構(gòu)稱為“模塊化結(jié)構(gòu)”。在設(shè)計(jì)程序結(jié)構(gòu)時(shí),通常采用“自頂向下,逐步細(xì)化”的方法,由若干個(gè)模塊組成的程序靠主程序調(diào)動(dòng)起來分頭執(zhí)行各個(gè)模塊,來共同完成復(fù)雜任務(wù)。這個(gè)主程序又稱“主控模塊”。這種處理問題的過程可稱為:“自頂向下;逐步細(xì)化;模塊化設(shè)計(jì);結(jié)構(gòu)化編碼”。p51.3.2模塊化結(jié)構(gòu)

C語言的特點(diǎn)

1.結(jié)構(gòu)化語言

2.簡潔、緊湊、靈活3.運(yùn)算符豐富4.中級(jí)語言5.移植性好6.功能強(qiáng)大7.編譯語言8.語法限制不嚴(yán)格,程序設(shè)計(jì)自由度大1.4C語言程序結(jié)構(gòu)及書寫規(guī)則

1.4.1C程序的基本結(jié)構(gòu)

C程序是由一個(gè)主函數(shù)和若干個(gè)(或0個(gè))用戶函數(shù)組成的,主函數(shù)和用戶函數(shù)的位置是任意的。但它們的調(diào)用關(guān)系是一定的。即主函數(shù)可以調(diào)用任何用戶函數(shù),用戶函數(shù)間可以互相調(diào)用,但不能調(diào)用主函數(shù)。用戶函數(shù)甚至可以調(diào)用自己,這種調(diào)用稱為遞歸調(diào)用(第5章)。p6

1.4.2程序的書寫規(guī)則

一個(gè)函數(shù)由兩部分組成一個(gè)函數(shù)包括----函數(shù)說明部分和函數(shù)體兩個(gè)部分1.函數(shù)說明部分(又稱函數(shù)頭)2.函數(shù)體C程序書寫格式隨意,除了保留字外,任何地方都可以插入空格、回車換行符。p7

C程序的執(zhí)行順序C程序總是從main()函數(shù)開始執(zhí)行,而不論main()函數(shù)在整個(gè)程序中的位置如何。從主函數(shù)的第一條語句開始執(zhí)行,直到主函數(shù)的最后一條語句結(jié)束。非主函數(shù)的執(zhí)行必須通過“函數(shù)調(diào)用”。

1.5C語言的基本詞法

1.5.1字符集1.大小寫英文字母

A,B,C,……,Z,a,b,c,……,z2.?dāng)?shù)字0,1,2,3,4,5,6,7,8,93.鍵盤符號(hào)p74.轉(zhuǎn)義字符p81.5.2保留字1.?dāng)?shù)據(jù)類型符p8保留字中文含義保留字中文含義char字符型double雙精度型int整型struct結(jié)構(gòu)型short短整型union共用型long長整型typedef類型定義型signedint帶符號(hào)整型enum枚舉型unsignedint無符號(hào)整型void空類型float浮點(diǎn)型const常量2.

存儲(chǔ)類型符

p8保留字中文含義保留字中文含義auto自動(dòng)static靜態(tài)register寄存器extern外部3.其它保留字

p8保留字中文含義保留字中文含義break中止goto轉(zhuǎn)向case情況if如果continue繼續(xù)return返回default缺省sizeof計(jì)算字節(jié)數(shù)do做switch開關(guān)else否則volatile可變的for對于while當(dāng)1.5.3預(yù)定義標(biāo)識(shí)符p9保留字中文含義保留字中文含義define宏定義include包含undef撤消定義ifdef如果定義ifndef如果未定義endif編譯結(jié)束line行

1.5.4標(biāo)識(shí)符

標(biāo)識(shí)符是指用戶定義的一種字符序列,通常用來表示程序中的變量、符號(hào)常量、函數(shù)、數(shù)組、類型等對象的名字。C語言規(guī)定:1.標(biāo)識(shí)符是由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。程序中使用的用戶標(biāo)識(shí)符除要遵循命名規(guī)則外,還應(yīng)注意“見名知義”。2.用戶選取的標(biāo)識(shí)符不能是C語言預(yù)留的保留字。3.C語言是區(qū)分大小寫字母的。因此,sum和Sum及SUM是不同的標(biāo)識(shí)符。

p9例如:合法的標(biāo)識(shí)符:sumaveragedaya2_abovex_1_2_3BASICyesHstudent_1而下面是一些不合法的標(biāo)識(shí)符:a?c.gA$123

#33123H

a–0printf\n4.C語言中標(biāo)識(shí)符的長度(字符個(gè)數(shù))無統(tǒng)一規(guī)定,隨系統(tǒng)不同而異。1.5.5C語言的詞類1.常量2.變量3.運(yùn)算符4.函數(shù)調(diào)用5.表達(dá)式6.保留字1.6C語言的基本語句

C語句是C程序的基本單位。C語句由表達(dá)式加上語句結(jié)束符構(gòu)成。格式為:表達(dá)式;1.數(shù)據(jù)定義語句

intx,y,sum;2.賦值語句

x=3;3.函數(shù)調(diào)用語句格式為:函數(shù)名(實(shí)參表);printf("%d,%d\n",x,y);4.表達(dá)式語句

a+3;5.流程控制語句6.復(fù)合語句7.空語句8.其它語句p101.7標(biāo)準(zhǔn)輸入/輸出函數(shù)

TurboC標(biāo)準(zhǔn)庫“stdio.h”提供了若干個(gè)輸入/輸出函數(shù),這些函數(shù)的作用是完成程序中需要數(shù)據(jù)的讀(輸入操作)和寫(輸出操作)。p253數(shù)學(xué)庫函數(shù):math.hp2521.7.1格式化輸入/輸出函數(shù)1.printf()函數(shù)功能:printf()函數(shù)是格式化輸出函數(shù)。調(diào)用格式為:

printf("<格式控制字符串>",<輸出列表>)printf("%d",a);printf函數(shù)的參數(shù)包括兩部分:格式控制字符串和輸出項(xiàng)列表格式字符說明如下:①

普通字符普通字符即需要原樣輸出的字符【例1.4】輸出一串字符:

“ThisisaCprogram.”#include<stdio.h>main(){printf("ThisisaCprogram.");}p12②格式字符

由前導(dǎo)字符“%”開頭,后面加上格式字符,表示輸出內(nèi)容的指定格式。

%d %ld %u%lu%o %x %X %c%s%f%lf%Lf %e%E【例1.5】當(dāng)a=3,b=-3.14時(shí),輸出a和b的值。#include<stdio.h>main(){inta=3;floatb=-3.14;

printf("a=%d,b=%f\n",a,b);}a=3,b=-3.140000p12③附加格式字符(m,n,+,–)【例1.6】printf()函數(shù)輸出寬度的定義舉例。#include<stdio.h>1main()2{3inta=3,b=12345;4charx[]={"1234567890"};5chary[]={"abcdefghijklmn"};6printf("%10d,%8d\n",a,b);7printf("%13s,%8s\n",x,y);8printf("%–3d,%–3d\n",a,b);9}p13?????????3,???12345???1234567890,abcdefghijklmn

3??,12345(?為空字符)【例1.7】按格式定義寬度輸出實(shí)型數(shù)據(jù)。#include<stdio.h>main(){floata=12345.6,b=123.789,c=12.34567;printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c);}p13輸出指定寬度字符串,使用%m.ns格式符

例如:%6.9s若多于6個(gè)字符,寬度位6無效,但多于9個(gè)字符,第9個(gè)字符后的字符不輸出。%9.6s最多輸出6個(gè)字符,由于定義9個(gè)字符位,左邊要補(bǔ)空格。【例1.8】按格式定義寬度輸出字符串#include<stdio.h>main(){

printf("%3s,%7.2s,%.4s,%-5.3s\n","CHINA","CHINA","CHINA","CHINA");}p14運(yùn)行結(jié)果為:CHINA,CH,CHIN,CHI【例1.9】按格式定義寬度輸出各種類型的數(shù)據(jù)。#include<stdio.h>main(){charc=’1′;inta=1234,b;floatf=3.141592653589;doublex=0.12345678987654321;

printf("a=%d\n",a);

printf("a=%6d\n",a);

printf("a=%06d\n",a);

printf("a=%2d\n",a);

printf("f=%f\n",f);

printf("f=%6.4f\n",f);

printf("x=%f\n",x);

printf("x=%18.6lf\n",x);

printf("c=%c\n",c);

printf("c=%c\n",c);}p14a=1234a=??1234a=001234a=1234f=3.141593f=3.1416x=0.123457x=??????????0.123457c=1轉(zhuǎn)義字符

p15\n\t\v\b\r\f【例1.10】轉(zhuǎn)義字符′\201′輸出的字符ü(在擴(kuò)展ASCII中)。#include<stdio.h>main(){charch;ch=’\101’;

/*\101是3八進(jìn)制整數(shù)*/

printf("%c\n",ch);}A2.scanf()函數(shù)

功能:scanf()函數(shù)是格式化輸入函數(shù),該函數(shù)的功能是程序執(zhí)行時(shí)從標(biāo)準(zhǔn)讀入設(shè)備(鍵盤)讀取程序中所需要的信息,通常稱其為標(biāo)準(zhǔn)輸入函數(shù)。該函數(shù)在程序通過編譯后,程序運(yùn)行時(shí)完成變量取值操作。

scanf("<格式字符串>",地址表);(1)地址表地址表是由若干個(gè)地址組成的列表,可以是變量的地址或字符串的首地址等。變量的地址用字符"&"加上變量名表示,其中"&"為取地址運(yùn)算符,地址表中各個(gè)變量之間用“,”分開。(2)格式字符串格式字符串中包括格式控制符和格式定義符,格式控制符與printf()函數(shù)基本相同?!纠?.11】給整數(shù)a、b賦值5和8,并指定以“a=5,b=8”

格式輸出。#include<stdio.h>main(){inta,b;

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

printf("a=%d,b=%d\n",a,b);}p1658↙a=5,b=858↙(Enter)或5

8↙或分成兩行輸入5↙8↙(1)格式分隔符

分隔數(shù)據(jù)

空格

TAB

回車

(2)格式字符

d %u %o %x,%X%c%s %f %E,%G(3)附加字符格式符Lhw(域?qū)?*p16【例1.12】輸入“123456”,觀察變量a,b變量取值方式。#include<stdio.h>main(){inta,b;scanf("%3d%3d",&a,&b);printf("a=%d,b=%d\n",a,b);}p17【例1.13】空格作為字符數(shù)據(jù)讀入。

#include<stdio.h>main(){chara,b,c;scanf("%c%c%c",&a,&b,&c);/*3個(gè)變量的數(shù)據(jù)連續(xù)讀入*/

printf("%c%c%c\n",a,b,c);}XYZ↙XY

【例1.14】“v”字符的輸入結(jié)束了變量a的取值。

#include<stdio.h>main(){inta;charb;floatc;scanf("%d%c%f",&a,&b,&c);printf("a=%d,b=%c,c=%f\n",a,b,c);}12v345.678↙a=12,b=v,c=345.678009p18【例1.15】在一個(gè)程序中出現(xiàn)幾次scanf函數(shù)的調(diào)用,可按規(guī)定格式順序在一行內(nèi)完成輸入(或幾行)。

#include<stdio.h>main(){inta,b,c,d,e,f;scanf("%d%d",&a,&b);scanf("%d%d",&c,&d);scanf("%d",&e);scanf("%d",&f);printf("a=%d,b=%d,c=%d,d=%d,e=%d,f=%d\n",a,b,c,d,e,f);}程序運(yùn)行時(shí)輸入:1↙2↙3↙4↙5↙6↙12↙34↙5↙6↙注意:(1)輸入數(shù)據(jù)時(shí)可加入提示信息,以便幫助完成正確的一一對應(yīng)操作,在scanf()函數(shù)格式字符中加入必要的提示信息。例如:將scanf("%d,%d,%d",&a,&b,&c);語句改寫成:

scanf("a=%d,b=%d,c=%d",&a,&b,&c);程序運(yùn)行時(shí)應(yīng)輸入:a=12,b=345,c=678↙(2)輸入數(shù)據(jù)時(shí),遇到以下情況時(shí)系統(tǒng)認(rèn)為讀數(shù)據(jù)結(jié)束。遇到空格,或按下<Enter>鍵或<Tab>鍵。

指定寬度讀完,如"%3d",只取3位整數(shù)。遇到非法輸入?!纠?.16】scanf()函數(shù)調(diào)用語句前加上輸入信息提示語句,以方便數(shù)據(jù)輸入,調(diào)用printf函數(shù)完成此功能。#include<stdio.h>main(){charc1,c2;inti1,i2;printf("inputcharc1,c2:\n");inputcharc1,c2:*/scanf("%c,%c",&c1,&c2);printf("inputinti1,i2:\n");scanf("%d,%d",&i1,&i2);printf("%c,%c\n",c1,c2);printf("%d,%d\n",i1,i2);}p19程序運(yùn)行時(shí)用戶窗口出現(xiàn)此內(nèi)容:inputcharc1,c2:后,用戶輸入數(shù)據(jù):a,b↙用戶窗口再次出現(xiàn):inputinti1,i2:用戶輸入數(shù)據(jù):3,5↙該程序兩次出現(xiàn)提示信息,分別由:printf("inputcharc1,c2:\n")語句和printf("inputinti1,i2:\n")語句實(shí)現(xiàn)。1.7.2非格式化字符輸入/輸出函數(shù)

1.putchar()函數(shù)功能:用來向標(biāo)準(zhǔn)輸出設(shè)備輸出一

溫馨提示

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

評論

0/150

提交評論