ch5C程序設(shè)計(jì)基礎(chǔ)_第1頁
ch5C程序設(shè)計(jì)基礎(chǔ)_第2頁
ch5C程序設(shè)計(jì)基礎(chǔ)_第3頁
ch5C程序設(shè)計(jì)基礎(chǔ)_第4頁
ch5C程序設(shè)計(jì)基礎(chǔ)_第5頁
已閱讀5頁,還剩121頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第5章

C程序設(shè)計(jì)基礎(chǔ)2主要內(nèi)容程序設(shè)計(jì)的基本概念數(shù)據(jù)類型數(shù)據(jù)的輸入與輸出運(yùn)算符與表達(dá)式程序控制結(jié)構(gòu)及控制語句三種基本結(jié)構(gòu)程序設(shè)計(jì)一、程序設(shè)計(jì)基礎(chǔ)1.關(guān)于程序設(shè)計(jì)計(jì)算機(jī)程序設(shè)計(jì):是用計(jì)算機(jī)語言編寫一些代碼(指令)來驅(qū)動(dòng)計(jì)算機(jī)完成特定的功能,是問題求解過程的關(guān)鍵步驟之一。為什么需要程序設(shè)計(jì)?很多問題無現(xiàn)成軟件可用如何學(xué)習(xí)程序設(shè)計(jì)多動(dòng)手,多看書要點(diǎn)如何用語句表達(dá)你的思想(算法)(初級(jí))了解語句、語法(高級(jí))熟悉語言提供的功能、你需要做的工作42.程序設(shè)計(jì)語言程序設(shè)計(jì)語言又稱計(jì)算機(jī)語言。是人與計(jì)算機(jī)交流和溝通的工具;是用來編寫計(jì)算機(jī)程序的工具有幾百種,常用的僅十多種。程序設(shè)計(jì)語言的選擇應(yīng)用需求,功能滿足,自己熟悉。56程序設(shè)計(jì)語言的分類程序設(shè)計(jì)語言的分類:機(jī)器語言匯編語言高級(jí)語言低級(jí)語言面向機(jī)器的語言與機(jī)器硬件無直接相關(guān)的語言7機(jī)器語言由機(jī)器指令的集合構(gòu)成。機(jī)器指令是計(jì)算機(jī)所能理解和執(zhí)行的以“0”和“1”組成的二進(jìn)制編碼表示的命令。機(jī)器語言的特點(diǎn):優(yōu)點(diǎn):計(jì)算機(jī)能夠直接識(shí)別、執(zhí)行效率高;缺點(diǎn):難記憶、難書寫、編程困難、可讀性差且容易出現(xiàn)編寫錯(cuò)誤。機(jī)器語言

比較內(nèi)存中兩個(gè)數(shù)的大小地址機(jī)器指令注釋-------------------------------------------0000B85F5F;取數(shù)據(jù)段地址00038ED8 ;設(shè)置數(shù)據(jù)段寄存器0005A10000;把數(shù)1(var1)的值送到ax寄存器00088B1E0002;把數(shù)2(var2)的值送到bx寄存器000C3BC3;比較兩個(gè)數(shù)000E7207;如果數(shù)1小于數(shù)2則轉(zhuǎn)移到001BH00108D16001C;取字符串'數(shù)1大于等于數(shù)2'的指針0014EB05;轉(zhuǎn)顯示00168D160004;取字符串'數(shù)1大于等于數(shù)2'的指針001AB409;調(diào)用DOS的顯示字符串功能001CCD21;顯示字符串001EB44C;退出程序0020CD21機(jī)器語言編寫的程序示例89匯編語言(AssemblyLanguage)采用了助記符和符號(hào)地址來表示計(jì)算機(jī)指令的語言。與機(jī)器指令直接對(duì)應(yīng)。計(jì)算機(jī)不能直接執(zhí)行匯編語言程序,必須經(jīng)過翻譯程序?qū)R編語言編寫的程序翻譯成機(jī)器指令后才能在計(jì)算機(jī)上執(zhí)行。匯編語言是在機(jī)器語言基礎(chǔ)上發(fā)展起來的,目的是彌補(bǔ)機(jī)器語言的缺點(diǎn)和不足。比較內(nèi)存中的兩個(gè)數(shù)的大小標(biāo)號(hào)匯編指令注釋---------------------------------------------

movax,data;取數(shù)據(jù)段地址

movds,ax;設(shè)置數(shù)據(jù)段寄存器

movax,var1;把數(shù)1(var1)的值送到ax寄存器

movbx,var2;把數(shù)2(var2)的值送到bx寄存器

cmpax,bx;比較兩個(gè)數(shù)

jble1;如果數(shù)1小于數(shù)2則轉(zhuǎn)移到le1gr1:leadx,grea;取字符串'數(shù)1大于等于數(shù)2'的指針

jmpdis;轉(zhuǎn)顯示le1:leadx,less;取字符串'數(shù)1大于等于數(shù)2'的指針dis:movah,9;調(diào)用DOS的顯示字符串功能

int21h;顯示字符串

movah,4ch;返回DOS

int21h匯編語言編寫的程序示例1011高級(jí)語言

是更接近自然語言、數(shù)學(xué)語言的程序設(shè)計(jì)語言,與計(jì)算機(jī)硬件無直接相關(guān)。優(yōu)點(diǎn)符合人類敘述問題的習(xí)慣,而且簡單易學(xué)。目前大部分計(jì)算機(jī)語言都屬高級(jí)語言,如:VisualBasic、VisualC++、Java

12求兩個(gè)數(shù)中的大數(shù)

#include<iostream.h>voidmain(){cout<<“Entertwointeger:”;inta,b;cin>>a>>b;if(a>b) cout<<“Themaxiumnumberis”<<a;else cout<<“Themaxiumnumberis”<<b;}高級(jí)語言程序示例SubMain()Dima,bAsIntegera=Convert.ToInt32(Console.ReadLine())b=Convert.ToInt32(Console.ReadLine())Ifa>bThenConsole.WriteLine(a)ElseConsole.WriteLine(b)EndIfEndSub3.程序執(zhí)行的起始點(diǎn)

所有的程序都從起點(diǎn)開始執(zhí)行C程序規(guī)定從main函數(shù)的第一條語句開始執(zhí)行,而不論main函數(shù)處于程序的什么位置。13C程序中必須要有main函數(shù)144.語言處理程序

計(jì)算機(jī)只能識(shí)別機(jī)器語言,用其他語言書寫的程序都必須經(jīng)過翻譯或解釋,變成機(jī)器指令,才能在計(jì)算機(jī)上執(zhí)行。語言處理程序編譯程序匯編程序

15匯編程序?qū)R編語言編寫好的源程序,全部翻譯成機(jī)器指令集合的程序。編譯程序?qū)⒏呒?jí)語言編寫好的源程序,全部翻譯成機(jī)器指令集合的程序。

匯編程序和編譯程序5.程序設(shè)計(jì)的基本過程內(nèi)存裝入程序裝入模塊鏈接程序由編譯程序產(chǎn)生的目標(biāo)模塊┇庫函數(shù)編譯鏈接裝入16程序的鏈接程序鏈接:將所有編譯后得到的目標(biāo)程序模塊連接裝配在一起,再與函數(shù)庫相連構(gòu)成為一個(gè)整體的過程。鏈接的理由:一個(gè)程序可能是由多個(gè)程序模塊組成,翻譯成不同的機(jī)器語言程序模塊,在合成一個(gè)程序時(shí)需要組裝在一起;需要組裝必要的庫函數(shù)17程序設(shè)計(jì)的基本過程用高級(jí)語言進(jìn)行程序設(shè)計(jì)的基本過程在編輯環(huán)境下編寫源次序編譯鏈接調(diào)試18二、C程序基本結(jié)構(gòu)項(xiàng)目C程序按項(xiàng)目管理,一個(gè)項(xiàng)目中可以包含幾種類型文件。其中有1個(gè)源程序文件源程序文件一個(gè)源程序是完成某項(xiàng)任務(wù)的程序段。一個(gè)源程序可以包含1個(gè)或多個(gè)源文件,每個(gè)源文件可以有1個(gè)或多個(gè)函數(shù),必須有1個(gè)main函數(shù);一個(gè)源程序可以有多個(gè)文件,但只能有1個(gè)main函數(shù)函數(shù)函數(shù)名,函數(shù)體函數(shù)體數(shù)據(jù)聲明,執(zhí)行語句201.C程序基本結(jié)構(gòu)C程序結(jié)構(gòu)21C程序基本結(jié)構(gòu)//屏幕顯示#include<stdio.h>intmain(){printf(“Thisisacprogram.\n”);return0;}輸出信息:Thisisacprogram.22注釋編譯預(yù)處理——插入庫文件stdio.h主函數(shù)體函數(shù)名函數(shù)返回值的類型簡單C程序介紹#include<stdio.h>intmain()/*求兩個(gè)數(shù)之和*/{ inta,b,sum;/*定義變量*/

a=123;b=456;

sum=a+b;

printf(“sumis%d\n”,sum);}輸出信息:sumis57923C語言程序的基本構(gòu)成源程序以

.c作為擴(kuò)展名(*.c)C程序由若干函數(shù)構(gòu)成,必須要有一個(gè)主函數(shù)函數(shù)由說明部分和函數(shù)體構(gòu)成一個(gè)C程序總是從main()函數(shù)開始的C程序書寫自由,一行可以寫多個(gè)語句,一個(gè)語句也可以分為多行來寫語句以及數(shù)據(jù)定義后面必須有一個(gè)分號(hào)“;”可用/*….*/對(duì)程序進(jìn)行注釋24常用術(shù)語源程序:用戶可讀的程序文本,即程序本身。目標(biāo)代碼:由源程序翻譯而成的機(jī)器碼,計(jì)算機(jī)能讀并能直接運(yùn)行。鏈接程序:將各自分別編譯后的程序連接為一個(gè)可運(yùn)行程序的程序。(它將C語言的標(biāo)準(zhǔn)庫函數(shù)與用戶所編的程序聯(lián)合在一起)庫:包含標(biāo)準(zhǔn)函數(shù)的文件,這些函數(shù)可用在用戶的程序中編譯狀態(tài):在程序編譯過程中所出現(xiàn)的事件。運(yùn)行狀態(tài):在程序運(yùn)行過程中所發(fā)生的事件。25262.C程序設(shè)計(jì)環(huán)境VisualStudio集成開發(fā)環(huán)境C程序新建一個(gè)項(xiàng)目選擇:Win32控制臺(tái)應(yīng)用程序輸入C源程序編譯,鏈接,運(yùn)行272829主要內(nèi)容程序設(shè)計(jì)的基本概念數(shù)據(jù)類型數(shù)據(jù)的輸入與輸出運(yùn)算符與表達(dá)式程序控制結(jié)構(gòu)及控制語句三種基本結(jié)構(gòu)程序設(shè)計(jì)1.數(shù)據(jù)類型的概念程序的主要任務(wù)是對(duì)數(shù)據(jù)進(jìn)行處理。不同類型的數(shù)據(jù)在存儲(chǔ)器中存放的格式不同數(shù)據(jù)類型:數(shù)據(jù)在計(jì)算機(jī)中的存儲(chǔ)格式程序?qū)?shù)據(jù)進(jìn)行處理之前都要對(duì)其類型預(yù)先加以說明,目的是:便于為數(shù)據(jù)分配相應(yīng)的存儲(chǔ)空間說明程序處理數(shù)據(jù)時(shí)應(yīng)采用何種具體運(yùn)算方法30數(shù)據(jù)類型的概念計(jì)算機(jī)中最基本、最常用的數(shù)據(jù)是:數(shù)值數(shù)據(jù),文字?jǐn)?shù)據(jù)數(shù)值數(shù)據(jù):整型,長整型,浮點(diǎn)型,雙精度型,…文字?jǐn)?shù)據(jù):單字符,字符串31不同類型的數(shù)據(jù)所占用的存儲(chǔ)空間大小不同C語言數(shù)據(jù)類型322.數(shù)據(jù)的表示及存儲(chǔ)在計(jì)算機(jī)中,為了區(qū)別不同的數(shù),使用了不同的表示方法:整數(shù)的表示實(shí)數(shù)的表示字符數(shù)據(jù)的表示數(shù)組的表示3334數(shù)據(jù)的表示C語言的基本數(shù)據(jù)類型:

數(shù)據(jù)類型類型說明符占用字節(jié)字符型

char

1個(gè)短整數(shù)

short

2個(gè)整型int

4個(gè)浮點(diǎn)型

float4個(gè)雙精度型

double

8個(gè)整數(shù)實(shí)數(shù)數(shù)據(jù)在計(jì)算機(jī)中的存放字符數(shù)據(jù)字符用ASCII碼表示,一個(gè)字符數(shù)據(jù)占用1字節(jié)存儲(chǔ)空間1字節(jié)數(shù)的表達(dá)范圍:-27~27-1(-128

~127)3570要表示更大的數(shù),需要更長的字長36數(shù)據(jù)在計(jì)算機(jī)中的存放整型數(shù)據(jù)短整型

短整數(shù)表示范圍為:-215~215-1(-32768~32767)長整型

長整數(shù)表示范圍為:-2^31~2^31-1158703124231615870數(shù)據(jù)在計(jì)算機(jī)中的存放實(shí)型數(shù)據(jù)實(shí)數(shù)在計(jì)算機(jī)中以浮點(diǎn)數(shù)形式表示所有的實(shí)數(shù)都規(guī)格化表示為:0.xxxx×10n37尾符階符階碼尾數(shù)小數(shù)點(diǎn)后第1位不為038數(shù)據(jù)在計(jì)算機(jī)中的存放float數(shù)據(jù):一般占4字節(jié)double型:一般占8字節(jié)。尾數(shù)部分指數(shù)部分312423161587039數(shù)據(jù)的表現(xiàn)形式在高級(jí)語言中,數(shù)據(jù)有兩種表現(xiàn)形式:常量,變量通過書寫格式說明其類型使用前須聲明其類型常量在程序運(yùn)行過程中,其值保持不變的量。在C程序中,常量通常用全部字母為大寫的符號(hào)來表示C程序中常量的定義方法:#define符號(hào)常量數(shù)值例:#definePRICE70//定義符號(hào)常量PRICE的值為70,在程序中任何用到PRICE符號(hào)常量的地方,系統(tǒng)將自動(dòng)用常量70代替403.常量常量類型:整型常量實(shí)型常量字符常量字符串常量41常量的類型整型常量其值為整數(shù)形式十進(jìn)制整數(shù):用不帶任何修飾的整數(shù)表示。如123、-456、0等;八進(jìn)制整數(shù):以數(shù)字0開頭的整數(shù)。如0123、-011等;十六進(jìn)制整數(shù):以數(shù)字0x開頭的整數(shù)。如0x123、0x2ef。42實(shí)型常量實(shí)型常量(浮點(diǎn)數(shù)):十進(jìn)制小數(shù)形式。用數(shù)字和小數(shù)點(diǎn)組成。如:123.456指數(shù)形式:用字母e表示十進(jìn)制指數(shù)中的10。如:123e3注:e字母前必須有數(shù)字,且e后的指數(shù)必須為整型。這里的e可以是大寫,也可以小寫。43123*103字符常量普通字符常量:以單引號(hào)‘’包圍的單個(gè)字符。如:’A’、’a’、’2’、’!’等。注意:單個(gè)字符在計(jì)算機(jī)中以ASCII碼形式存儲(chǔ)。因此,字符常量與整數(shù)的存放形式類似。C語言中,字符數(shù)據(jù)與整型數(shù)據(jù)之間具有相通性。44字符常量轉(zhuǎn)義字符常量用‘\’開頭的特殊形式的字符常量,用以產(chǎn)生一個(gè)動(dòng)作。例:‘\n’,’\r’若要表示\符號(hào),則必須表示為:‘\\’45字符常量常見轉(zhuǎn)義字符常量46轉(zhuǎn)義字符意義ASCII碼值(十進(jìn)制)\a響鈴(BEL)7\b退格(BS),將當(dāng)前位置移到前一列8\n換行(LF),將當(dāng)前位置移到下一行開頭10\r回車(CR),將當(dāng)前位置移到本行開頭13\t水平制表(HT)(跳到下一個(gè)TAB位置)9\v垂直制表(VT)11\\代表一個(gè)反斜線字符''\'92\'代表一個(gè)單引號(hào)(撇號(hào))字符39\"代表一個(gè)雙引號(hào)字符34\0空字符(NULL)0\ddd1到3位八進(jìn)制數(shù)所代表的任意字符三位八進(jìn)制\xhh1到2位十六進(jìn)制所代表的任意字符二位十六進(jìn)制字符串常量用雙引號(hào)括起來,表示字符串。例:“abc”,”123”,”hello!”注:字符串默認(rèn)用0的ASCII作為結(jié)束符。例:“A”和’A’占用的內(nèi)存空間不同47A/0A“A”‘A’常量使用說明使用要點(diǎn):符號(hào)常量用大寫字母表示(但不是必須)。例:#definePRICE30main()

{

intnum=10,total;

total=num*PRICE;

printf(“total=%d”,total);

}484.變量變量:在程序執(zhí)行過程中,其值可以被改變的量。變量必須先定義后使用。

變量的本質(zhì)是地址12a變量名內(nèi)存單元的地址變量值內(nèi)存單元的內(nèi)容49標(biāo)識(shí)符與變量的命名標(biāo)識(shí)符:對(duì)變量、符號(hào)常量、數(shù)組、函數(shù)、類型、文件等命名的有效字符序列。由字母、數(shù)字和下劃線組成。其長度與具體的編譯器有關(guān)。變量的命名原則:每個(gè)變量具有一個(gè)名稱,以區(qū)分不同的變量,變量的命名原則:按“見名知意”的原則。變量的定義:變量類型變量名稱例:inta;50基本整型(int)2字節(jié)或4字節(jié)短整型(shortint)長整型(longint)雙長整型(longlongint)511)整型變量說明:C標(biāo)準(zhǔn)沒有具體規(guī)定各種類型數(shù)據(jù)所占存儲(chǔ)單元的長

度,僅要求:sizeof(long)≥sizeof(int)≥sizeof(short)。/*求兩個(gè)數(shù)之和*/main(){

inta,b,sum;

/*定義變量*/

a=123;b=456;

sum=a+b;

printf(“sumis%d\n”,sum);}

輸出信息:sumis579例:52用于存放實(shí)型數(shù)據(jù)的變量。包括:單精度浮點(diǎn)型(float)一般占4字節(jié),6位有效數(shù)字雙精度浮點(diǎn)型(double)一般占8字節(jié),15位有效數(shù)字長雙精度浮點(diǎn)型(longdouble)一般占16字節(jié),19位有效數(shù)字如:floatx,y;doublez;532)實(shí)型變量3)字符變量用于存放1個(gè)字符既可以是8位的ASCII,也可以是一個(gè)8位二進(jìn)制數(shù)定義方式:char字符變量名;例:charc1,c2;c1=‘d’;c2=‘s’;字符數(shù)據(jù)在內(nèi)存中存放的是它的ASCII編碼。當(dāng)以字符格式輸出時(shí),輸出為字符;當(dāng)以整型輸出時(shí),輸出為整型數(shù)。54main(){charc1,c2;

c1=‘a(chǎn)’;

c2=‘A’;

printf(“c1=%c,c2=%c\n”,c1,c2);

printf(“c1=%d,c2=%d\n”,c1,c2);}例:程序輸出為:c1=a,c2=Ac1=97,c2=65說明:字符數(shù)據(jù)與整型數(shù)據(jù)之間可以相互賦值。

c1=a,c2=A字符數(shù)據(jù)可以以字符或整型數(shù)據(jù)兩種方式輸出

c1=97,c2=6555將兩個(gè)小寫字母轉(zhuǎn)換成大寫字母。main(){charc1,c2;

c1=‘a(chǎn)’;c2=‘b’;

c1=c1-32;c2=c2-32;

printf(“c1=%c,c2=%c\n”,c1,c2);}例:程序輸出為:c1=A,c2=B56變量定義小結(jié)變量必須先定義、后使用,且只能定義一次。C程序允許變量在定義時(shí)直接用“=”對(duì)其進(jìn)行賦值。如:intsum=0;inta,b,c=5;inta=3,b=3,c=5;charc1=‘w’;

inta=d=e=10;C語言中沒有定義字符串變量,對(duì)字符串的處理將采用數(shù)組或指針。請注意區(qū)別字符與字符串的不同。57例:列出不同數(shù)據(jù)類型所占內(nèi)存的長度main(){printf(“char%2d\n”,sizeof(char));

printf(“int%2d\n”,sizeof(int));

printf(“unsigned%2d\n”,sizeof(unsigned));

printf(“short%2d\n”,sizeof(short));

printf(“l(fā)ong%2d\n”,sizeof(long));

printf(“float%2d\n”,sizeof(float));

printf(“double%2d\n”,sizeof(double));}用于計(jì)算各種數(shù)據(jù)類型占用存儲(chǔ)單元字節(jié)數(shù)的運(yùn)算符5859主要內(nèi)容程序設(shè)計(jì)的基本概念數(shù)據(jù)類型數(shù)據(jù)的輸入與輸出運(yùn)算符與表達(dá)式程序控制結(jié)構(gòu)及控制語句三種基本結(jié)構(gòu)程序設(shè)計(jì)輸入和輸出函數(shù)

C語言本身沒有輸入輸出語句,其輸入和輸出操作由C標(biāo)準(zhǔn)函數(shù)庫中的函數(shù)實(shí)現(xiàn)。系統(tǒng)函數(shù)庫中的標(biāo)準(zhǔn)函數(shù)已由開發(fā)者進(jìn)行編譯(成為.OBJ文件),在鏈接時(shí)與源程序經(jīng)編譯后的目標(biāo)文件(.OBJ)鏈接在一起,形成可執(zhí)行文件(.exe)。60輸入輸出系統(tǒng)庫函數(shù)引用源程序在使用系統(tǒng)庫函數(shù)時(shí),需在起始處用編譯預(yù)處理指令#include將有關(guān)頭文件放在程序中。例:#include<stdio.h>61Standardinput&outputheader只要在程序中涉及輸入/輸出操作,必須使用標(biāo)準(zhǔn)輸入輸出庫函數(shù),則必須在程序起始處加:#include<stdio.h>1.輸出函數(shù)輸出函數(shù):將信息輸出到屏幕上基本格式:printf(“格式控制串”,輸出參數(shù)表)例:printf(“%d,%d\n”,a,b);62格式聲明參數(shù)列表將參數(shù)表中給出的待輸出數(shù)據(jù)轉(zhuǎn)換為指定格式輸出。表示方法:%+格式字符printf(“a=%d,b=%d\n”,a,b);輸出函數(shù)例:#include<stdio.h>intmain(){doublea=1.0;printf(“%f\n”,a/3);return0;}63運(yùn)行結(jié)果:0.333333格式字符,表示按浮點(diǎn)數(shù)輸出,整數(shù)部分全部輸出,小數(shù)保留6位。printf(“a=%f\n”,a/3);運(yùn)行結(jié)果:a=0.333333可以設(shè)置有效小數(shù)位及輸出所占列數(shù)。如:

printf(“%12.10f\n”,a/3);運(yùn)行結(jié)果:0.3333333333輸出函數(shù)說明:在用print函數(shù)輸出時(shí),輸出對(duì)象的類型應(yīng)與格式匹配;一般情況下,輸出格式用小寫字母。如:%dprint函數(shù)中的“格式控制”用%開頭,以相應(yīng)格式字符結(jié)束,可插入附加格式字符。一般在“格式控制”的最后應(yīng)加轉(zhuǎn)義字符“\n”,表示換行。64printf(“a=%df=%fs=%c\n”,a,f,s);2.輸入函數(shù)輸入函數(shù):按指定格式接受鍵盤輸入的信息基本格式:scanf(“格式控制串”,地址列表)例:Scanf(“a=%f,b=%f”,&a,&b)65變量地址輸入函數(shù)注意點(diǎn):scanf函數(shù)中的“格式控制”后邊是變量地址,不是變量名。即:在變量名前邊要加“&”。例:floata,b,c;scanf("%f%f%f",&a,&b,&c);66要求輸入3個(gè)實(shí)數(shù),輸入時(shí)每個(gè)數(shù)之間要用空格分開。例:321輸入輸出函數(shù)中的格式符輸入輸出函數(shù)中常用的格式字符67格式符含

義%d以有符號(hào)十進(jìn)制形式整數(shù)輸出/輸入有符號(hào)十進(jìn)制整數(shù)%c以字符形式輸出,且只輸出一個(gè)字符/輸入單字符%s以字符串形式輸出/用于輸入字符串%f輸出單精度和雙精度浮點(diǎn)數(shù)/用于以小數(shù)或指數(shù)形式輸入浮點(diǎn)數(shù)68主要內(nèi)容程序設(shè)計(jì)的基本概念數(shù)據(jù)類型數(shù)據(jù)的輸入與輸出運(yùn)算符與表達(dá)式程序控制結(jié)構(gòu)及控制語句三種基本結(jié)構(gòu)程序設(shè)計(jì)運(yùn)算符與表達(dá)式運(yùn)算是數(shù)據(jù)的加工過程。表示不同運(yùn)算的符號(hào)稱為運(yùn)算符。參加運(yùn)算的數(shù)據(jù)稱為操作數(shù)。表達(dá)式:由運(yùn)算符和運(yùn)算數(shù)組成的式子不同類型的表達(dá)式按不同運(yùn)算規(guī)則進(jìn)行計(jì)算,計(jì)算結(jié)果是不同類型的值。69C語言運(yùn)算符合表達(dá)式種類算術(shù)運(yùn)算符和表達(dá)式關(guān)系運(yùn)算符和表達(dá)式邏輯運(yùn)算符和表達(dá)式賦值運(yùn)算符和表達(dá)式自增自減運(yùn)算符和表達(dá)式70第1次C程序?qū)嶒?yàn)#include<stdio.h>intmain(){charc1=97,c2=98;printf("c1=%c,c2=%c\n",c1,c2);printf("c1=%d,c2=%d\n",c1,c2);return0;}197,198;顯示隨機(jī)數(shù)198=C6H第1位為1,表示負(fù)數(shù)字符的有效范圍是0~127#include<stdio.h>#definePI3.14159fintmain(){floatr,h,s,l,v1,v2;printf("請輸入圓的半徑r和圓柱高h(yuǎn):\n");

scanf_s("r=%f,h=%f",&r,&h);s=PI*r*r;l=2*PI*r;

v1=4.0/3.0*PI*r*r*r;v2=s*h;

printf("圓的面積s=%f\n圓的周長l=%f\n球體體積v1=%f\n圓柱體積v2=%f\n",s,l,v1,v2);return0;}72doublescanf_s("r=%lf,h=%lf",&r,&h);printf("圓的面積s=%lf\n圓的周長l=%lf\n球體體積v1=%lf\n圓柱體積v2=%f\n",s,l,v1,v2);printf("圓的面積s為:%12.6f\n圓的周長l為:%12.6f\n球體體積v1為:%11.6f\n圓柱體積v2為:%12.6f\n",s,l,v1,v2);所占列數(shù)小數(shù)位數(shù)1.算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符:+(加),-(減),*(乘),/(除),%(整除求余)優(yōu)先級(jí):先:乘、除,之后:取余,最后:加、減從左至右運(yùn)算對(duì)象:數(shù)值變量、常數(shù)、函數(shù)、表達(dá)式等說明:對(duì)除法,若被除數(shù)和除數(shù)都為整數(shù),則結(jié)果也是整型數(shù)。C語言中沒有指數(shù)運(yùn)算符。5X2

應(yīng)寫成5*X*X所有運(yùn)算符不能省略(x+y)(x-y)改為(x+y)*(x-y)73算術(shù)表達(dá)式設(shè)a=5,b=3,c=1,d=2,e=6則:

a+b-c/d+e%d74=5+3–0+0=8%左右必須是整型,否則編譯出錯(cuò)例:#include<stdio.h>intmain(){charc1,c2;c1=‘A’;c2=c1+32;//將’a’的ASCII賦給c2printf(“%c\n”,c2);//輸出字符’a’printf(“%d\n”,c2);//輸出字符’a’的ASCIIreturn0;}752.關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算主要用于比較兩個(gè)運(yùn)算數(shù)的大小關(guān)系。用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來的式子,稱關(guān)系表達(dá)式??梢允牵核阈g(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式、字符表達(dá)式運(yùn)算符名稱例子關(guān)系>大于a>ba大于b<小于a<ba小于b==等于a==ba等于b!=不等于a!=ba不等于b>=大于等于a>=ba大于等于b<=小于等于a<=ba小于等于b76關(guān)系表達(dá)式關(guān)系表達(dá)式的計(jì)算結(jié)果是邏輯值(布爾值):“1”

代表“真”,以“0”代表“假”。例如:“5==3”的值為“假”(值為0)“5>=0”的值為“真”(值為1)關(guān)系運(yùn)算符的優(yōu)先級(jí)順序:{>,>=,<,<=}高于{==,!=}與其他運(yùn)算符優(yōu)先級(jí)的關(guān)系:算術(shù)運(yùn)算符>關(guān)系運(yùn)算符>賦值運(yùn)算符。例:3+5>777先運(yùn)算3.邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算的結(jié)果是邏輯值“真”和“假”優(yōu)先級(jí):!>&&>||運(yùn)算對(duì)象算術(shù)、關(guān)系、賦值、字符及邏輯表達(dá)式運(yùn)算符名稱例子關(guān)系!邏輯非!a非a&&邏輯與a&&ba與b||邏輯或a||ba或b78若a和b同時(shí)為“真”,則:a&&b為“真”運(yùn)算符例不同運(yùn)算符的優(yōu)先級(jí):!>算術(shù)運(yùn)算>關(guān)系運(yùn)算>其他邏輯運(yùn)算例:x*y>z&&x*y<100||-x*y>0&&!Isgreat(z)判別閏年表達(dá)式:(year%4==0&&year%100!=0)||year%400==079先計(jì)算函數(shù)4.賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符“=”:將=左邊表達(dá)式的值存入=右側(cè)的變量例:V=e;//將表達(dá)式的值e賦給變量V復(fù)合賦值運(yùn)算符:格式:Vop=e等價(jià)于:V=Vope例:

a+=5,等價(jià)于a=a+5復(fù)合賦值運(yùn)算符有:+=、-=、*=、/=、%=等10個(gè)80如果賦值運(yùn)算符兩側(cè)的數(shù)據(jù)類型不一致,則賦值時(shí)需要進(jìn)行類型轉(zhuǎn)換將浮點(diǎn)數(shù)據(jù)賦值給整型數(shù)據(jù)時(shí),舍棄小數(shù)部分。int=float的結(jié)果為int型。如:floata;ints;a=12.34;s=a;

結(jié)果:這時(shí)s的值為1281賦值過程中的類型轉(zhuǎn)換將整型數(shù)據(jù)賦值給浮點(diǎn)型變量時(shí),數(shù)值不變,但數(shù)據(jù)是浮點(diǎn)形式。即:float=int的結(jié)果為float型。如:ints;floata;s=12;a=s;結(jié)果:這時(shí)a的值為12.0000082賦值過程中的類型轉(zhuǎn)換賦值過程中的類型轉(zhuǎn)換將double型數(shù)據(jù)賦給float型變量時(shí),將雙精度轉(zhuǎn)換為單精度.例:doubled=123.456789;floatf;f=d;83d=123.45678900000000f=123.4568將字符數(shù)據(jù)賦值給整型變量時(shí),只將其低8位賦值給整型變量(即發(fā)生“截?cái)啵├篿nti=289;charc=‘a(chǎn)’c=i84賦值過程中的類型轉(zhuǎn)換c=33001000010000000100100001應(yīng)避免將長字節(jié)數(shù)賦給短字節(jié)數(shù),以免造成數(shù)據(jù)丟失賦值過程中的類型轉(zhuǎn)換字符數(shù)據(jù)賦值給整型變量時(shí),傳送的是字符的ASCII碼int=char85例1:unsignedcharc; intx;c=‘\376’; x=c;

當(dāng)char為有符號(hào)數(shù)據(jù)時(shí),高8位需進(jìn)行“符號(hào)位擴(kuò)展”,即高8位將依據(jù)符號(hào)位的值來決定是補(bǔ)0或補(bǔ)1;例:charc;intx;c=‘\376’;x=c;

111111101111111000000000111111111111111011111110X=-2X=254賦值過程中的類型轉(zhuǎn)換例i=j=m*n;

計(jì)算表達(dá)式m*n的值,將其結(jié)果存入變量j中,然后再將結(jié)果存入變量i中。temp=a;a=b;b=temp;

交換a和b的值,temp是工作單元。sum=sum+i;(等價(jià)于sum+=i;)875.自增、自減運(yùn)算符自增運(yùn)算符和自減運(yùn)算符的用法88例i++;

//i增加1i;

//i減少1x=array[++i];//將array[i+1]的值賦給x,并使i增加1s1[i++]=s2[j++];

//將s2[j]賦給s1[i],然后分別使i和j增加1s1[i]=s2[j]i=i+1j=j+189i值先加1,再運(yùn)算先運(yùn)算,再使i和j加1表達(dá)式中各運(yùn)算符的運(yùn)算順序優(yōu)先級(jí)別運(yùn)算符運(yùn)算形式名稱或含義1()[](e)a[e]圓括號(hào)數(shù)組下標(biāo)2-+++--!-e++x或x++負(fù)號(hào)和正號(hào)自增運(yùn)算和自減運(yùn)算邏輯非3*/%e1*e2乘、除和求余4+-e1+e2加和減6<<=>>=e1<e2關(guān)系運(yùn)算(比較)7==!=e1==e2等于和不等于比較90數(shù)據(jù)之間的混合算術(shù)運(yùn)算級(jí)別低的類型轉(zhuǎn)換為級(jí)別高的類型。各類型按級(jí)別由低到高的順序?yàn)閏har,int,unsigned,long,unsignedlong,float,double。

可以使用強(qiáng)制類型轉(zhuǎn)換。d1=(double)i1/i2;9192主要內(nèi)容程序設(shè)計(jì)的基本概念數(shù)據(jù)類型數(shù)據(jù)的輸入與輸出運(yùn)算符與表達(dá)式程序控制結(jié)構(gòu)及控制語句結(jié)構(gòu)化程序結(jié)構(gòu)化程序設(shè)計(jì)方法的基本思想是任何程序都可以用三種基本結(jié)構(gòu)表示,即:順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)由這三種基本結(jié)構(gòu)經(jīng)過反復(fù)嵌套構(gòu)成的程序成為結(jié)構(gòu)化程序。931.基本程序控制結(jié)構(gòu)基本程序控制結(jié)構(gòu)順序結(jié)構(gòu)程序按語句或模塊在執(zhí)行中的順序逐個(gè)執(zhí)行選擇結(jié)構(gòu)程序按設(shè)定的條件兩路或多路分支執(zhí)行循環(huán)結(jié)構(gòu)程序按給定條件重復(fù)執(zhí)行指定的程序段。94C程序控制結(jié)構(gòu)C語言是一種很好的結(jié)構(gòu)化程序設(shè)計(jì)語言,它提供了實(shí)現(xiàn)結(jié)構(gòu)化程序所需的多種流程控制語句。分類如下:95952.順序結(jié)構(gòu)順序結(jié)構(gòu)程序按語句或模塊在執(zhí)行中的順序逐個(gè)執(zhí)行96(a)(b)順序結(jié)構(gòu)順序結(jié)構(gòu)語句包括:說明語句賦值語句I/O語句復(fù)合語句和空語句97順序結(jié)構(gòu)復(fù)合語句:用花括號(hào)括起來的程序段。一般形式為:

{<局部數(shù)據(jù)說明部分><執(zhí)行語句段落>}空語句:只有一個(gè)分號(hào)的語句在語法上占據(jù)一個(gè)語句的位置,但不具備任何可執(zhí)行的功能。98{<局部數(shù)據(jù)說明部分><執(zhí)行語句段落>{<局部數(shù)據(jù)說明部分><執(zhí)行語句段落>}}993.選擇結(jié)構(gòu)選擇結(jié)構(gòu)當(dāng)滿足一定條件時(shí)程序才能執(zhí)行。程序按設(shè)定的條件兩路或多路分支執(zhí)行包括:單分支結(jié)構(gòu)兩分支結(jié)構(gòu)多分支結(jié)構(gòu)99選擇(分支)結(jié)構(gòu)100C程序中用if-語句實(shí)現(xiàn)兩個(gè)分支的選擇結(jié)構(gòu),用switch語句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)選擇結(jié)構(gòu)單分支結(jié)構(gòu)語句格式:if(表達(dá)式)

語句序列;語句序列可以是一個(gè)語句,也可以是復(fù)合語句結(jié)構(gòu)。兩分支結(jié)構(gòu)語句格式:if(表達(dá)式)語句序列1;else語句序列2;條件?語句序列1成立不成立語句序列2If語句舉例1例:輸入兩個(gè)實(shí)數(shù),按數(shù)值由小到大的次序輸出這兩個(gè)數(shù)。102#include<stdio.h>intmain(){

doublea,b,t;scanf(“%lf%lf”,&a,&b);

if(a>b) {

t=a;

a=b;

b=t; }

printf(“%lf,%lf\n”,a,b); return0;}選擇分支的嵌套___多分支結(jié)構(gòu)格式:If(條件表達(dá)式1)<語句塊1>elseIf(條件表達(dá)式2)<語句塊2>……elseIf(條件表達(dá)式m)<語句塊m>Else<語句塊n>功能:若條件表達(dá)式1的值=True,執(zhí)行語句塊1;若條件表達(dá)式2的值=True,執(zhí)行語句塊2;….103104在3個(gè)數(shù)中最大值#include<stdio.h>main(){inta,b,c,max;

scanf_s("%d%d%d",&a,&b,&c);if(a>b)

{

if(a>c) max=a;

else max=c;

}105If語句舉例2else

{

if(b>c) max=b;

else max=c;

}

printf("max=%d\n",max);return0;}求解ax2+bx+c=0方程的根。要求:用鍵盤輸入a,b,c;如果b2-4ac≥0,則計(jì)算并輸出方程的實(shí)根;如果b2-4ac<0,則輸出“方程無實(shí)根”的信息。106If語句舉例3#include<stdio.h>#include<math.h>//算術(shù)運(yùn)算庫函數(shù)intmain(){ doublea,b,c,disc,x1,x2,p,q; scanf_s("%lf%lf%lf",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a);

if(disc<0) printf("Thisequationhasn'trealroots\n");107開平方函數(shù)108else

if(disc==0){ x1=x2=p;

printf("realrootis:%lf",x1);

}

else{x1=p+q; x2=p-q;

printf("realrootis:\nx1=%lf\nx2=%lf\n",x1,x2);}

return0;}1094.循環(huán)語句用于某些需要重復(fù)執(zhí)行的語句。C語言的循環(huán)控制語句有兩種:while循環(huán)當(dāng)型循環(huán)直到型循環(huán)for循環(huán)1)while循環(huán)當(dāng)型循環(huán)語句格式:

while(表達(dá)式)

[{]

語句序列

[}]110語句序列不成立成立條件?循環(huán)體while循環(huán)直到型循環(huán)語句格式:do{

語句序列

}while(表達(dá)式);111條件?語句序列成立不成立循環(huán)體例:計(jì)算1+2+3+…+100題目分析:該題目要求計(jì)算累加和:可以用while語句實(shí)現(xiàn):需要設(shè)置兩個(gè)參數(shù)累加和,計(jì)數(shù)值初始情況下,累加和=0;當(dāng)計(jì)數(shù)值大于100時(shí)停止求和,即退出循環(huán)。

聲明變量累加和sum,計(jì)數(shù)值iSum=0,i=0i≤100Sum=sum+1i=i+1TF#include<stdio.h>intmain(){intsum=0,i=1;while(i<=100){sum=sum+i;i++;}printf("i=%d,sum=%d\n",i,sum);return0;}113用while實(shí)現(xiàn)用dowhile實(shí)現(xiàn)#include<stdio.h>intmain(){intsum=0,i=1;

do{sum=sum+i;i++;}

while(i<=100);printf("i=%d,sum=%d\n",i,sum);return1;}114For循環(huán)語句For語句格式:

for(表達(dá)式1;表達(dá)式2;表達(dá)式3){

語句序列}115表達(dá)式2成立不成立語句序列計(jì)算表達(dá)式1計(jì)算表達(dá)式3循環(huán)初值循環(huán)退出條件例:#include<stdio.h>intmain(){

溫馨提示

  • 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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論