C程序設(shè)計(第四版)課件-第3章-最簡單的C程序設(shè)計-順序程序設(shè)計_第1頁
C程序設(shè)計(第四版)課件-第3章-最簡單的C程序設(shè)計-順序程序設(shè)計_第2頁
C程序設(shè)計(第四版)課件-第3章-最簡單的C程序設(shè)計-順序程序設(shè)計_第3頁
C程序設(shè)計(第四版)課件-第3章-最簡單的C程序設(shè)計-順序程序設(shè)計_第4頁
C程序設(shè)計(第四版)課件-第3章-最簡單的C程序設(shè)計-順序程序設(shè)計_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章最簡單的C程序設(shè)計3.1順序程序設(shè)計舉例3.2數(shù)據(jù)的表現(xiàn)形式及其運算3.3C語句3.4數(shù)據(jù)的輸入輸出13.1順序程序設(shè)計舉例

例3.1有人用溫度計測量出用華氏法表示的溫度(如F,今要求把它轉(zhuǎn)換為以攝氏法表示的溫度(如C)。解題思路:找到二者間的轉(zhuǎn)換公式f代表華氏溫度,c代表攝氏溫度23.1順序程序設(shè)計舉例算法:輸入f的值輸出c的值

例3.1有人用溫度計測量出用華氏法表示的溫度(如F,今要求把它轉(zhuǎn)換為以攝氏法表示的溫度(如C)。N-S圖33.1順序程序設(shè)計舉例#include<stdio.h>intmain(){floatf,c;f=64.0;c=(5.0/9)*(f-32);

printf("f=%f\nc=%f\n",f,c);return0;}定義f和c為單精度浮點型變量指定f的值計算c的值輸出f和c的值43.1順序程序設(shè)計舉例

例3.2計算存款利息。有1000元,想存一年。有三種方法可選:(1)活期,年利率為r1(2)一年期定期,年利率為r2(3)存兩次半年定期,年利率為r3

請分別計算出一年后按三種方法所得到的本息和。53.1順序程序設(shè)計舉例解題思路:確定計算本息和的公式。從數(shù)學知識可知:若存款額為p0,則:活期存款一年后本息和為:

p1=p0(1+r1)一年期定期存款,一年后本息和為:

p2=p0(1+r2)兩次半年定期存款,一年后本息和為:

63.1順序程序設(shè)計舉例算法:輸入p0,r1,r2,r3的值計算p1=p0(1+r1)計算p2=p0(1+r2)計算p3=p0(1+)(1+)輸出p1,p2,p373.1順序程序設(shè)計舉例#include<stdio.h>intmain(){floatp0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;p1=p0*(1+r1);p2=p0*(1+r2);p3=p0*(1+r3/2)*(1+r3/2);printf(”%f\n%f\n%f\n”,p1,p2,p3);return0;}定義變量同時賦予初值83.2數(shù)據(jù)的表現(xiàn)形式及其運算3.2.1常量和變量3.2.2數(shù)據(jù)類型3.2.3整型數(shù)據(jù)3.2.4字符型數(shù)據(jù)3.2.5浮點型數(shù)據(jù)3.2.6怎樣確定常量的類型3.2.7運算符和表達式93.2.1常量和變量1.常量:在程序運行過程中,其值不能被改變的量整型常量:如1000,12345,0,-345進制的不同:十進制(0-9)、八進制(0-7)、十六進制(0-9、A-F)

如123,0123,0X123類型、符號的不同:基本整型、長整型、無符號整型如123、123L、123U實型常量十進制小數(shù)形式:如0.34-56.790.0指數(shù)形式:如12.34e3(代表12.34103)字符常量:如’?’轉(zhuǎn)義字符:如’\n’字符串常量:如”boy”符號常量:#definePI3.141610#include<stdio.h>main(){doubler;

printf("Inputr:");

scanf("%lf",&r);

printf("circumference=%f\n",2*3.14159*r);

printf("area=%f\n",3.14159*r*r); }【例】計算圓的周長和面積Inputr:5.3↙circumference=33.300854area=88.247263直接使用常數(shù)會有什么影響?程序的可讀性變差容易發(fā)生書寫錯誤當常數(shù)需要改變時,要修改所有引用它的代碼,工作量大,還可能有遺漏解決方案:把直接常數(shù)定義為符號常量(宏常量)一般采用全大寫字母表示宏定義不是語句,而是一種編譯預處理命令#include<stdio.h>#definePI3.1415926main(){doubler;

printf("Inputr:");

scanf("%lf",&r);

printf("circumference=%f\n",2*PI*r);

printf("area=%f\n",PI*r*r); }宏替換【例】計算圓的周長和面積符號常量(宏常量)的定義格式:#define 符號常量名字符串符號常量的定義3.2.1常量和變量2.變量:在程序運行期間,變量的值是可以改變的變量必須先定義,后使用定義變量時指定該變量的名字和類型變量名和變量值是兩個不同的概念變量名實際上是以一個名字代表的一個存儲地址從變量中取值,實際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)143.2.1常量和變量3.常變量:constinta=3;4.標識符:一個對象的名字標識符分類關(guān)鍵字:具有特定含義的、專門用來說明C語言的特定成分的一類單詞或單詞的縮寫,也稱為保留字。預定義標識符:在C語言中也具有特定的含義。一般為所有系統(tǒng)函數(shù)的函數(shù)名。用戶自定義標識符:由用戶根據(jù)需要定義的標識符。C語言規(guī)定標識符只能由字母、數(shù)字和下劃線3種字符組成,且第一個字符必須為字母或下劃線合法的標識符:如sum,average,_total,Class,day,BASIC,li_ling不合法的標識符:M.D.John,¥123,#33,3D64,a>b大小寫字母是不同的字符153.2.2數(shù)據(jù)類型所謂類型,就是對數(shù)據(jù)分配存儲單元的安排,包括存儲單元的長度(占多少字節(jié))以及數(shù)據(jù)的存儲形式不同的類型分配不同的長度和存儲形式163.2.2數(shù)據(jù)類型C語言允許使用的數(shù)據(jù)類型:基本類型整型類型基本整型短整型長整型雙長整型字符型布爾型浮點類型單精度浮點型雙精度浮點型復數(shù)浮點型173.2.2數(shù)據(jù)類型C語言允許使用的數(shù)據(jù)類型:基本類型枚舉類型空類型派生類型指針類型數(shù)組類型結(jié)構(gòu)體類型共用體類型函數(shù)類型算術(shù)類型純量類型183.2.3整型數(shù)據(jù)1.整型數(shù)據(jù)的分類最基本的整型類型基本整型(int型):占2個或4個字節(jié)短整型(shortint):VC++6.0中占2個字節(jié)長整型(longint):VC++6.0中占4個字節(jié)雙長整型(longlongint):C99新增的193.2.3整型數(shù)據(jù)1.整型數(shù)據(jù)的分類2.整型變量的符號屬性整型變量的值的范圍包括負數(shù)到正數(shù)可以將變量定義為“無符號”類型擴充的整形類型:203.2.3整型數(shù)據(jù)擴充的整型類型:有符號基本整型[signed]int;無符號基本整型unsignedint;有符號短整型[signed]short[int];無符號短整型unsignedshort[int];有符號長整型[signed]long[int];無符號長整型unsignedlong[int]有符號雙長整型[signed]longlong[int];無符號雙長整型unsignedlonglong[int]213.2.4字符型數(shù)據(jù)字符是按其代碼(整數(shù))形式存儲的C99把字符型數(shù)據(jù)作為整數(shù)類型的一種字符型數(shù)據(jù)在使用上有自己的特點223.2.4字符型數(shù)據(jù)1.字符與字符代碼大多數(shù)系統(tǒng)采用ASCII字符集字母:A~Z,a~z數(shù)字:0~9專門符號:29個:!”#&‘()*等空格符:空格、水平制表符、換行等不能顯示的字符:空(null)字符(以‘\0’表示)、警告(以‘\a’表示)、退格(以‘\b’表示)、回車(以‘\r’表示)等233.2.4字符型數(shù)據(jù)字符’1’和整數(shù)1是不同的概念:字符’1’只是代表一個形狀為’1’的符號,在需要時按原樣輸出,在內(nèi)存中以ASCII碼形式存儲,占1個字節(jié)整數(shù)1是以整數(shù)存儲方式(二進制補碼方式)存儲的,占2個或4個字節(jié)001100010000000000000001243.2.4字符型數(shù)據(jù)2.字符變量用類型符char定義字符變量charc=’?’;

系統(tǒng)把“?”的ASCII代碼63賦給變量cprintf(”%d%c\n”,c,c);輸出結(jié)果是:63?253.2.5浮點型數(shù)據(jù)浮點型數(shù)據(jù)是用來表示具有小數(shù)點的實數(shù)float型(單精度浮點型)編譯系統(tǒng)為float型變量分配4個字節(jié)數(shù)值以規(guī)范化的二進制數(shù)指數(shù)形式存放參見主教材圖3.11263.2.5浮點型數(shù)據(jù)浮點型數(shù)據(jù)是用來表示具有小數(shù)點的實數(shù)float型(單精度浮點型)double型(雙精度浮點型)編譯系統(tǒng)為double型變量分配8個字節(jié)15位有效數(shù)字longdouble(長雙精度)型273.2.6怎樣確定常量的類型字符常量:由單撇號括起來的單個字符或轉(zhuǎn)義字符整型常量:不帶小數(shù)點的數(shù)值系統(tǒng)根據(jù)數(shù)值的大小確定int型還是long型等浮點型常量:凡以小數(shù)形式或指數(shù)形式出現(xiàn)的實數(shù)C編譯系統(tǒng)把浮點型常量都按雙精度處理分配8個字節(jié)283.2.7運算符和表達式1.基本的算術(shù)運算符:+:正號運算符(單目運算符)-:負號運算符(單目運算符)*:乘法運算符/:除法運算符%:求余運算符+:加法運算符-:減法運算符293.2.7運算符和表達式說明兩個整數(shù)相除的結(jié)果為整數(shù)如5/3的結(jié)果值為1,舍去小數(shù)部分如果除數(shù)或被除數(shù)中有一個為負值,舍入方向不固定。例如,-5/3,有的系統(tǒng)中得到的結(jié)果為-1,在有的系統(tǒng)中則得到結(jié)果為-2VC++采取“向零取整”的方法

如5/3=1,-5/3=-1,取整后向零靠攏%運算符要求參加運算的運算對象(即操作數(shù))為整數(shù),結(jié)果也是整數(shù)。如8%3,結(jié)果為2303.2.7運算符和表達式2.自增、自減運算符:作用是使變量的值1或減1++i,--i:在使用i之前,先使i的值加(減)1i++,i--:在使用i之后,使i的值加(減)131n++,n--,++n,--n++讓參與運算的變量加1,--讓參與運算的變量減1作為后綴(postfix)運算符時,先取n的值,然后加/減1作為前綴(prefix)運算符時,先加/減1,然后取n的值m=n++;m=n;n++;自增自減運算m=++n;n++;

m=n;3.2.7運算符和表達式3.算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性:用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子,稱為C算術(shù)表達式運算對象包括常量、變量、函數(shù)等C語言規(guī)定了運算符的優(yōu)先級和結(jié)合性333.2.7運算符和表達式4.不同類型數(shù)據(jù)間的混合運算:+、-、*、/運算的兩個數(shù)中有一個數(shù)為float或double型,結(jié)果是double型。系統(tǒng)將float型數(shù)據(jù)都先轉(zhuǎn)換為double型,然后進行運算(2)如果int型與float或double型數(shù)據(jù)進行運算,先把int型和float型數(shù)據(jù)轉(zhuǎn)換為double型,然后進行運算,結(jié)果是double型(3)字符型數(shù)據(jù)與整型數(shù)據(jù)進行運算,就是把字符的ASCII代碼與整型數(shù)據(jù)進行運算343.2.7運算符和表達式

例3.3給定一個大寫字母,要求用小寫字母輸出。解題思路:關(guān)鍵是找到大、小寫字母間的內(nèi)在聯(lián)系同一個字母,用小寫表示的字符的ASCII代碼比用大寫表示的字符的ASCII代碼大32353.2.7運算符和表達式#include<stdio.h>intmain(){charc1,c2;c1=’A’;c2=c1+32;printf("%c\n",c2);printf(”%d\n”,c2);return0;}將字符‘A’的ASCII代碼65放到c1中將65+32的結(jié)果放到c2中用字符形式輸出用十進制形式輸出36自動類型轉(zhuǎn)換相同類型數(shù)據(jù)的運算結(jié)果,還是該類型不同類型數(shù)據(jù)的運算結(jié)果,是兩種類型中取值范圍大的那種long

double>double>float>long>int>short>chardoublefloatlongunsignedintchar,short低高不同類型數(shù)據(jù)的相互轉(zhuǎn)換自動類型轉(zhuǎn)換取值范圍小的類型賦值給取值范圍大的類型是安全的反之是不安全的若大類型的值在小類型能容納的范圍之內(nèi),則平安無事。但是浮點數(shù)轉(zhuǎn)為整數(shù),會丟失小數(shù)部分,而非四舍五入反之轉(zhuǎn)換后的結(jié)果必然是錯誤的,具體結(jié)果與機器和實現(xiàn)方式有關(guān)避免如此使用,好的編譯器會發(fā)出警告注意!不同類型數(shù)據(jù)的相互轉(zhuǎn)換Example:

intx=10; floaty; y=(float)x;

(float)10

10.000000x10y??10.000000不改變x不同類型數(shù)據(jù)的相互轉(zhuǎn)換強制類型轉(zhuǎn)換強轉(zhuǎn)(Casting)可以消除從大到小的警告

通過下面方式把表達式的值轉(zhuǎn)為任意類型

(類型)表達式3.2.7運算符和表達式5.強制類型轉(zhuǎn)換運算符強制類型轉(zhuǎn)換運算符的一般形式為

(類型名)(表達式)(double)a

(將a轉(zhuǎn)換成double類型)(int)(x+y)(將x+y的值轉(zhuǎn)換成int型)(float)(5%3)(將5%3的值轉(zhuǎn)換成float型)有兩種類型轉(zhuǎn)換系統(tǒng)自動進行的類型轉(zhuǎn)換強制類型轉(zhuǎn)換403.2.7運算符和表達式6.C運算符(1)算術(shù)運算符

(+-*/%++--)(2)關(guān)系運算符

(><==>=<=?。剑?3)邏輯運算符

(?。Γ|)(4)位運算符

(<<>>~|∧&)(5)賦值運算符

(=及其擴展賦值運算符)(6)條件運算符

(?:)413.2.7運算符和表達式6.C運算符(7)逗號運算符

(,)(8)指針運算符

(*和&)(9)求字節(jié)數(shù)運算符

(sizeof)(10)強制類型轉(zhuǎn)換運算符

((類型))(11)成員運算符

(.->)(12)下標運算符

([

])(13)其他

(如函數(shù)調(diào)用運算符())42Example:anintegeraninteger

theresultisalsoaninteger整數(shù)除法(IntegerDivision)11/5=2Example:實數(shù)除法(FloatingDivision)11.0/5=2.2afloatanintegertheresultisafloat求余(Modulus)Itreturnsthe

remainder

thatoccursafterperformingthedivisionof2operandsRule:

Operandsmustbe

integers注意!Example:11%5=1anintegeranintegertheresultistheremainderof11/51152101remainderresult求余(Modulus)Example:11.0%5=?afloatanintegerINVALID!

求余(Modulus)注意!Example:?48.52.5+6–

–44.52.5+6–2*2=算術(shù)表達式

(ArithmeticExpression)4.5【補例】計算并輸出一個三位整數(shù)的個位、十位和百位數(shù)字之和關(guān)鍵是如何分離個位、十位和百位數(shù)字?153%10

=3153/100=1153-1*100=5353/10=5【補例】計算并輸出一個三位整數(shù)的個位、十位和百位數(shù)字之和#include<stdio.h>main(){

intx=153,b0,b1,b2,sum;b2=x/100; b1=(x-b2*100)/10; b0=x%10; sum=b2+b1+b0;printf("b2=%d,b1=%d,b0=%d,sum=%d\n",b2,b1,b0,sum);}3.3C語句3.3.1C語句的作用和分類3.3.2最基本的語句----賦值語句513.3.1 C語句的作用和分類C語句分為以下5類:(1)控制語句:if、switch、for、while、do…while、continue、break、return、goto等(2)函數(shù)調(diào)用語句(3)表達式語句(4)空語句(5)復合語句52表達式語句。由一個表達式加上一個分號構(gòu)成的語句。最典型的是:由賦值表達式構(gòu)成一個賦值語句。a=3是一個賦值表達式,而a=3;是一個賦值語句。函數(shù)調(diào)用語句。由一次函數(shù)調(diào)用加一個分號構(gòu)成一個語句例如:printf

(”thisisaCstatement.”);c=max(a,b);控制語句。完成一定的控制功能,C只有9種控制語句,它們是:①if()~else~ ⑥break②for()~ ⑦switch③while()~ ⑧goto④do~while() ⑨return⑤continueC語句可以分為以下五類:3.3.1 C語句的作用和分類復合語句??梢杂脅}把多條語句括起來組成一條復合語句。

例如:{z=x+y;t=z/100;

printf(”%f”,t);}注意:復合語句中最后一個語句中最后的分號不能忽略不寫。空語句。即只有一個分號的語句,它什么也不做。下面是一個空語句:

;有時用來作循環(huán)語句中的循環(huán)體,實現(xiàn)延時。3.3.1 C語句的作用和分類3.3.2最基本的語句----賦值語句在C程序中,最常用的語句是:賦值語句輸入輸出語句其中最基本的是賦值語句553.3.2最基本的語句----賦值語句

例3.4給出三角形的三邊長,求三角形面積。563.3.2最基本的語句----賦值語句解題思路:假設(shè)給定的三個邊符合構(gòu)成三角形的條件關(guān)鍵是找到求三角形面積的公式公式為:其中s=(a+b+c)/257#include<stdio.h>#include<math.h>intmain(){doublea,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%f\tb=%f\t%f\n",a,b,c);

printf("area=%f\n",area);return0;}對邊長a、b、c賦值計算s計算area58#include<stdio.h>#include<math.h>intmain(){doublea,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%f\tb=%f\t%f\n",a,b,c);

printf("area=%f\n",area);return0;}數(shù)學函數(shù),計算平方根調(diào)用數(shù)學函數(shù)加此行59#include<stdio.h>#include<math.h>intmain(){doublea,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%f\tb=%f\t%f\n",a,b,c);

printf("area=%f\n",area);return0;}轉(zhuǎn)義字符,使輸出位置跳到下一個tab位置調(diào)用數(shù)學函數(shù)加此行60歸納總結(jié):1.賦值運算符“=”是賦值運算符作用是將一個數(shù)據(jù)賦給一個變量也可以將一個表達式的值賦給一個變量61歸納總結(jié):1.賦值運算符2.復合的賦值運算符在賦值符“=”之前加上其他運算符,可以構(gòu)成復合的運算符a+=3

等價于

a=a+362歸納總結(jié):1.賦值運算符2.復合的賦值運算符3.賦值表達式一般形式為:

變量

賦值運算符

表達式對賦值表達式求解的過程:求賦值運算符右側(cè)的“表達式”的值賦給賦值運算符左側(cè)的變量63歸納總結(jié):1.賦值運算符2.復合的賦值運算符3.賦值表達式賦值表達式“a=3*5”的值為15,對表達式求解后,變量a的值和表達式的值都是15“a=(b=5)”和“a=b=5”等價“a=b”和“b=a”含義不同64歸納總結(jié):1.賦值運算符2.復合的賦值運算符3.賦值表達式4.賦值過程中的類型轉(zhuǎn)換兩側(cè)類型一致時,直接賦值兩側(cè)類型不一致,但都是算術(shù)類型時,自動將右側(cè)的類型轉(zhuǎn)換為左側(cè)類型后賦值定義變量時要防止數(shù)據(jù)溢出65歸納總結(jié):1.賦值運算符2.復合的賦值運算符3.賦值表達式4.賦值過程中的類型轉(zhuǎn)換5.賦值表達式和賦值語句賦值表達式的末尾沒有分號,而賦值語句有分號一個表達式可以包含賦值表達式,但決不能包含賦值語句66歸納總結(jié):1.賦值運算符2.復合的賦值運算符3.賦值表達式4.賦值過程中的類型轉(zhuǎn)換5.賦值表達式和賦值語句6.變量賦初值inta=3,b=3,c;inta=3;相當于inta;a=3;67賦值運算符和表達式簡單賦值運算符 =復合的賦值運算符 運算符=賦值表達式 <變量><賦值運算符><表達式>【例】【例】復合的賦值運算符int

a,b;a=1;b=1;int

a,b;a=b=1;inta=b=1;inta=1,b=1;a=a+ba+=b已知inta=3;執(zhí)行a+=a-=a*a后,變量a的值?a+=a-=a*aa+=a-=9a+=-6

a=-123-6-12執(zhí)行a+=a-=a*=a后,變量a的值?a+=a-=a*=aa+=a-=9a+=0

a=03900RelationalOperationDescriptionExamplesofExpressionValue<Lessthan6<91(true)<=Lessthanorequalto5<=51(true)>Greaterthan2>60(false)>=Greaterthanorequalto9>=51(true)==Equalto7==50(false)!=Notequalto6!=51(true)關(guān)系運算符與關(guān)系表達式Symbol

Description

&& 與(AND)當且僅當兩者都為真,則結(jié)果為真|| 或(OR)只要兩者中有一個為真,結(jié)果就為真! 非(NOT)aba&&ba||b!a!b0000110非00110非000101非0非01100!&&||高低邏輯運算符和邏輯表達式ch是大寫英文字母(ch>='A')&&(ch<='Z')判斷某一年year是否是閏年的條件是滿足下列二者之一能被4整除,但不能被100整除;能被400整除;

year%4==0&&year%100!=0||year%400==0優(yōu)先級:%

==(!=)

&&

||((year%4==0)&&(year%100!=0))||(year%400==0)邏輯運算符和邏輯表達式Example:(a>=1)&&(b++==5)

(0>=1)&&(b++==5)

0&&(b++==5)

0a0b5c15d17盡量使用最少的操作數(shù)來確定表達式的值,這就意味著表達式中的某些操作數(shù)可能不會被計算

邏輯運算符和邏輯表達式C語言的數(shù)據(jù)類型——基本數(shù)據(jù)類型常量和變量各類型常量的書寫格式、符號常量的定義變量的使用原則及變量的定義標識符的命名原則運算符和表達式表達式的求值原則各類運算符的運算特點及優(yōu)先級結(jié)合性小結(jié)增1和減1算術(shù)運算符關(guān)系運算符邏輯運算符賦值運算符高低3.4數(shù)據(jù)的輸入輸出3.4.1輸入輸出舉例3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念3.4.3用printf函數(shù)輸出數(shù)據(jù)3.4.4用scanf函數(shù)輸入數(shù)據(jù)3.4.5字符數(shù)據(jù)的輸入輸出753.4.1輸入輸出舉例例3.5求

方程的根。a、b、c由鍵盤輸入

設(shè)

>0763.4.1輸入輸出舉例解題思路:首先要知道求方程式的根的方法。由數(shù)學知識已知:如果

≥0,則一元二次方程有兩個實根:若記77#include<stdio.h>#include<math.h>intmain(){doublea,b,c,disc,x1,x2,p,q;

scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;

printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);return0;}程序中調(diào)用數(shù)學函數(shù)sqrt輸入a,b,c的值78#include<stdio.h>#include<math.h>intmain(){doublea,b,c,disc,x1,x2,p,q;

scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;

printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);return0;}輸入的是雙精度型實數(shù)79#include<stdio.h>#include<math.h>intmain(){doublea,b,c,disc,x1,x2,p,q;

scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;

printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);return0;}要求輸入3個實數(shù)自動轉(zhuǎn)成實數(shù)后賦給a,b,c80#include<stdio.h>#include<math.h>intmain(){doublea,b,c,disc,x1,x2,p,q;

scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;

printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);return0;}輸出數(shù)據(jù)占7列,其中小數(shù)占2列813.4.2有關(guān)數(shù)據(jù)輸入輸出的概念幾乎每一個C程序都包含輸入輸出輸入輸出是程序中最基本的操作之一823.4.2有關(guān)數(shù)據(jù)輸入輸出的概念(1)所謂輸入輸出是以計算機主機為主體而言的從計算機向輸出設(shè)備(如顯示器、打印機等)輸出數(shù)據(jù)稱為輸出從輸入設(shè)備(如鍵盤、磁盤、光盤、掃描儀等)向計算機輸入數(shù)據(jù)稱為輸入833.4.2有關(guān)數(shù)據(jù)輸入輸出的概念(2)C語言本身不提供輸入輸出語句輸入和輸出操作是由C標準函數(shù)庫中的函數(shù)來實現(xiàn)的printf和scanf不是C語言的關(guān)鍵字,而只是庫函數(shù)的名字putchar、getchar、puts、gets843.4.2有關(guān)數(shù)據(jù)輸入輸出的概念(3)在使用輸入輸出函數(shù)時,要在程序文件的開頭用預編譯指令#include<stdio.h>或#include″stdio.h″853.4.3用printf函數(shù)輸出數(shù)據(jù)在C程序中用來實現(xiàn)輸出和輸入的,主要是printf函數(shù)和scanf函數(shù)這兩個函數(shù)是格式輸入輸出函數(shù)用這兩個函數(shù)時,必須指定格式863.4.3用printf函數(shù)輸出數(shù)據(jù)1.printf函數(shù)的一般格式printf(格式控制,輸出表列)例如:printf(”i=%d,c=%c\n”,i,c);格式聲明873.4.3用printf函數(shù)輸出數(shù)據(jù)1.printf函數(shù)的一般格式printf(格式控制,輸出表列)例如:printf(”i=%d,c=%c\n”,i,c);普通字符883.4.3用printf函數(shù)輸出數(shù)據(jù)1.printf函數(shù)的一般格式printf(格式控制,輸出表列)例如:printf(”i=%d,c=%c\n”,i,c);可以是常量、變量或表達式89普通字符:原樣輸出格式說明:規(guī)范輸出項的輸出格式轉(zhuǎn)義字符:輸出其含義3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符d格式符。用來輸出一個有符號的十進制整數(shù)可以在格式聲明中指定輸出數(shù)據(jù)的域?qū)抪rintf(”%5d%5d\n”,12,-345);%d輸出int型數(shù)據(jù)%ld輸出long型數(shù)據(jù)903.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符c格式符。用來輸出一個字符charch=’a’;

printf(”%c”,ch);或printf(”%5c”,ch);輸出字符:a913.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符s格式符。用來輸出一個字符串

printf(”%s”,”CHINA”);輸出字符串:CHINA923.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來輸出實數(shù),以小數(shù)形式輸出①不指定數(shù)據(jù)寬度和小數(shù)位數(shù),用%f

例3.6用%f輸出實數(shù),只能得到6位小數(shù)。doublea=1.0;printf(”%f\n”,a/3);933.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來輸出實數(shù),以小數(shù)形式輸出②指定數(shù)據(jù)寬度和小數(shù)位數(shù)。用%m.nf

printf("%20.15f\n",1/3);

printf("%.0f\n”,10000/3.0);943.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來輸出實數(shù),以小數(shù)形式輸出②指定數(shù)據(jù)寬度和小數(shù)位數(shù)。用%m.nffloata;a=10000/3.0;

printf("%f\n",a);953.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來輸出實數(shù),以小數(shù)形式輸出③輸出的數(shù)據(jù)向左對齊,用%-m.nf963.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來輸出實數(shù),以小數(shù)形式輸出float型數(shù)據(jù)只能保證6位有效數(shù)字double型數(shù)據(jù)能保證15位有效數(shù)字計算機輸出的數(shù)字不都是絕對精確有效的973.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符e格式符。指定以指數(shù)形式輸出實數(shù)%e,VC++給出小數(shù)位數(shù)為6位

指數(shù)部分占5列

小數(shù)點前必須有而且只有1位非零數(shù)字printf(”%e”,123.456);

輸出:1.234560

e+002983.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符e格式符。指定以指數(shù)形式輸出實數(shù)%m.neprintf(”%13.2e”,123.456);

輸出:1.23e+002(前面有4個空格)993.4.4用scanf函數(shù)輸入數(shù)據(jù)1.scanf

函數(shù)的一般形式

scanf(格式控制,地址表列)含義同printf函數(shù)1003.4.4用scanf函數(shù)輸入數(shù)據(jù)1.scanf

函數(shù)的一般形式

scanf(格式控制,地址表列)可以是變量的地址,或字符串的首地址1013.4.4用scanf函數(shù)輸入數(shù)據(jù)2.scanf函數(shù)中的格式聲明與printf函數(shù)中的格式聲明相似以%開始,以一個格式字符結(jié)束,中間可以插入附加的字符scanf("a=%f,b=%f,c=%f",&a,&b,&c);102結(jié)論:格式控制字符串中包括兩部分內(nèi)容及輸入特點格式說明符:規(guī)范輸入數(shù)據(jù)的格式普通字符:原樣輸入非格式字符輸入數(shù)據(jù)以,分隔,沒有時可以空格、Tab或回車分隔3.4.4用scanf函數(shù)輸入數(shù)據(jù)3.使用scanf函數(shù)時應(yīng)注意的問題scanf(”%f%f%f”,a,b,c);錯scanf(”%f%f%f”,&a,&b,&c);對對于scanf("a=%f,b=%f,c=%f",&a,&b,&c);

132↙

a=1,b=3,c=2↙

a=1b=3c=2↙

錯1033.4.4用scanf函數(shù)輸入數(shù)據(jù)3.使用scanf函數(shù)時應(yīng)注意的問題對于scanf(”%c%c%c”,&c1,&c2,&c3);

abc↙

abc↙

錯對于scanf(”%d%c%f”,&a,&b,&c);若輸入

1234a123o.26↙1043.4.4用scanf函數(shù)輸入數(shù)據(jù)3.使用scanf函數(shù)時應(yīng)注意的問題對于scanf(”%c%c%c”,&c1,&c2,&c3);

abc↙

abc↙

錯對于scanf(”%d%c%f”,&a,&b,&c);若輸入

1234a123o.26↙1053.4.4用scanf函數(shù)輸入數(shù)據(jù)3.使用scanf函數(shù)時應(yīng)注意的問題對于scanf(”%c%c%c”,&c1,&c2,&c3);

abc↙

abc↙

錯對于scanf(”%d%c%f”,&a,&b,&c);若輸入

1234a123o.26↙106#include<stdio.h>main(){ inta,b; printf("Pleaseinputaandb:"); scanf("%2d%*2d%2d",&a,&b); printf("a=%d,b=%d,a+b=%d\n",a,b,a+b);}Pleaseinputaandb:a=12,b=56,a+b=68123456↙跳過一個輸入項輸入數(shù)據(jù)的格式控制——格式1#include<stdio.h>main(){ inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b);}問題1:當要求程序輸出結(jié)果為

a=12,b=34時,用戶應(yīng)該如何輸入數(shù)據(jù)?

1234↙輸入數(shù)據(jù)的格式控制——格式2#include<stdio.h>main(){ inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b);}問題2:當限定用戶輸入數(shù)據(jù)以逗號為分隔符,即輸入數(shù)據(jù)格式為:

12,34↙時,應(yīng)修改程序中的哪條語句?怎樣修改?

,

輸入數(shù)據(jù)的格式控制——格式2#include<stdio.h>main(){ inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b);}問題3:語句scanf("%d%d",&a,&b);修改為scanf("a=%d,b=%d",&a,&b);時,用戶應(yīng)該如何輸入數(shù)據(jù)?a=12,b=34↙輸入數(shù)據(jù)的格式控制——格式3#include<stdio.h>main(){ inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b);}

問題4:限定用戶輸入數(shù)據(jù)為以下格式

1234↙

同時要求程序輸出結(jié)果為a=12,b=34%2d%2d

輸入數(shù)據(jù)的格式控制——格式4#include<stdio.h>main(){ inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b);}

問題5:限定用戶輸入數(shù)據(jù)為以下格式12↙34↙

同時要求程序輸出結(jié)果為a="12",b="34"\"%d\",b=

\"%d\"輸入數(shù)據(jù)的格式控制——格式5#include<stdio.h>main(){ inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b);}問題6:設(shè)計程序使得用戶可以以任意字符(回車、空格、制表符、逗號、其他字符)作為分隔符進行數(shù)據(jù)的輸入輸入數(shù)據(jù)的格式控制——格式6%*c#include<stdio.h>main(){ inta,b; scanf("%2d%2d",&a,&b); printf("a=%d,b=%d\n",a,b);}問題7:輸入123456時程序的輸出結(jié)果是什么?輸入數(shù)據(jù)的格式控制——格式6%*2da=12,b=56#include<stdio.h>main(){ inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b);}問題8:如果用戶輸入了非法字符,例如輸入了123a,那么程序運行結(jié)果如何?輸入數(shù)據(jù)的格式控制——格式7123a↙a=12,b=3#include<stdio.h>main(){ inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b);}問題9:如果用戶輸入的是123a,那么結(jié)果又會如何呢?輸入數(shù)據(jù)的格式控制——格式7123a↙a=123,b=-858993460#include<stdio.h>main(){ inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b);}問題10:如果修改程序第5行語句,那么結(jié)果又會如何呢?輸入數(shù)據(jù)的格式控制——問題

a,b3.4.5字符數(shù)據(jù)的輸入輸出1.用putchar函數(shù)輸出一個字符從計算機向顯示器輸出一個字符putchar函數(shù)的一般形式為:

putchar(c)1183.4.5字符數(shù)據(jù)的輸入輸出例

溫馨提示

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

評論

0/150

提交評論