




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第5章
C程序設(shè)計基礎(chǔ)2主要內(nèi)容程序設(shè)計的基本概念數(shù)據(jù)類型數(shù)據(jù)的輸入與輸出運算符與表達式程序控制結(jié)構(gòu)及控制語句三種基本結(jié)構(gòu)程序設(shè)計一、程序設(shè)計基礎(chǔ)1.關(guān)于程序設(shè)計計算機程序設(shè)計:是用計算機語言編寫一些代碼(指令)來驅(qū)動計算機完成特定的功能,是問題求解過程的關(guān)鍵步驟之一。為什么需要程序設(shè)計?很多問題無現(xiàn)成軟件可用如何學(xué)習(xí)程序設(shè)計多動手,多看書要點如何用語句表達你的思想(算法)(初級)了解語句、語法(高級)熟悉語言提供的功能、你需要做的工作42.程序設(shè)計語言程序設(shè)計語言又稱計算機語言。是人與計算機交流和溝通的工具;是用來編寫計算機程序的工具有幾百種,常用的僅十多種。程序設(shè)計語言的選擇應(yīng)用需求,功能滿足,自己熟悉。56程序設(shè)計語言的分類程序設(shè)計語言的分類:機器語言匯編語言高級語言低級語言面向機器的語言與機器硬件無直接相關(guān)的語言7機器語言由機器指令的集合構(gòu)成。機器指令是計算機所能理解和執(zhí)行的以“0”和“1”組成的二進制編碼表示的命令。機器語言的特點:優(yōu)點:計算機能夠直接識別、執(zhí)行效率高;缺點:難記憶、難書寫、編程困難、可讀性差且容易出現(xiàn)編寫錯誤。機器語言
比較內(nèi)存中兩個數(shù)的大小地址機器指令注釋-------------------------------------------0000B85F5F;取數(shù)據(jù)段地址00038ED8 ;設(shè)置數(shù)據(jù)段寄存器0005A10000;把數(shù)1(var1)的值送到ax寄存器00088B1E0002;把數(shù)2(var2)的值送到bx寄存器000C3BC3;比較兩個數(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機器語言編寫的程序示例89匯編語言(AssemblyLanguage)采用了助記符和符號地址來表示計算機指令的語言。與機器指令直接對應(yīng)。計算機不能直接執(zhí)行匯編語言程序,必須經(jīng)過翻譯程序?qū)R編語言編寫的程序翻譯成機器指令后才能在計算機上執(zhí)行。匯編語言是在機器語言基礎(chǔ)上發(fā)展起來的,目的是彌補機器語言的缺點和不足。比較內(nèi)存中的兩個數(shù)的大小標(biāo)號匯編指令注釋---------------------------------------------
movax,data;取數(shù)據(jù)段地址
movds,ax;設(shè)置數(shù)據(jù)段寄存器
movax,var1;把數(shù)1(var1)的值送到ax寄存器
movbx,var2;把數(shù)2(var2)的值送到bx寄存器
cmpax,bx;比較兩個數(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高級語言
是更接近自然語言、數(shù)學(xué)語言的程序設(shè)計語言,與計算機硬件無直接相關(guān)。優(yōu)點符合人類敘述問題的習(xí)慣,而且簡單易學(xué)。目前大部分計算機語言都屬高級語言,如:VisualBasic、VisualC++、Java
12求兩個數(shù)中的大數(shù)
#include<iostream.h>voidmain(){cout<<“Entertwointeger:”;inta,b;cin>>a>>b;if(a>b) cout<<“Themaxiumnumberis”<<a;else cout<<“Themaxiumnumberis”<<b;}高級語言程序示例SubMain()Dima,bAsIntegera=Convert.ToInt32(Console.ReadLine())b=Convert.ToInt32(Console.ReadLine())Ifa>bThenConsole.WriteLine(a)ElseConsole.WriteLine(b)EndIfEndSub3.程序執(zhí)行的起始點
所有的程序都從起點開始執(zhí)行C程序規(guī)定從main函數(shù)的第一條語句開始執(zhí)行,而不論main函數(shù)處于程序的什么位置。13C程序中必須要有main函數(shù)144.語言處理程序
計算機只能識別機器語言,用其他語言書寫的程序都必須經(jīng)過翻譯或解釋,變成機器指令,才能在計算機上執(zhí)行。語言處理程序編譯程序匯編程序
15匯編程序?qū)R編語言編寫好的源程序,全部翻譯成機器指令集合的程序。編譯程序?qū)⒏呒壵Z言編寫好的源程序,全部翻譯成機器指令集合的程序。
匯編程序和編譯程序5.程序設(shè)計的基本過程內(nèi)存裝入程序裝入模塊鏈接程序由編譯程序產(chǎn)生的目標(biāo)模塊┇庫函數(shù)編譯鏈接裝入16程序的鏈接程序鏈接:將所有編譯后得到的目標(biāo)程序模塊連接裝配在一起,再與函數(shù)庫相連構(gòu)成為一個整體的過程。鏈接的理由:一個程序可能是由多個程序模塊組成,翻譯成不同的機器語言程序模塊,在合成一個程序時需要組裝在一起;需要組裝必要的庫函數(shù)17程序設(shè)計的基本過程用高級語言進行程序設(shè)計的基本過程在編輯環(huán)境下編寫源次序編譯鏈接調(diào)試18二、C程序基本結(jié)構(gòu)項目C程序按項目管理,一個項目中可以包含幾種類型文件。其中有1個源程序文件源程序文件一個源程序是完成某項任務(wù)的程序段。一個源程序可以包含1個或多個源文件,每個源文件可以有1個或多個函數(shù),必須有1個main函數(shù);一個源程序可以有多個文件,但只能有1個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()/*求兩個數(shù)之和*/{ inta,b,sum;/*定義變量*/
a=123;b=456;
sum=a+b;
printf(“sumis%d\n”,sum);}輸出信息:sumis57923C語言程序的基本構(gòu)成源程序以
.c作為擴展名(*.c)C程序由若干函數(shù)構(gòu)成,必須要有一個主函數(shù)函數(shù)由說明部分和函數(shù)體構(gòu)成一個C程序總是從main()函數(shù)開始的C程序書寫自由,一行可以寫多個語句,一個語句也可以分為多行來寫語句以及數(shù)據(jù)定義后面必須有一個分號“;”可用/*….*/對程序進行注釋24常用術(shù)語源程序:用戶可讀的程序文本,即程序本身。目標(biāo)代碼:由源程序翻譯而成的機器碼,計算機能讀并能直接運行。鏈接程序:將各自分別編譯后的程序連接為一個可運行程序的程序。(它將C語言的標(biāo)準(zhǔn)庫函數(shù)與用戶所編的程序聯(lián)合在一起)庫:包含標(biāo)準(zhǔn)函數(shù)的文件,這些函數(shù)可用在用戶的程序中編譯狀態(tài):在程序編譯過程中所出現(xiàn)的事件。運行狀態(tài):在程序運行過程中所發(fā)生的事件。25262.C程序設(shè)計環(huán)境VisualStudio集成開發(fā)環(huán)境C程序新建一個項目選擇:Win32控制臺應(yīng)用程序輸入C源程序編譯,鏈接,運行272829主要內(nèi)容程序設(shè)計的基本概念數(shù)據(jù)類型數(shù)據(jù)的輸入與輸出運算符與表達式程序控制結(jié)構(gòu)及控制語句三種基本結(jié)構(gòu)程序設(shè)計1.數(shù)據(jù)類型的概念程序的主要任務(wù)是對數(shù)據(jù)進行處理。不同類型的數(shù)據(jù)在存儲器中存放的格式不同數(shù)據(jù)類型:數(shù)據(jù)在計算機中的存儲格式程序?qū)?shù)據(jù)進行處理之前都要對其類型預(yù)先加以說明,目的是:便于為數(shù)據(jù)分配相應(yīng)的存儲空間說明程序處理數(shù)據(jù)時應(yīng)采用何種具體運算方法30數(shù)據(jù)類型的概念計算機中最基本、最常用的數(shù)據(jù)是:數(shù)值數(shù)據(jù),文字?jǐn)?shù)據(jù)數(shù)值數(shù)據(jù):整型,長整型,浮點型,雙精度型,…文字?jǐn)?shù)據(jù):單字符,字符串31不同類型的數(shù)據(jù)所占用的存儲空間大小不同C語言數(shù)據(jù)類型322.數(shù)據(jù)的表示及存儲在計算機中,為了區(qū)別不同的數(shù),使用了不同的表示方法:整數(shù)的表示實數(shù)的表示字符數(shù)據(jù)的表示數(shù)組的表示3334數(shù)據(jù)的表示C語言的基本數(shù)據(jù)類型:
數(shù)據(jù)類型類型說明符占用字節(jié)字符型
char
1個短整數(shù)
short
2個整型int
4個浮點型
float4個雙精度型
double
8個整數(shù)實數(shù)數(shù)據(jù)在計算機中的存放字符數(shù)據(jù)字符用ASCII碼表示,一個字符數(shù)據(jù)占用1字節(jié)存儲空間1字節(jié)數(shù)的表達范圍:-27~27-1(-128
~127)3570要表示更大的數(shù),需要更長的字長36數(shù)據(jù)在計算機中的存放整型數(shù)據(jù)短整型
短整數(shù)表示范圍為:-215~215-1(-32768~32767)長整型
長整數(shù)表示范圍為:-2^31~2^31-1158703124231615870數(shù)據(jù)在計算機中的存放實型數(shù)據(jù)實數(shù)在計算機中以浮點數(shù)形式表示所有的實數(shù)都規(guī)格化表示為:0.xxxx×10n37尾符階符階碼尾數(shù)小數(shù)點后第1位不為038數(shù)據(jù)在計算機中的存放float數(shù)據(jù):一般占4字節(jié)double型:一般占8字節(jié)。尾數(shù)部分指數(shù)部分312423161587039數(shù)據(jù)的表現(xiàn)形式在高級語言中,數(shù)據(jù)有兩種表現(xiàn)形式:常量,變量通過書寫格式說明其類型使用前須聲明其類型常量在程序運行過程中,其值保持不變的量。在C程序中,常量通常用全部字母為大寫的符號來表示C程序中常量的定義方法:#define符號常量數(shù)值例:#definePRICE70//定義符號常量PRICE的值為70,在程序中任何用到PRICE符號常量的地方,系統(tǒng)將自動用常量70代替403.常量常量類型:整型常量實型常量字符常量字符串常量41常量的類型整型常量其值為整數(shù)形式十進制整數(shù):用不帶任何修飾的整數(shù)表示。如123、-456、0等;八進制整數(shù):以數(shù)字0開頭的整數(shù)。如0123、-011等;十六進制整數(shù):以數(shù)字0x開頭的整數(shù)。如0x123、0x2ef。42實型常量實型常量(浮點數(shù)):十進制小數(shù)形式。用數(shù)字和小數(shù)點組成。如:123.456指數(shù)形式:用字母e表示十進制指數(shù)中的10。如:123e3注:e字母前必須有數(shù)字,且e后的指數(shù)必須為整型。這里的e可以是大寫,也可以小寫。43123*103字符常量普通字符常量:以單引號‘’包圍的單個字符。如:’A’、’a’、’2’、’!’等。注意:單個字符在計算機中以ASCII碼形式存儲。因此,字符常量與整數(shù)的存放形式類似。C語言中,字符數(shù)據(jù)與整型數(shù)據(jù)之間具有相通性。44字符常量轉(zhuǎn)義字符常量用‘\’開頭的特殊形式的字符常量,用以產(chǎn)生一個動作。例:‘\n’,’\r’若要表示\符號,則必須表示為:‘\\’45字符常量常見轉(zhuǎn)義字符常量46轉(zhuǎn)義字符意義ASCII碼值(十進制)\a響鈴(BEL)7\b退格(BS),將當(dāng)前位置移到前一列8\n換行(LF),將當(dāng)前位置移到下一行開頭10\r回車(CR),將當(dāng)前位置移到本行開頭13\t水平制表(HT)(跳到下一個TAB位置)9\v垂直制表(VT)11\\代表一個反斜線字符''\'92\'代表一個單引號(撇號)字符39\"代表一個雙引號字符34\0空字符(NULL)0\ddd1到3位八進制數(shù)所代表的任意字符三位八進制\xhh1到2位十六進制所代表的任意字符二位十六進制字符串常量用雙引號括起來,表示字符串。例:“abc”,”123”,”hello!”注:字符串默認(rèn)用0的ASCII作為結(jié)束符。例:“A”和’A’占用的內(nèi)存空間不同47A/0A“A”‘A’常量使用說明使用要點:符號常量用大寫字母表示(但不是必須)。例:#definePRICE30main()
{
intnum=10,total;
total=num*PRICE;
printf(“total=%d”,total);
}484.變量變量:在程序執(zhí)行過程中,其值可以被改變的量。變量必須先定義后使用。
變量的本質(zhì)是地址12a變量名內(nèi)存單元的地址變量值內(nèi)存單元的內(nèi)容49標(biāo)識符與變量的命名標(biāo)識符:對變量、符號常量、數(shù)組、函數(shù)、類型、文件等命名的有效字符序列。由字母、數(shù)字和下劃線組成。其長度與具體的編譯器有關(guān)。變量的命名原則:每個變量具有一個名稱,以區(qū)分不同的變量,變量的命名原則:按“見名知意”的原則。變量的定義:變量類型變量名稱例:inta;50基本整型(int)2字節(jié)或4字節(jié)短整型(shortint)長整型(longint)雙長整型(longlongint)511)整型變量說明:C標(biāo)準(zhǔn)沒有具體規(guī)定各種類型數(shù)據(jù)所占存儲單元的長
度,僅要求:sizeof(long)≥sizeof(int)≥sizeof(short)。/*求兩個數(shù)之和*/main(){
inta,b,sum;
/*定義變量*/
a=123;b=456;
sum=a+b;
printf(“sumis%d\n”,sum);}
輸出信息:sumis579例:52用于存放實型數(shù)據(jù)的變量。包括:單精度浮點型(float)一般占4字節(jié),6位有效數(shù)字雙精度浮點型(double)一般占8字節(jié),15位有效數(shù)字長雙精度浮點型(longdouble)一般占16字節(jié),19位有效數(shù)字如:floatx,y;doublez;532)實型變量3)字符變量用于存放1個字符既可以是8位的ASCII,也可以是一個8位二進制數(shù)定義方式:char字符變量名;例:charc1,c2;c1=‘d’;c2=‘s’;字符數(shù)據(jù)在內(nèi)存中存放的是它的ASCII編碼。當(dāng)以字符格式輸出時,輸出為字符;當(dāng)以整型輸出時,輸出為整型數(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將兩個小寫字母轉(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程序允許變量在定義時直接用“=”對其進行賦值。如:intsum=0;inta,b,c=5;inta=3,b=3,c=5;charc1=‘w’;
inta=d=e=10;C語言中沒有定義字符串變量,對字符串的處理將采用數(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));}用于計算各種數(shù)據(jù)類型占用存儲單元字節(jié)數(shù)的運算符5859主要內(nèi)容程序設(shè)計的基本概念數(shù)據(jù)類型數(shù)據(jù)的輸入與輸出運算符與表達式程序控制結(jié)構(gòu)及控制語句三種基本結(jié)構(gòu)程序設(shè)計輸入和輸出函數(shù)
C語言本身沒有輸入輸出語句,其輸入和輸出操作由C標(biāo)準(zhǔn)函數(shù)庫中的函數(shù)實現(xiàn)。系統(tǒng)函數(shù)庫中的標(biāo)準(zhǔn)函數(shù)已由開發(fā)者進行編譯(成為.OBJ文件),在鏈接時與源程序經(jīng)編譯后的目標(biāo)文件(.OBJ)鏈接在一起,形成可執(zhí)行文件(.exe)。60輸入輸出系統(tǒng)庫函數(shù)引用源程序在使用系統(tǒng)庫函數(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運行結(jié)果:0.333333格式字符,表示按浮點數(shù)輸出,整數(shù)部分全部輸出,小數(shù)保留6位。printf(“a=%f\n”,a/3);運行結(jié)果:a=0.333333可以設(shè)置有效小數(shù)位及輸出所占列數(shù)。如:
printf(“%12.10f\n”,a/3);運行結(jié)果:0.3333333333輸出函數(shù)說明:在用print函數(shù)輸出時,輸出對象的類型應(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ù)注意點:scanf函數(shù)中的“格式控制”后邊是變量地址,不是變量名。即:在變量名前邊要加“&”。例:floata,b,c;scanf("%f%f%f",&a,&b,&c);66要求輸入3個實數(shù),輸入時每個數(shù)之間要用空格分開。例:321輸入輸出函數(shù)中的格式符輸入輸出函數(shù)中常用的格式字符67格式符含
義%d以有符號十進制形式整數(shù)輸出/輸入有符號十進制整數(shù)%c以字符形式輸出,且只輸出一個字符/輸入單字符%s以字符串形式輸出/用于輸入字符串%f輸出單精度和雙精度浮點數(shù)/用于以小數(shù)或指數(shù)形式輸入浮點數(shù)68主要內(nèi)容程序設(shè)計的基本概念數(shù)據(jù)類型數(shù)據(jù)的輸入與輸出運算符與表達式程序控制結(jié)構(gòu)及控制語句三種基本結(jié)構(gòu)程序設(shè)計運算符與表達式運算是數(shù)據(jù)的加工過程。表示不同運算的符號稱為運算符。參加運算的數(shù)據(jù)稱為操作數(shù)。表達式:由運算符和運算數(shù)組成的式子不同類型的表達式按不同運算規(guī)則進行計算,計算結(jié)果是不同類型的值。69C語言運算符合表達式種類算術(shù)運算符和表達式關(guān)系運算符和表達式邏輯運算符和表達式賦值運算符和表達式自增自減運算符和表達式70第1次C程序?qū)嶒?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;顯示隨機數(shù)198=C6H第1位為1,表示負(fù)數(shù)字符的有效范圍是0~127#include<stdio.h>#definePI3.14159fintmain(){floatr,h,s,l,v1,v2;printf("請輸入圓的半徑r和圓柱高h:\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ù)運算符和算術(shù)表達式算術(shù)運算符:+(加),-(減),*(乘),/(除),%(整除求余)優(yōu)先級:先:乘、除,之后:取余,最后:加、減從左至右運算對象:數(shù)值變量、常數(shù)、函數(shù)、表達式等說明:對除法,若被除數(shù)和除數(shù)都為整數(shù),則結(jié)果也是整型數(shù)。C語言中沒有指數(shù)運算符。5X2
應(yīng)寫成5*X*X所有運算符不能省略(x+y)(x-y)改為(x+y)*(x-y)73算術(shù)表達式設(shè)a=5,b=3,c=1,d=2,e=6則:
a+b-c/d+e%d74=5+3–0+0=8%左右必須是整型,否則編譯出錯例:#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)系運算符和關(guān)系表達式關(guān)系運算主要用于比較兩個運算數(shù)的大小關(guān)系。用關(guān)系運算符將兩個表達式連接起來的式子,稱關(guān)系表達式。可以是:算術(shù)表達式、關(guān)系表達式、邏輯表達式、賦值表達式、字符表達式運算符名稱例子關(guān)系>大于a>ba大于b<小于a<ba小于b==等于a==ba等于b!=不等于a!=ba不等于b>=大于等于a>=ba大于等于b<=小于等于a<=ba小于等于b76關(guān)系表達式關(guān)系表達式的計算結(jié)果是邏輯值(布爾值):“1”
代表“真”,以“0”代表“假”。例如:“5==3”的值為“假”(值為0)“5>=0”的值為“真”(值為1)關(guān)系運算符的優(yōu)先級順序:{>,>=,<,<=}高于{==,!=}與其他運算符優(yōu)先級的關(guān)系:算術(shù)運算符>關(guān)系運算符>賦值運算符。例:3+5>777先運算3.邏輯運算符和邏輯表達式邏輯運算的結(jié)果是邏輯值“真”和“假”優(yōu)先級:!>&&>||運算對象算術(shù)、關(guān)系、賦值、字符及邏輯表達式運算符名稱例子關(guān)系!邏輯非!a非a&&邏輯與a&&ba與b||邏輯或a||ba或b78若a和b同時為“真”,則:a&&b為“真”運算符例不同運算符的優(yōu)先級:!>算術(shù)運算>關(guān)系運算>其他邏輯運算例:x*y>z&&x*y<100||-x*y>0&&!Isgreat(z)判別閏年表達式:(year%4==0&&year%100!=0)||year%400==079先計算函數(shù)4.賦值運算符和賦值表達式賦值運算符“=”:將=左邊表達式的值存入=右側(cè)的變量例:V=e;//將表達式的值e賦給變量V復(fù)合賦值運算符:格式:Vop=e等價于:V=Vope例:
a+=5,等價于a=a+5復(fù)合賦值運算符有:+=、-=、*=、/=、%=等10個80如果賦值運算符兩側(cè)的數(shù)據(jù)類型不一致,則賦值時需要進行類型轉(zhuǎn)換將浮點數(shù)據(jù)賦值給整型數(shù)據(jù)時,舍棄小數(shù)部分。int=float的結(jié)果為int型。如:floata;ints;a=12.34;s=a;
結(jié)果:這時s的值為1281賦值過程中的類型轉(zhuǎn)換將整型數(shù)據(jù)賦值給浮點型變量時,數(shù)值不變,但數(shù)據(jù)是浮點形式。即:float=int的結(jié)果為float型。如:ints;floata;s=12;a=s;結(jié)果:這時a的值為12.0000082賦值過程中的類型轉(zhuǎn)換賦值過程中的類型轉(zhuǎn)換將double型數(shù)據(jù)賦給float型變量時,將雙精度轉(zhuǎn)換為單精度.例:doubled=123.456789;floatf;f=d;83d=123.45678900000000f=123.4568將字符數(shù)據(jù)賦值給整型變量時,只將其低8位賦值給整型變量(即發(fā)生“截斷)例:inti=289;charc=‘a(chǎn)’c=i84賦值過程中的類型轉(zhuǎn)換c=33001000010000000100100001應(yīng)避免將長字節(jié)數(shù)賦給短字節(jié)數(shù),以免造成數(shù)據(jù)丟失賦值過程中的類型轉(zhuǎn)換字符數(shù)據(jù)賦值給整型變量時,傳送的是字符的ASCII碼int=char85例1:unsignedcharc; intx;c=‘\376’; x=c;
當(dāng)char為有符號數(shù)據(jù)時,高8位需進行“符號位擴展”,即高8位將依據(jù)符號位的值來決定是補0或補1;例:charc;intx;c=‘\376’;x=c;
111111101111111000000000111111111111111011111110X=-2X=254賦值過程中的類型轉(zhuǎn)換例i=j=m*n;
計算表達式m*n的值,將其結(jié)果存入變量j中,然后再將結(jié)果存入變量i中。temp=a;a=b;b=temp;
交換a和b的值,temp是工作單元。sum=sum+i;(等價于sum+=i;)875.自增、自減運算符自增運算符和自減運算符的用法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,再運算先運算,再使i和j加1表達式中各運算符的運算順序優(yōu)先級別運算符運算形式名稱或含義1()[](e)a[e]圓括號數(shù)組下標(biāo)2-+++--!-e++x或x++負(fù)號和正號自增運算和自減運算邏輯非3*/%e1*e2乘、除和求余4+-e1+e2加和減6<<=>>=e1<e2關(guān)系運算(比較)7==!=e1==e2等于和不等于比較90數(shù)據(jù)之間的混合算術(shù)運算級別低的類型轉(zhuǎn)換為級別高的類型。各類型按級別由低到高的順序為char,int,unsigned,long,unsignedlong,float,double。
可以使用強制類型轉(zhuǎn)換。d1=(double)i1/i2;9192主要內(nèi)容程序設(shè)計的基本概念數(shù)據(jù)類型數(shù)據(jù)的輸入與輸出運算符與表達式程序控制結(jié)構(gòu)及控制語句結(jié)構(gòu)化程序結(jié)構(gòu)化程序設(shè)計方法的基本思想是任何程序都可以用三種基本結(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í)行中的順序逐個執(zhí)行選擇結(jié)構(gòu)程序按設(shè)定的條件兩路或多路分支執(zhí)行循環(huán)結(jié)構(gòu)程序按給定條件重復(fù)執(zhí)行指定的程序段。94C程序控制結(jié)構(gòu)C語言是一種很好的結(jié)構(gòu)化程序設(shè)計語言,它提供了實現(xiàn)結(jié)構(gòu)化程序所需的多種流程控制語句。分類如下:95952.順序結(jié)構(gòu)順序結(jié)構(gòu)程序按語句或模塊在執(zhí)行中的順序逐個執(zhí)行96(a)(b)順序結(jié)構(gòu)順序結(jié)構(gòu)語句包括:說明語句賦值語句I/O語句復(fù)合語句和空語句97順序結(jié)構(gòu)復(fù)合語句:用花括號括起來的程序段。一般形式為:
{<局部數(shù)據(jù)說明部分><執(zhí)行語句段落>}空語句:只有一個分號的語句在語法上占據(jù)一個語句的位置,但不具備任何可執(zhí)行的功能。98{<局部數(shù)據(jù)說明部分><執(zhí)行語句段落>{<局部數(shù)據(jù)說明部分><執(zhí)行語句段落>}}993.選擇結(jié)構(gòu)選擇結(jié)構(gòu)當(dāng)滿足一定條件時程序才能執(zhí)行。程序按設(shè)定的條件兩路或多路分支執(zhí)行包括:單分支結(jié)構(gòu)兩分支結(jié)構(gòu)多分支結(jié)構(gòu)99選擇(分支)結(jié)構(gòu)100C程序中用if-語句實現(xiàn)兩個分支的選擇結(jié)構(gòu),用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)選擇結(jié)構(gòu)單分支結(jié)構(gòu)語句格式:if(表達式)
語句序列;語句序列可以是一個語句,也可以是復(fù)合語句結(jié)構(gòu)。兩分支結(jié)構(gòu)語句格式:if(表達式)語句序列1;else語句序列2;條件?語句序列1成立不成立語句序列2If語句舉例1例:輸入兩個實數(shù),按數(shù)值由小到大的次序輸出這兩個數(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(條件表達式1)<語句塊1>elseIf(條件表達式2)<語句塊2>……elseIf(條件表達式m)<語句塊m>Else<語句塊n>功能:若條件表達式1的值=True,執(zhí)行語句塊1;若條件表達式2的值=True,執(zhí)行語句塊2;….103104在3個數(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,則計算并輸出方程的實根;如果b2-4ac<0,則輸出“方程無實根”的信息。106If語句舉例3#include<stdio.h>#include<math.h>//算術(shù)運算庫函數(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(表達式)
[{]
語句序列
[}]110語句序列不成立成立條件?循環(huán)體while循環(huán)直到型循環(huán)語句格式:do{
語句序列
}while(表達式);111條件?語句序列成立不成立循環(huán)體例:計算1+2+3+…+100題目分析:該題目要求計算累加和:可以用while語句實現(xiàn):需要設(shè)置兩個參數(shù)累加和,計數(shù)值初始情況下,累加和=0;當(dāng)計數(shù)值大于100時停止求和,即退出循環(huán)。
聲明變量累加和sum,計數(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實現(xiàn)用dowhile實現(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(表達式1;表達式2;表達式3){
語句序列}115表達式2成立不成立語句序列計算表達式1計算表達式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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CACM 1547-2023多囊卵巢綜合征中西醫(yī)結(jié)合診療指南
- T/CACEM 31.4-2023高速公路經(jīng)營管理第4部分:收費服務(wù)要求
- T/CACE 034.2-2022基于項目的溫室氣體減排量評估技術(shù)規(guī)范循環(huán)經(jīng)濟領(lǐng)域資源化過程廢舊電池產(chǎn)品回收處理
- 地理-亞洲的自然環(huán)境課時2課件 2024-2025學(xué)年人教版地理七年級下冊
- T/CA 105-2019手機殼套通用規(guī)范
- T/BMPA 0001-2023再生水供用雙方協(xié)商價格行為指南
- T/BJWX 004-2024會議服務(wù)管理規(guī)范
- 人民幣相關(guān)課件
- 特殊心理健康教育
- 交通設(shè)備制造業(yè)數(shù)字化轉(zhuǎn)型中的智能交通安全風(fēng)險分析報告
- 2025年福建省廈門市思明區(qū)廈門第一中學(xué)初三5月二模試題英語試題含答案
- 食品行業(yè)銷售助理崗位職責(zé)
- 八省聯(lián)考陜西試題及答案
- 貨物破損回復(fù)函
- 3“貝”的故事 課件
- 消防防汛知識培訓(xùn)課件
- Unit2 What time is it B let's talk and learn(說課稿)-2023-2024學(xué)年人教PEP版英語四年級下冊
- QC實驗室5S現(xiàn)場管理
- 管制刀具校園安全
- 2024年山東省濟南市中考英語試題卷(含答案解析)
- 技術(shù)保障管理制度
評論
0/150
提交評論