C語言程序設計_第1頁
C語言程序設計_第2頁
C語言程序設計_第3頁
C語言程序設計_第4頁
C語言程序設計_第5頁
已閱讀5頁,還剩116頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

會計學1C語言程序設計本章要點怎樣編寫程序,在屏幕上顯示一些信息?怎樣編寫程序,實現(xiàn)簡單的數據處理?什么是分支結構?它的作用是什么?switch語句中的break起什么作用?數據在內存中是如何存儲的?第1頁/共122頁導例:輸入生日并顯示1.問題描述

從鍵盤輸入個人生日信息,并在屏幕上顯示相應信息。2.問題分析

問題涉及到了輸入和輸出問題。

使用標準輸入函數scanf()接收鍵盤輸入的信息,

使用輸出函數printf()屏幕輸出。

從鍵盤輸入的信息要想輸出到屏幕上,需要先將數據存儲到內存空間保存起來,然后對其輸出。因此需要定義一個變量用于保存鍵盤輸入的數。在這里可以定義兩個整型變量分別用于保存生日的月份和日期信息。第2頁/共122頁3.算法描述

定義int變量month和day;

用printf()在屏幕上顯示提示信息“Enterthemonthandthedayofyourbirthday:”;

用scanf()從鍵盤輸入生日月份和日期,分別存儲在變量month和day中;

用printf()在屏幕上顯示生日信息。第3頁/共122頁4.程序實現(xiàn)#include<stdio.h>/*編譯預處理命令*/intmain()/*定義了一個名字為main的函數*/{ intmonth,day;/*定義兩個整形變量month和day*/printf("Enterthemonthandthedayofyourbirthday:");scanf("%d%d",&month,&day);/*接收鍵盤輸入的兩個整數*/ printf("Yourbirthdayis:%d%d\n",month,day); return0;}5.運行結果第4頁/共122頁標準輸入函數scanf()函數scanf()的一般調用格式為:

scanf(“<格式控制字符串>”,地址列表)

格式說明符和地址列表在數量和類型上要一一對應。int型:%dfloat型:%fdouble型:%lf例如:intmonth,dayscanf("%d%d",&month,&day);“%d%d”是格式控制字符串,%d和%f是格式說明符&是地址符,&month表示變量month的存儲地址。第5頁/共122頁注意:普通字符:原樣輸入盡量不要出現(xiàn)普通字符例如:scanf("%lf",&x);scanf(“%d,%d,%d”,&x,&y,&z);scanf(“%d;%d;%d”,&x,&y,&z);scanf(“%d-%d-%d”,&x,&y,&z);scanf(“x=%dy=%dz=%d”,&x,&y,&z);“”內最好不要加任何符號,如果要加提示,這些提示不會自動顯示出來,而必須由操作者手動輸入,否則出現(xiàn)數據錯誤??梢圆捎幂斎胩崾镜妮斎敕绞剑簆rintf(“x=”);scanf(“%d”,&x);printf(“y=”);scanf(“%d”,&y);printf(“z=”);scanf(“%d”,&z);輸入:9.5輸入:9,5,7輸入:9;5;7輸入:9-5-7輸入:x=9y=5z=7第6頁/共122頁標準輸出函數printf()函數printf()的一般調用格式為:

printf(“<格式控制字符串>”,輸出列表)

在函數printf()中的格式控制字符串中還可以包含普通字符,在顯示中起到提示作用。例如: printf(“Yourbirthdayis:%d%d\n”,month,day);printf()的輸出參數也要和格式說明符一一對應。int型:%dfloatdouble型:%f第7頁/共122頁復習C程序的基本結構

預編譯命令#include<stdio.h>函數類型main(函數參數)intmain(){函數體開始{聲明部分intmonth,day;執(zhí)行部分

printf("Enterthemonthandthedayofyourbirthday:");scanf("%d%d",&month,&dayprintf("Yourbirthdayis:%d%d",month,day);return0;}函數體結束}第8頁/共122頁C程序的基本結構#include<stdio.h>intmain(){printf("HelloWorld\n");return0;}以#開始的語句稱為預處理器指令#include語句不是必需的,但是,如果程序有該語句,就必須將它放在程序的開始處以.h為后綴的文件被稱為頭文件,可以是C程序中現(xiàn)成的標準庫文件,也可以是自定義的庫文件。stdio.h文件中包含了有關輸入輸出語句的函數

main()函數是C程序處理的起點。

main()函數可以返回一個值,也可以不返回值。如果某個函數沒有返回值,那么在它的前面有一個關鍵字void在函數定義的后面有一個左大括號,即{它表示函數的開始,后面是函數的主體大括號也可以用于將語句塊括起來在函數定義的結尾處有一個右大括號,即}在屏幕上產生一行輸出“Helloworld”,并換行(\n)

函數主體中的每個語句都以分號結束。C程序中的一個語句可以跨越多行,并且用分號通知編譯器該語句已結束。第9頁/共122頁C程序中的注釋#include<stdio.h>voidmain(){printf("HelloWorld\n");}//此程序用來打印HelloWorld單行注釋C程序可以包含注釋,以便向讀者作一般說明編譯器并不處理這些注釋/*此程序由×××編寫*用來打印輸出“HelloWorld”*/多行注釋/**************************作者:創(chuàng)建日期:描述:……***************************/#include<頭文件>voidmain(){……}注釋在程序中添加注釋是一個好的編程習慣,可以增強程序的可讀性。第10頁/共122頁目標理解變量和常量的含義熟悉基本數據類型

-int、char、float和double使用算術運算符理解類型轉換熟練使用scanf()和printf()函數熟練使用getchar()和putchar()函數第11頁/共122頁算法的基本概念著名計算機科學家Nicklaus

Wirth提出程序=數據結構+算法數據結構:描述問題處理的對象及對象間的關系算法(Algorithm):描述解決問題的操作步驟第12頁/共122頁C語言中的基本元素常量是在程序中保持不變的量常量用于定義具有如下特點的數據:在程序中保持不變在程序內部頻繁使用時需要用比較簡單的方式替代某些值程序指令關鍵字常量標識符(變量)運算符分隔符等第13頁/共122頁變量程序內存編寫程序時,常常需要將數據存儲在內存中,方便后面使用這個數據或者修改這個數據的值。通常使用變量來存儲數據。使用變量可以引用存儲在內存中的數據,并隨時根據需要顯示數據或執(zhí)行數據操縱。存儲RateRate*5%將值存儲為DiscAmtRate-DiscAmt100.5將值存儲為Result9.5第14頁/共122頁聲明和使用變量聲明變量:Datatypevariablename;類型名變量名表;定義時初始化變量:Datatypevariablename=value;定義后初始化變量:variablename=value;給變量賦值,除了給一個直接的值以外,還可以通過計算獲得。變量具有三個要素:名字、類型和值第15頁/共122頁變量的定義變量定義的一般形式:類型名變量名表;例如:intmonth,day;//定義整型變量floatx;//定義單精度浮點型變量doublearea,length;//定義雙精度浮點型變量double型數據比float精度高,取值范圍大變量名:小寫字母;見名知義第16頁/共122頁變量命名在C語言中,變量命名需要遵循一定的規(guī)則有效名稱principalcost_pricemarks_3lastnamecity無效名稱123ratecurrency$discount%zipcode變量的命名規(guī)則:變量名可以由字母、數字和_(下劃線)組合而成變量名不能包含除_以外的任何特殊字符,如:%、#、逗號、空格等變量名必須以字母或

_(下劃線)開頭變量名不能包含空白字符(換行符、空格和制表符稱為空白字符)C語言中的某些詞(例如int和float等)稱為保留字,具有特殊意義,不能用作變量名C語言區(qū)分大小寫,因此變量price與變量PRICE是兩個不同的變量第17頁/共122頁變量的定義定義變量時要指定變量名和數據類型類型名變量名表;intmonth,day;floatx;doublearea,length;變量名代表內存中的一個存儲單元存放該變量的值該存儲單元的大小由變量的數據類型決定C語言中的變量代表保存數據的存儲單元數學中的變量代表未知數x=x+1第18頁/共122頁變量的定義與使用#include<stdio.h>intmain(void){floatmath,computer,total;printf("Enteryourscore:");scanf("%d%d",&math,&computer);

total=math+computer;

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

return0;}一個變量名只能定義一次變量一般都定義在程序的頭上不能定義在程序的中間或后面應該先賦值,后引用變量必須先定義,后使用。第19頁/共122頁基本數據類型數據屬于不同類別AfricaThequickbrownfoxTRUE數據

非數值數值整型非整型9002.129999/12/20032.175123JackieChanchar數據類型非數值數值整型intshortintlongintdoublefloat非整型第20頁/共122頁2.2基本數據類型與基本輸入輸出數據類型類型說明符字節(jié)數取值范圍字符型char1C字符集整型、長整型int、longint4-2147483648~2147483647即-231~(231-1)短整型shortint2-32768~32767即-215~(215-1)無符號整型unsignedint40~4294967295即0~(232-1)無符號短整型Unsignedshortint20~65535即0~(216-1)單精度型float4負數:-3.4028235×1038~-1.401298×10-45正數:1.401298×10-45~3.4028235×1038雙精度型double8負數:-1.79769313486231570×10308~-4.94065645841246544×10-324正數:4.94065645841246544×10-324~1.79769313486231570×10308長雙精度型Longdouble1610-4931~104932第21頁/共122頁整型名稱全稱類型說明符縮寫類型說明符字節(jié)數范圍整型intint4-2147483648~2147483647即-231~(231-1)無符號整型unsignedintunsigned40~4294967295即0~(232-1)短整型shortintshort2-32768~32767即-215~(215-1)無符號短整型unsignedshortintunsignedshort20~65535即0~(216-1)長整型longintlong4-2147483648~2147483647即-231~(231-1)無符號長整型unsignedlongintunsignedlong40~4294967295即0~(232-1)第22頁/共122頁使用整型變量聲明:intpage_number;longintpopulation;unsignedintage;可按如下方式初始化:page_number=0;intmax_marks=100;在同一語句中可以聲明多個類型相同的變量:intpage_number,copies,paper_width;第23頁/共122頁單精度浮點型float在C語言中用于存儲單精度浮點數float32位10-38

10+38,7位有效數字聲明:floatselling_price;初始化:floatselling_price=11.3;selling_price=65.90;第24頁/共122頁雙精度浮點型內存floatdouble213.5671435568967

64位取值范圍:10-308

至1030816

位有效數字聲明:doublepressure_level;初始化:pressure_level=213.5671435568967;doubledvalue=35.4;第25頁/共122頁字符型3-1

在線保險單年齡:_____保險總額:_____性別:_____2398340'M'數值型字符型int/floatchar第26頁/共122頁字符型3-2'''5''p''$'

有效的字符型值"2"'2'正確'2'+'2'=4

X值符號值符號值符號0空字符44,91[32空格45-92\33!46.93]34"47/94^35#48~570~9

95-36$58:96`37%59;97~122a~z38&60<123{39'61=124|40(62>125}41)63?126~42*64@127DEL(Delete鍵)43+65~90A~Z

第27頁/共122頁字符型3-3char占8位內存示例:chargender;gender='m';chargender='m';第28頁/共122頁算法的表示方法──流程圖是算法的一種圖形化表示方式,將一個過程中的指令或流動的流程繪制成圖,并使用符號表示其中的每個活動。START

DISPLAY'HelloWorld!'STOP

第29頁/共122頁算法的表示方法──流程圖符號說明程序的開始或結束計算步驟/操作輸入/輸出指令判斷和分支流程線第30頁/共122頁兩數相加的流程圖StartINPUTC=A+BDISPLAYCStop起止框:這里是程序的開始輸入輸出框:這里用來輸入兩個數處理框:這里用來兩個數相加輸入輸出框:這里用來顯示和起止框:這里是程序的結束第31頁/共122頁IF-ELSE結構STARTINPUTnumr=numMOD2r=0DISPLAY“NumberisEven”STOP是DISPLAY“Numberisodd”否第32頁/共122頁循環(huán)結構STARTi=0,sum=0i<=100STOP是否sum=sum+i;i=i+1第33頁/共122頁導例:匯率換算1.問題描述

假設人民幣對美元的匯率是0.1642,計算用戶輸入的人民幣值可以兌換多少美元。2.問題分析

人民幣兌換美元的計算公式為:dollar=rmb×rate3.算法描述

確定匯率,rate=0.1642;

接收用戶輸入的人民幣值,將其賦值給rmb;

計算公式:dollar=rmb*rate;

屏幕輸出結果。第34頁/共122頁圖2-1匯率換算流程圖4.程序實現(xiàn)#include<stdio.h>main(){intrmb;/*定義整型變量,存放人民幣值*/floatrate;/*定義單雙精度浮點型變量,存放匯率值*/floatdollar;/*定義單精度浮點型變量,存放美元值*/rate=0.1642;/*對變量rate賦值*/printf("rmb=");scanf(“%d”,&rmb);/*接收用戶輸入*/dollar=rmb*rate;/*匯率換算*/printf("¥%dcanexchange$%.2f\n",rmb,dollar);/*調用printf()函數輸出結果*/}第35頁/共122頁格式說明符功能說明%d輸入或輸出十進制整數%o輸入或輸出八進制整數%x輸入或輸出十六進制整數%f輸入或輸出實數%c輸入或輸出單個字符%s輸入或輸出字符串表2-5常用的格式說明符第36頁/共122頁標準輸出函數printf()函數printf()的一般調用格式為:

printf(“<格式控制字符串>”,輸出列表)

在函數printf()中的格式控制字符串中還可以包含普通字符,在顯示中起到提示作用。例如: printf(“Yourbirthdayis:%d%d\n”,month,day);printf()的輸出參數也要和格式說明符一一對應。int型:%dfloatdouble型:%f第37頁/共122頁說明printf()函數有一些附加格式說明符,可用于修飾格式說明符,格式為:%m和%m.n。如“%.2f”中的“.2”表示輸出2位小數;“%.2s”,則表示只輸出字符串的前兩個字符;“%-10.2f”表示該變量一共占10位,包括整數部分、小數點和小數點后位數,且小數點后只能保留2位,“-”表示采用左對齊方式。第38頁/共122頁轉義序列輸出結果:Name:AudreyHepburnMovie:‘RomanHoliday’代碼:printf(“Name:AudreyHepburn\nMovie:\‘RomanHoliday\’”);轉義序列允許在輸出結果中包括特殊字符轉義序列名稱描述\a警告產生一則警告。\b退格將光標回退一格。\f換頁將光標移到下一頁的第一格。\n換行將光標移到下一行的第一格。\r回車將光標移到當前行的第一格。\t水平制表將光標移到下一個水平制表位置。\v垂直制表將光標移到下一個垂直制表位置。\'單引號產生一個單引號。\"雙引號產生一個雙引號。\?問號產生一個問號。\\反斜線產生一條反斜線。\0空產生一個空字符。第39頁/共122頁標準輸入函數scanf()函數scanf()的一般調用格式為:

scanf(“<格式控制字符串>”,地址列表)

格式說明符和地址列表在數量和類型上要一一對應。int型:%dfloat型:%fdouble型:%lf例如:intmonth,dayscanf("%d%d",&month,&day);“%d%d”是格式控制字符串,%d和%f是格式說明符&是地址符,&month表示變量month的存儲地址。第40頁/共122頁注意:普通字符:原樣輸入盡量不要出現(xiàn)普通字符例如:scanf("%lf",&x);scanf(“%d,%d,%d”,&x,&y,&z);scanf(“%d;%d;%d”,&x,&y,&z);scanf(“%d-%d-%d”,&x,&y,&z);scanf(“x=%dy=%dz=%d”,&x,&y,&z);“”內最好不要加任何符號,如果要加提示,這些提示不會自動顯示出來,而必須由操作者手動輸入,否則出現(xiàn)數據錯誤??梢圆捎幂斎胩崾镜妮斎敕绞剑簆rintf(“x=”);scanf(“%d”,&x);printf(“y=”);scanf(“%d”,&y);printf(“z=”);scanf(“%d”,&z);輸入:9.5輸入:9,5,7輸入:9;5;7輸入:9-5-7輸入:x=9y=5z=7第41頁/共122頁回顧常量在程序中不能被更改,而變量在程序中可以被更改C語言中的基本數據類型包括整型、單精度浮點型、雙精度浮點型和字符型整型分為短整型、整型、長整型,每種整型又可分為有符號型和無符號型單精度浮點型和雙精度浮點型變量可以存儲實數字符型變量可以存儲單個字符,其值是該字符的ASCII碼第42頁/共122頁目標getchar()和putchar()函數理解表達式掌握賦值運算符的用法熟練使用關系運算符掌握簡單的條件語句的使用熟練使用邏輯運算符理解運算符的優(yōu)先級第43頁/共122頁1.問題描述

輸入字符,為其加密。2.問題分析

加密是保證信息安全的常用方法。選用一種最簡單的方式,就是字符變換,變換方式為:字母轉換為其后第三個字母,a變?yōu)閐,b變?yōu)閑,c變?yōu)閒……。3.算法描述接收用戶輸入的一個字符,將其賦值給ch;進行字符變換;屏幕輸出加密結果.導例:字符加密第44頁/共122頁4.程序實現(xiàn)#include<stdio.h>main(){

charch;/*定義一個字符變量ch*/

ch=getchar();/*調用getchar()函數,從鍵盤上輸入一個字符,賦值給ch*/ch=ch+3;/*為字符ch加密*/putchar(ch);/*調用putchar()函數,輸出加密后的ch*/

putchar(‘\n’);}圖2-2為字符加密流程圖第45頁/共122頁單字符輸入/輸出單字符輸入函數getchar()的一般調用格式為:

getchar();getchar()函數為單個字符的輸入函數,通常把輸入的字符賦值給一個字符變量,構成賦值語句。

例如:ch=getchar();第46頁/共122頁單字符輸出函數putchar()的一般調用格式為:

putchar(ch);

其中ch是一個字符變量或者常量,也可以是一個ASCII碼值(不大于255的整數)。例如:

putchar(‘T’);/*輸出一個字符T,是一個字符常量*/ putchar(100);/*輸出一個ASCII值是100的字符,即d*/ putchar(‘\n’);/*輸出一個轉義字符,即換行符*/第47頁/共122頁輸入輸出字符scanf()和printf()%ccharch;scanf("%c",&ch);printf("%c",ch);getchar()和putchar()charch;ch=getchar();putchar(ch);輸入輸出一個字符第48頁/共122頁輸入輸出字符示例#include<stdio.h>intmain(void){charch1,ch2;ch1=getchar();ch2=getchar();putchar(ch1);putchar('#');putchar(ch2);return0;}AbA#b第49頁/共122頁輸入輸出字符示例#include<stdio.h>intmain(void){charch1,ch2,ch3;scanf("%c%c%c",&ch1,&ch2,&ch3);printf("%c%c%c%c%c",ch1,'#',ch2,'#',ch3);return0;}AbCA#b#CAbCA##b第50頁/共122頁字符運算大小寫英文字母轉換'b'-'a'='B'-'A'……'z'-'a'='Z'-'A''m''M''m'->'M''M'->'m''m'-'a'+'A'='M''M'-'A'+'a'='m''8'-'0'=88+'0'='8'數字字符和數字轉換9-0='9'-'0''9'=9+'0''8'8'8'->88->'8'第51頁/共122頁導例:考核通過了嗎?1.問題描述

給出三項考核成績,判定單項考核和綜合考核是否通過。2.問題分析假如考核通過標準線是60分,將考核成績與60進行比較,即可判定該項考核是否通過。如果每項考核成績都大于等于60分,則判定綜合考核通過;否則不通過。3.算法描述接收用戶輸入的三項考核成績,存入成績變量中score1、score2、score3;將各項成績與60進行比較,輸出比較結果。第52頁/共122頁4.程序實現(xiàn)#include<stdio.h>main(){intscore1,score2,score3;/*定義各項考核成績變量*//*輸入考核成績*/printf("請輸入三項考核成績:");scanf("%d%d%d",&score1,&score2,&score3);/*輸出考核結果*/printf(“第一項考核結果:%d\n",score1>=60);printf("第二項考核結果:%d\n",score2>=60);printf("第三項考核結果:%d\n",score3>=60);printf("綜合考核結果:%d\n",(score1>=60)&&(score2>=60)&&(score3>=60));}圖2-3考核結果判斷流程圖第53頁/共122頁表達式3-1Sum=num1+num2操作數運算符表達式第54頁/共122頁Z=(X*2)+(5–Y)

表達式3-2操作數操作數表達式表達式表達式運算符第55頁/共122頁表達式3-3表達式由操作數和運算符的組合而成表達式中的操作數可以是變量、常量或者子表達式運算符的主要類型有:賦值運算符算術運算符關系運算符邏輯運算符第56頁/共122頁變量

表達式;賦值運算符Height=177.5;Weight=78;Gender=

’m’;x=a+b;w=sin(a)+sin(b);y=i++-j;最簡單的運算符:=第57頁/共122頁運算符與表達式算術運算符

算術運算符用于各種數值運算,包括5個二元運算符:加(+)、減(-)、乘(*)、除(/)、求余(%),和2個一元運算符:自增(++)、自減(--)。例如: 34+23、23.4-32、54.3*3、80.1/4、100%34如果定義如下變量并賦值:intx;floaty;x=30;y=53.64;x+y、x*y、x/23.5注意/整數除整數,得整數如:1/2=0,9/4=2%針對整型數據如:5%6=5,9%4=1,100%4=0雙目運算符兩側操作數的類型要相同第58頁/共122頁運算符與表達式使用自增(++)、自減(--)這兩個一元運算符的運算只需一個操作數,一般用于整型變量的加1、減1操作。例如intx;floaty;x=30;y=53.64;

x++

x的值加1,變?yōu)?1。

(x++)+yx先與y相加,然后x再加1,表達式結果為83.64;

(++x)+yx先加1,然后再與y相加,結果為84.64。第59頁/共122頁復合賦值運算符運算符表達式計算結果(假設x=10)+=x+=5x=x+515-=x-=5x=x-55*=x*=5x=x*550/=x/=5x=x/52%=x%=5x=x%50第60頁/共122頁示例#include<stdio.h>voidmain(){floatbook_price=60.75;printf("\n書的價格

=%f",book_price);book_price+=12.50;printf("\n書的新價格

=%f\n",book_price);}book_price=book_price+12.50;輸出:書的價格=60.750000書的新價格=73.250000第61頁/共122頁運算符與表達式關系運算符

關系運算符用于比較運算,包括6個運算符:

大于(>)、小于(<)、大于等于(>=)、

小于等于(<=)、等于(==)和不等于(!=)。

這6個邏輯運算符運算結果為邏輯值:1或0當條件成立時為真,結果為1;當條件不成立時為假,結果為0。區(qū)分=和==第62頁/共122頁關系運算符3-1關系運算符用于測試兩個操作數或兩個表達式之間的關系,其中操作數可以是變量、常量或表達式。操作數關系運算符關系表達式的計算結果=邏輯值(真或假)在C語言中,“0”表示“假”,“非0”表示“真”操作數第63頁/共122頁關系運算符3-2關系運算符>!===>=<=<操作數1操作數2第64頁/共122頁關系運算符3-3num1=10;num2=5;num3=20;num4=10;(num1+num2)>

(num3–num4)num=40;num/10!=2gender=‘m’真假==如果

gender=‘f’如果

gender=‘m’第65頁/共122頁邏輯運算符

邏輯運算符用于連接一個或多個條件,判斷這些條件是否成立

邏輯運算的結果均為邏輯值:1或0。邏輯運算符的類型為:

運算符與表達式運算運算符表達式邏輯“與”&&operand1&&operand2邏輯“或”||operand1||operand2邏輯“非”!!operand1第66頁/共122頁邏輯“與”運算符&&表達式1表達式2結果000010100111所有學科及格考勤率達到75%留級NoNo升級YesYes留級NoYes留級NoYes第67頁/共122頁邏輯“或”運算符||現(xiàn)金信用卡表達式1表達式2結果000011101111無法支付NoNo可支付NoYes可支付NoYes可支付YesYes第68頁/共122頁邏輯“非”運算符!表達式結果1001天氣NOT

陰天真假帶傘操作不帶傘第69頁/共122頁邏輯運算符總結操作數a操作數ba&&ba||b!a000010非0011非00010非0非0110所有學科及格考勤率達到75%&&天氣NOT陰天只有當兩個條件都為真時才執(zhí)行操作只要任何一個條件為真時就執(zhí)行操作對原條件取反,即:如果原條件為假時就執(zhí)行操作||!第70頁/共122頁運算符優(yōu)先級2-1當我們遇到一個復雜表達式時,需要確定先執(zhí)行哪種運算,此時就需要考慮運算符的優(yōu)先級z=x+y–g*h*

(t/20)+65–r%2先算哪部分加?減?取余?除?括號?要解決此問題,需要使用:運算符優(yōu)先級第71頁/共122頁運算符優(yōu)先級2-2運算符描述結合性()圓括號自左向右!,++,--,sizeof邏輯非,遞增,遞減,求數據類型的大小自右向左*,/,%乘法,除法,取余自左向右+,-加法,減法自左向右<,<=,>,>=小于,小于等于,大于,大于等于自左向右==,!=等于,不等于自左向右&&邏輯與自左向右||邏輯或自左向右=,+=,*=,/=,%=,-=賦值運算符,復合賦值運算符自右向左第72頁/共122頁在運算表達式中

算術運算符>關系運算符>邏輯運算符運算符的優(yōu)先級運算符功能

>

大于

>=

大于等于

<

小于

<=

小于等于

==

等于

!=

不等于高低優(yōu)先級運算符功能

!非

&&與

||或高低優(yōu)先級第73頁/共122頁2.3C程序的基本控制結構語句是構造C程序的最基本單位,程序運行的過程也就是語句執(zhí)行的過程,語句執(zhí)行的次序稱為流程控制。C程序有三種控制結構,分別是順序結構、選擇分支結構和循環(huán)結構。

順序結構是指按照語句的書寫順序依次執(zhí)行;

選擇分支結構是指通過對特定條件的判斷,選擇執(zhí)行一個分支;

循環(huán)結構是指在給定條件下,重復執(zhí)行某段程序,直到條件不滿足為止。第74頁/共122頁導例:計算圓的周長和面積1.問題描述

從鍵盤輸入圓的半徑,計算圓的周長和面積。2.問題分析

定義3個float型變量,分別用于存儲半徑、周長和面積,然后根據圓的周長公式perimeter=2πr,面積公式area=πr2進行計算。3.算法描述定義3個float變量r,perimeter和area。鍵盤輸入半徑r。利用公式perimeter=2πr計算周長。利用公式area=πr2計算面積。屏幕輸出周長perimeter和面積area。第75頁/共122頁4.程序實現(xiàn)#include<stdio.h>#definePI3.14/*宏定義*/main(){floatr,perimeter,area;

printf("Enterradius:");scanf("%f",&r);perimeter=2*PI*r;area=PI*r*r;printf("Perimeter=%.2f,Area=%.2f\n",perimeter,area);}結束輸出:perimeter,area輸入半徑開始計算perimeter計算area圖2-4計算周長和面積的算法流程圖第76頁/共122頁判斷數字的奇偶性1、問題描述

輸入1個整數,判斷該數是奇數還是偶數。2、問題分析

如果輸入的整數能夠被2整除,則是偶數,否則是奇數。3、算法描述輸入一個整數保存于整型變量number中。判斷條件:能被2整除,如果條件成立,則輸出:偶數。否則,輸出:奇數。第77頁/共122頁#include<stdio.h>intmain(void){intnumber;printf("Enteranumber:");scanf("%d",&number);if(number%2==0){printf(“偶數.\n");

}else{printf(“奇數.\n");

}return0;}falsetruenumber%2==0結束輸出:偶數輸出:奇數輸入number開始此處條件內由于只有一條語句,故{}可省略第78頁/共122頁條件結構2-1條件結構就是需要根據不同條件進行判斷,然后執(zhí)行不同的操作簡單if

語句的一般形式為:if(<條件>)

<語句塊>

如果條件為真,if語句執(zhí)行一個語句或一組語句;如果條件為假,則執(zhí)行if語句后面的語句(如果有)。第79頁/共122頁條件結構2-2

if-else

語句的一般形式為:

if(<條件>){

<語句塊>}else{

<語句塊>}如果條件為真,執(zhí)行if后面的一個語句或一組語句;如果條件為假,則執(zhí)行else后面的語句。第80頁/共122頁今年是閏年嗎?1.問題描述

從鍵盤輸入年份信息,判斷是否為閏年。2.問題分析

如果年份能夠滿足下述任意一個條件,就是閏年;如果兩個條件都不滿足,就不是閏年。

條件一:能被4整除且不能被100整除;

條件二:能被400整除。3.算法描述

輸入年份信息保存于整型變量year中。

判斷條件:能被4整除且不能被100整除或能被400整除,如果條件成立,則輸出:是。

否則,輸出:否。第81頁/共122頁4.程序實現(xiàn)#include<stdio.h>main(){intyear;

printf("Enteryear:");scanf("%d",&year);

if(year%4==0&&year%100!=0||year%400==0)/*閏年的條件*/ printf("YES\n");else printf("NO\n");

}falsetrueyear%4==0&&year%100!=0||year%400==0結束輸出:YES輸出:NO輸入year開始第82頁/共122頁if(表達式1)

語句1;elseif(表達式2)

語句2;elseif(表達式3)

語句3;..else

語句n;真假真假真假條件結構2-3第83頁/共122頁求解一元二次方程1.問題描述

從鍵盤輸入一元二次方程ax2+bx+c=0的3個系數a,b,c,編程計算該方程的解,并輸出之。2.問題分析

根據判別式b2-4ac的值不同,一元二次方程的解可分為以下3種情況:b2-4ac>0,方程有2個實數解,分別為b2-4ac=0,方程只有1個實數解,為b2-4ac<0,方程沒有實數解第84頁/共122頁3.算法描述輸入一元二次方程的3個參數a,b,c。計算判別式b2-4ac,并將結果存在變量s中。根據判別式的值進行判斷:

如果s>0,輸出方程的2個實數解;

如果s=0,輸出方程唯一解;

否則(即s<0),輸出沒有實數解。truefalsetruefalse輸入a,b,c結束s>0輸出2個解開始b2-4acss=0輸出1個解輸出無解第85頁/共122頁4、程序實現(xiàn)#include<stdio.h>#include<math.h>main(){inta,b,c,s;doublex1,x2;printf("Enter3integers:");scanf(“%d%d%d”,&a,&b,&c);s=b*b-4*a*c;/*條件判斷,輸出結果*/}/*條件判斷,輸出結果*/if(s>0){x1=(-b+sqrt(s))/(2*a);x2=(-b-sqrt(s))/(2*a);printf("x1=%lf,x2=%lf\n",x1,x2);}elseif(s==0){x1=x2=(-b)/(2.0*a);printf("x=%lf\n",x1);}elseprintf(“Nosolution\n”);第86頁/共122頁常用數學庫函數庫函數C語言處理系統(tǒng)提供事先編好的函數,供用戶在編程時調用。scanf(),printf(),exp()在相應的系統(tǒng)文件(頭文件)中定義一些必需的信息。#include命令用戶調用庫函數時,將相應的頭文件包含到源程序中。例如調用scanf,printf,需要#include<stdio.h>調用sqrt,需要#include<math.h>第87頁/共122頁常用數學庫函數平方根函數sqrt(x)

絕對值函數fabs(x)fabs(-3.56)的值為3.56冪函數pow(x,n):xnpow(1.1,2)的值為1.21(即1.12)指數函數exp(x):exexp(2.3)的值為e2.3以e為底的對數函數log(x):lnxlog(123.45)的值為4.815836以10為底的對數函數log10(x):log10xlog10(123.45)的值為2.091491。第88頁/共122頁二分支結構和if-else語句if(表達式)

語句1else

語句2if(表達式)

語句1語句1表達式語句2真(非0)假(0)語句1表達式真(非0)假(0)一條語句第89頁/共122頁多分支結構和else–if語句else-if語句是最常用的實現(xiàn)多分支(多路選擇)的方法。if(表達式1)語句1;elseif(表達式2)語句2;……elseif(表達式n-1)語句n-1;else語句n;一般格式為:第90頁/共122頁假表達式1表達式2語句1語句2語句n-1語句n真

表達式n-1假真

假假真

n個分支需要n-1次比較if(表達式1)語句1elseif(表達式2)語句2……elseif(表達式n-1)語句n-1else語句n多分支選擇結構還可使用switch語句或if-else語句的嵌套來實現(xiàn)。第91頁/共122頁/*使用if-else語句的嵌套來實現(xiàn)求解*/if(s>0){x1=(-b+sqrt(s))/(2*a);x2=(-b-sqrt(s))/(2*a);printf("x1=%lf,x2=%lf\n",x1,x2);}else

if(s==0){x1=x2=(-b)/(2.0*a);printf("x=%lf\n",x1);}

elseprintf(“Nosolution\n”);if(表達式)

語句1else

語句2if語句if語句第92頁/共122頁if-else語句的嵌套的結構if(表達式1)if(表達式2)語句1else語句2elseif(表達式3)語句3else語句4表達式1表達式3語句4真假表達式2語句3語句1語句2真真假假第93頁/共122頁復習表達式是操作數和運算符的集合關系運算符運用測試兩個操作數之間的關系邏輯運算符用于組合多個條件(&&和||)或者為某一條件取反(!)在復雜表達式中,通過運算符的優(yōu)先級確定各種運算符的執(zhí)行順序條件結構解決了程序種需要根據不同情況進行判斷的情況(ifelse(if))第94頁/共122頁嵌套if結構if(x>0)if(y>1)z=1;else/*這個

else部分屬于哪個

if?*/z=2;C語言規(guī)定,每個else部分總屬于前面最近的那個缺少對應的else部分的

if語句。提倡使用大括號括起來以避免看起來有二義性。?第95頁/共122頁else和if的匹配if(表達式1)if(表達式2)語句1else語句2elseif(表達式3)語句3else語句4if(表達式1)if(表達式2)語句1

elseif(表達式3)語句3else語句4else與最靠近它的、沒有與別的else匹配過的if匹配if(表達式1)if(表達式2)語句1elseif(表達式3)語句3else語句4第96頁/共122頁改變else和if的配對例

改寫下列if語句,使else和第1個if配對。if(x<2)if(x<1)y=x+1;elsey=x+2;if(x<2){if(x<1)y=x+1;}elsey=x+2;if(x<2)if(x<1)y=x+1;else;elsey=x+2;每條語句的執(zhí)行條件?

第97頁/共122頁目標使用switch結構上機練習解答課后習題第98頁/共122頁四則運算1、問題描述

求解簡單的四則運算表達式。2、問題分析

輸入一個形式如“操作數運算符操作數”的四則運算表達式,根據輸入的運算符,做相應運算,輸出運算結果。3、算法分析鍵盤輸入形式如“操作數運算符操作數”的四則運算表達式。根據運算符的不同,做不同的計算。輸出運算結果。第99頁/共122頁#include<stdio.h>intmain(void){doublevalue1,value2;

charop;/*定義字符型的變量*/scanf("%lf%c%lf",&value1,&op,&value2);if(op=='+')printf("=%.2f\n",value1+value2);elseif(op=='-')printf("=%.2f\n",value1-value2);elseif(op=='*')printf("=%.2f\n",value1*value2);elseif(op=='/')printf("=%.2f\n",value1/value2);elseprintf("Unknownoperator\n");return0;}4、程序實現(xiàn)第100頁/共122頁字符常量'a''z''A''Z''0''9''''\n'ASCII字符集:列出所有可用的字符每個字符:惟一的次序值(ASCII碼)

區(qū)分數字1和數字字符'1'第101頁/共122頁使用switch語句實現(xiàn)四則運算#include<stdio.h>intmain(void){doublevalue1,value2;

charop;scanf("%lf%c%lf",&value1,&op,&value2);

switch(op){case'+':printf("=%.2f\n",value1+value2);break;

case'-':printf("=%.2f\n",value1-value2);break;case'*':printf("=%.2f\n",value1*value2);break;case'/':printf("=%.2f\n",value1/value2);break;default:printf("Unknownoperator\n");break;}return0;}第102頁/共122頁switch語句處理多分支選擇問題,3種情況1、在switch語句的每個語句段中都使用break語句switch(表達式){case常量表達式1:語句段1;break;

case常量表達式2:語句段2;break;

case常量表達式n:語句段n;break;

default:語句段n+1;break;}第103頁/共122頁計算存款利息1.問題描述

銀行對整存整取存款期限不同對應的存款利率也不同,鍵盤輸入存款本金和存期,計算到期時的利息及利息與本金的和。當前整存整取年息利率:一年:3.25%二年:3.75%三年:4.25%五年:4.75%2.問題分析

本導例需要根據不同的存款期限決定存款利率,考慮使用switch語句實現(xiàn)多分支選擇結構。第104頁/共122頁3.算法描述鍵盤輸入存款本金和存期。根據存款期限的不同,按照不同的利率計算利息。輸出利息和本息合計。第105頁/共122頁程序實現(xiàn)#include<stdio.h>main(){doublemoney,rate,rest,total;inttime;

printf("輸入本金:");scanf("%lf",&money);printf("請輸入存期:");scanf("%d",&time);

/*使用switch語句實現(xiàn)利率的選擇*/rest=money*rate*time;total=money+rest;

printf("到期利息:%.2f\n",rest);printf("本息合計:%.2f\n",total);}switch(time){case1:rate=0.0325;break;case2:rate=0.0375;break;case3:rate=0.0425;break;case5:rate=0.0475;break;default:rate=0;}第106頁/共122頁2、在switch中不使用breakswitch(表達式){case常量表達式1:語句段1;

case常量表達式2:語句段2;

case常量表達式n:語句段n;

default:語句段n+1;}表達式的值=常量表達式2的值表達式語句段1語句段2語句段n語句段n+1表達式的值=常量表達式1的值表達式的值=常量表達式n的值其他switch(time){case1:rate=0.0325;case2:rate=0.0375;case3:rate=0.0425;case5:rate=0.0475;default:rate=0;}rate=?第107頁/共122頁3、在switch的某些語句段中使用break

輸入1個字符,輸出該字符所屬的種類,如空格或回車、數字字符,其他字符。intmain(void){intblank,digit,i,other;charch;blank=digit=other=0;

printf("Enter10characters:");ch=getchar();

switch(ch){

case'':case'\n':printf(“該字符是空格或回車”);break;

case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':

printf(“該字符是數字字符”);break;default:printf(“該字符是其他字符”);break;

}

return0;}第108頁/共122頁可以構成三角形嗎?1.問題描述輸入三條邊,判斷它們能否構成三角形,若能則指出是何種三角形。2.問題分析給定的三條邊,只要兩邊之和大于第三邊即可構成三角形,否則不能構成三

溫馨提示

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

評論

0/150

提交評論