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

下載本文檔

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

文檔簡介

第3章最簡單的程序設(shè)計(jì)——順序程序設(shè)計(jì)

編寫C語言程序,應(yīng)具備以下知識和能力:1、要有正確的解題思路,即學(xué)會設(shè)計(jì)算法。2、掌握C語言的語法。3、采用結(jié)構(gòu)化的程序設(shè)計(jì)方法編寫程序。3.1順序程序設(shè)計(jì)舉例例3.1華氏溫度的攝氏溫度的轉(zhuǎn)換。#include<stdio.h>voidmain(){floatf,c;scanf(“%f”,&f);//int用%d,float用%fc=5.0/9*(f-32);printf(“f=%f\nc=%f\n”,f,c);}例3.2計(jì)算存款利息。例:有1000元,想存一年。分別以如下3種方法計(jì)算出一年后的本息值。(1)活期,年利率為r1;(2)一年期定期,年利率為r2;(3)存兩次半年定期,年利率為r3.

#include<stdio.h>voidmain(){floatp0=1000,r1=0.0036,r2=0.0325,r3=0.0308,p1,p2,p3;p1=p0*(1+r1);p2=p0*(1+r2);p3=p0*(1+r3/2)*(1+r3/2);printf(“p1=%f\np2=%f\np3=%f\n”,p1,p2,p3);}3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.2.1常量和變量1.常量在程序運(yùn)行過程中,其值不能被改變的量稱為常量。常見的種類有:(1)整型常量:如12、0、-3等(2)實(shí)型常量:①十進(jìn)制小數(shù)形式,由數(shù)字和小數(shù)點(diǎn)組成,如4.5、-1.23等。②指數(shù)形式,如12.34e3、-346.87e-25等,e/E的前面必須有數(shù)字,后面必須有整數(shù)。(3)字符常量①普通字符用單撇號括起來的一個(gè)字符。如‘a(chǎn)’、‘X’為字符常量。注意:字符常量不包括單撇號;大小寫不同;字符常量在內(nèi)存中是以相應(yīng)的ASCII碼存儲。(3)字符常量②轉(zhuǎn)義字符\n換行\(zhòng)t橫向跳格\r回車\\反斜杠\dddddd表示1到3位八進(jìn)制數(shù)字\xhhhh表示1到2位十六進(jìn)制數(shù)字特殊的字符常量:以‘\’開頭的字符序列。轉(zhuǎn)義字符的意思是將”\”后面的字符轉(zhuǎn)換成另外的意義。如’\n’中的n不代表字母n而作為“換行”符。下表列出了常用的轉(zhuǎn)義字符:如:‘\0’表示編碼值為0的字符,即“空操作”,一般用于字符串中;‘\101’,表示八進(jìn)制數(shù)101,即十進(jìn)制數(shù)65,表示字母‘A’;‘\x41’,表示十六進(jìn)制數(shù)41,即十進(jìn)制數(shù)65,表示字母‘A’;(4)字符串常量字符串常量是一對雙撇號括起來的字符序列.合法的字符串常量:“CHINA”,“a”,$123.45”??梢暂敵鲆粋€(gè)字符串,如printf(“Howdoyoudo.”);注意:

‘a’是字符常量,”a”是字符串常量,二者不同。C規(guī)定:在每一個(gè)字符串常量的結(jié)尾加一個(gè)“字符串結(jié)束標(biāo)志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。C規(guī)定以字符’\0’作為字符串結(jié)束標(biāo)志。如:字符串常量”CHINA”,實(shí)際上在內(nèi)存中是:CHINA\0

它占內(nèi)存單元不是5個(gè)字符,而是6個(gè)字符,最后一個(gè)字符為’\0’。但在輸出時(shí)不輸出’\0’。例:#definePRICE30//符號常量習(xí)慣用大寫main(){intnum,total;num=10;total=num*PRICE;printf(“total=%d\n”,total);}define命令格式是:

#define標(biāo)識符字符串如:#definestring“ABCD”//注意行末無分號(5)符號常量

用一個(gè)標(biāo)識符代表一個(gè)常量稱為符號常量。符號常量借助于預(yù)處理命令define來實(shí)現(xiàn)。使用符號常量的好處:(1)含義清楚(2)“一改全改”2.變量

在程序運(yùn)行期間,其值可以改變的量稱為變量。變量代表一個(gè)有名字、具有特定屬性的一個(gè)存儲單元,它用來存放數(shù)據(jù),也就是變量的值。

變量名實(shí)際上是一個(gè)以一個(gè)名字對應(yīng)代表一個(gè)地址,在對程序編譯連接時(shí)由編譯系統(tǒng)給每一個(gè)變量名分配對應(yīng)的內(nèi)存地址。從變量中取值,實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)。

一個(gè)變量有變量名、存儲單元、變量值等三個(gè)概念。2.變量注意:(1)建議變量名的長度最好不要超過8個(gè)字符。(2)在選擇變量名和其它標(biāo)識符時(shí),應(yīng)注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作標(biāo)識符。(3)要求對所有用到的變量作強(qiáng)制定義,也就是“先定義,后使用”。3.標(biāo)識符標(biāo)識符:用來對變量、符號常量名、函數(shù)、數(shù)組、類型等命名的有效字符序列。

C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。

以下為合法的標(biāo)識符:x1,sum,average,day,month,lotus_1_2_3以下為不合法的標(biāo)識符:$456,#abc,1fs,2nd,M.D.Jhon注意:標(biāo)識符不能是關(guān)鍵字。編譯系統(tǒng)將大寫字母和小寫字母認(rèn)為是兩個(gè)不同的字符。3.2.2數(shù)據(jù)類型程序=數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)方法+語言工具所謂數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)的組織形式,數(shù)據(jù)是算法處理的對象,而是以某種特定的形式存在的。C提供了以下一些數(shù)據(jù)類型。

在程序中對用到的所有數(shù)據(jù)都必須指定其數(shù)據(jù)類型。數(shù)據(jù)有常量與變量之分,它們都屬于以上這些類型。3.2.3整型數(shù)據(jù)1.整型常量的表示方法

整型常量即整常數(shù)。在C語言中,整常數(shù)可用以下三種形式表示:(1)十進(jìn)制整數(shù)。

如:123,-456.4。(2)八進(jìn)制整數(shù)。以0頭的數(shù)是八進(jìn)制數(shù)。

如:0123表示八進(jìn)制數(shù)123,等于十進(jìn)制數(shù)83,-011表示八進(jìn)制數(shù)-11,即十進(jìn)制數(shù)-9。(3)十六進(jìn)制整數(shù)。以0x開頭的數(shù)是16進(jìn)制數(shù)。如:0x123,代表16進(jìn)制數(shù)123,等于十進(jìn)制數(shù)291。-0x12等于十進(jìn)制數(shù)-10。2.整型變量(1)整型數(shù)據(jù)在內(nèi)存中的存放形式

整型數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的。

如:inti;/*定義為整型變量*/i=10;/*給i賦以整數(shù)10*/注意:十進(jìn)制數(shù)10的二進(jìn)制形式為1010,TurboC2.0和TurboC++3.0為一個(gè)整型變量在內(nèi)存中分配2個(gè)字節(jié)的存儲單元(不同的編譯系統(tǒng)為整型數(shù)據(jù)分配的字節(jié)數(shù)是不相同的,VC++6.0則分配4個(gè)字節(jié))。數(shù)值是以補(bǔ)碼(complement)表示的。(2)整型變量的分類有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)整數(shù)類型的有關(guān)數(shù)據(jù):類型型說明符長度數(shù)的范圍基本型int2字節(jié)-32768~32767短整型short2字節(jié)-215~215-1長整型long4字節(jié)-231~231-1無符號整型unsigned2字節(jié)0~65535無符號短整型unsignedshort2字節(jié)0~65535無符號長整型unsignedlong4字節(jié)0~(232-1)(3)整型變量的定義:

C規(guī)定在程序中所有用到的變量都必須在程序中定義,即“強(qiáng)制類型定義”。

例如:

inta,b(指定變量a、b為整型)

unsignedshortc,d;(指定變量c、d為無符號短整型)

longe,f;(指定變量e、f為長整型)例:整型變量的定義與使用#include<stdio.h>

voidmain()

{inta,b,c,d;/*指定a、b、c、d為整型變量*/

unsignedu;/*指定u為無符號整型變量*/

a=12;b=-24;u=10;

c=a+u;d=b+u;

printf(”a+u=%d,b+u=%d\n”,c,d);

}例:整型數(shù)據(jù)的溢出#include<stdio.h>

voidmain()

{inta,b;

a=32767;

b=a+1;

printf(“%d,%d\n”,a,b);

}說明:數(shù)值是以補(bǔ)碼表示的。一個(gè)整型變量只能容納-32768~32767范圍內(nèi)的數(shù),無法表示大于32767或小于-32768的數(shù)。遇此情況就發(fā)生“溢出”。編程時(shí)應(yīng)注意數(shù)值不要超過變量的范圍。3.2.4字符型數(shù)據(jù)1.字符與字符代碼C語言程序中的字符只能是系統(tǒng)字符集中的字符,否則計(jì)算機(jī)不能識別,目前大多數(shù)系統(tǒng)采用ASCII字符集,其有127個(gè)字符,包括:字母、數(shù)字、專用符號、空格符及不能顯示的字符。2.字符變量字符型變量用來存放字符常量,注意只能放一個(gè)字符。字符變量的定義形式如下:charc1,c2;在本函數(shù)中可以用下面語句對c1,c2賦值:c1=‘a(chǎn)’;c2=‘b’;一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。3.字符數(shù)據(jù)的存放形式及使用方法一個(gè)字符常量存放到一個(gè)字符變量中,實(shí)際上并不是把該字符的字型放到內(nèi)存中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。注意:

一個(gè)字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。3.字符數(shù)據(jù)的存放形式及使用方法#include<stdio.h>

voidmain()

{charc1,c2;

c1=97;c2=98;

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

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

}#include<stdio.h>

voidmain()

{charc1,c2;

c1=’a’;c2=’b’;

c1=c1-32;

c2=c2-32;

printf(“%c%c″,c1,c2);

}3.2.5浮點(diǎn)型數(shù)據(jù)/實(shí)型數(shù)據(jù)1.實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式一個(gè)實(shí)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)字節(jié)(32位)。實(shí)型數(shù)據(jù)是按照規(guī)范化指數(shù)形式存儲的,即小數(shù)點(diǎn)前有且只有一個(gè)0,小數(shù)點(diǎn)后數(shù)字不為0.對每一個(gè)變量使用前都應(yīng)該先定義。實(shí)型變量的定義如下:floatx,y;doublez;longdoublet;//不同的編譯系統(tǒng)對該類型處理不一樣,用的較少類型比特?cái)?shù)有效數(shù)字?jǐn)?shù)值范圍float單精度326-3.4×10-38~3.4×1038double雙精度6415-1.7×10-308~1.7×10308longdouble長雙精度12819-1.2×10-4932~1.2×1049322.實(shí)型變量的分類例如:1.0/3*3的結(jié)果并不等于1

3.實(shí)型數(shù)據(jù)的舍入誤差例3.4浮點(diǎn)型數(shù)據(jù)的舍入誤差

#include<stdio.h>

voidmain()

{floata,b;

a=123456.789e5;

b=a+20;

printf(“%f\n”,b);

}運(yùn)行結(jié)果:12345678848.000000將floata,b;改為doublea,b;結(jié)果不一樣。說明:一個(gè)浮點(diǎn)型變量只能保證的有效數(shù)字是6位有效數(shù)字,后面的數(shù)字是無意義的,并不準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)避免將一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù)。1.基本的算術(shù)運(yùn)算符+(加法運(yùn)算符,或正值運(yùn)算符。如:3+5、+3)-(減法運(yùn)算符,或負(fù)值運(yùn)算符。如:5-2、-3)*(乘法運(yùn)算符。如:3*5)/(除法運(yùn)算符。如:5/3)%(模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3)。3.2.7運(yùn)算符和表達(dá)式2.自增、自減運(yùn)算符

作用是使變量的值增1或減1,如:++i,--i(在使用i之前,先使i的值加,減1)i++,i--(在使用i之后,使i的值加,減1)i++與++i的區(qū)別:

++i是先執(zhí)行i=i+1后,再使用i的值;i++是先使用i的值后,再執(zhí)行i=i+1。例如:①j=++i;i的值先變成4,再賦給j,j的值均為4②j=i++;先將i的值3賦給j,j的值為3,然后i變?yōu)椋?.自增、自減運(yùn)算符注意:

(1)自增運(yùn)算符(++),自減運(yùn)算符(--),只能用于變量,而不能用于常量或表達(dá)式;(2)++和--的結(jié)合方向是“自左至右”,如i+++j應(yīng)理解為(i++)+j,編程避免這樣的語句;

(3)自增(減)運(yùn)算符常用于循環(huán)語句中使循環(huán)變量自動加1。也用于指針變量,使指針指向下一個(gè)地址。3.算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性

用算術(shù)運(yùn)算符和括號將運(yùn)算對象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子,稱為C算術(shù)表達(dá)式。運(yùn)算對象包括常量、變量、函數(shù)等。例如:a*b/c-1.5+’a’。是一個(gè)合法的表達(dá)式

C語言規(guī)定在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減。如表達(dá)式a-b*c相當(dāng)于a-(b*c)。

C還規(guī)定了各種運(yùn)算符的結(jié)合方向(結(jié)合性),即在一個(gè)運(yùn)算對象兩側(cè)的運(yùn)算符的優(yōu)先級別相同時(shí),則按規(guī)定的“結(jié)合方向”處理。

算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣摇保聪茸蠛笥?。如a-b+c相當(dāng)于(a-b)+c。有些運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆?。如a=b=c。4.不同類型數(shù)據(jù)間的混合運(yùn)算doublefloatlongunsignedintchar,short高低如果一個(gè)運(yùn)算符的兩側(cè)的數(shù)據(jù)類型不同,則先自動轉(zhuǎn)換成同一類型再運(yùn)算。轉(zhuǎn)換的規(guī)則如下:4.不同類型數(shù)據(jù)間的混合運(yùn)算(1)進(jìn)行10+‘a(chǎn)’的運(yùn)算,轉(zhuǎn)換‘a(chǎn)’為97;(2)進(jìn)行i*f的運(yùn)算,將i和f都轉(zhuǎn)成double型;(3)整數(shù)107與i*f的積相加,先將107轉(zhuǎn)化成雙精度數(shù),結(jié)果為double型;(4)將變量3轉(zhuǎn)化成double型,d/3的結(jié)果為double型;(5)將10+‘a(chǎn)’+i*f的結(jié)果與d/3的商相減,結(jié)果為double型。以上數(shù)據(jù)類型轉(zhuǎn)換都是由C編譯系統(tǒng)自動隱含完成的,故稱自動類型轉(zhuǎn)換。分析表達(dá)式:10+‘a(chǎn)’+i*f-d/3,其中i為整型變量,值為3,f為float型變量,值為2.5,d為double型變量,值為7.5??梢岳脧?qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需類型。

一般形式:(類型名)(表達(dá)式)例如:(double)a將a轉(zhuǎn)換成double類型(int)(x+y)將x+y的值轉(zhuǎn)換成整型(float)(5%3)將5%3的值轉(zhuǎn)換成float型5.強(qiáng)制類型轉(zhuǎn)換運(yùn)算符例:main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}6.C運(yùn)算符除了算術(shù)運(yùn)算符外,C還提供了其他運(yùn)算符,共有以下幾類:(1)算術(shù)運(yùn)算符(+-*/%)(2)關(guān)系運(yùn)算符(>、<、==、>=、<=、!=)(3)邏輯運(yùn)算符(!、&&、||)(4)位運(yùn)算符(<<>>~|∧&)(5)賦值運(yùn)算符(=及其擴(kuò)展賦值運(yùn)算符)(6)條件運(yùn)算符(?:)(7)逗號運(yùn)算符(,)(8)指針運(yùn)算符(*和&)(9)求字節(jié)數(shù)運(yùn)算符(sizeof)(10)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符((類型))(11)分量運(yùn)算符(.->)(12)下標(biāo)運(yùn)算符([])(13)其他(如函數(shù)調(diào)用運(yùn)算符())3.3C語句概述C程序源程序文件1源程序文件2源程序文件n預(yù)處理命令函數(shù)n函數(shù)1數(shù)據(jù)聲明函數(shù)首部函數(shù)體數(shù)據(jù)聲明執(zhí)行語句一個(gè)c程序可以有若干個(gè)源程序文件組成。一個(gè)源文件可以有若干個(gè)函數(shù)和預(yù)處理命令以及全局變量聲明部分組成。一個(gè)函數(shù)有函數(shù)首部和函數(shù)體組成。函數(shù)體由數(shù)據(jù)聲明和執(zhí)行語句組成。3.3.1C語句分類3.3.1C語句分類1.控制語句兩個(gè)分支語句(if-else、switch)三個(gè)循環(huán)語句(for、while、do-while)四個(gè)轉(zhuǎn)移語句(continue、break、goto、return)2.函數(shù)調(diào)用語句如:printf(“Hello,world!”);3.表達(dá)式語句x+y;i++;a=2;a=3*5,40;4.空語句

;5.復(fù)合語句{語句序列}3.3.2最基本的語句——賦值語句1.賦值運(yùn)算符賦值符號“=”就是賦值運(yùn)算符,它的作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。如“a=3”的作用是執(zhí)行一次賦值操作(或稱賦值運(yùn)算)。把常量3賦給變量a。也可以將一個(gè)表達(dá)式的值賦給一個(gè)變量。2.復(fù)合的賦值運(yùn)算符在“=”之前加上其他運(yùn)算符,構(gòu)成復(fù)合運(yùn)算符。如:x+=y等價(jià)于x=x+ya%=b+c/d等價(jià)于a=a%(b+c/d)C中10種復(fù)合賦值運(yùn)算符:+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=2.復(fù)合的賦值運(yùn)算符為便于記憶,可以這樣理解:①a+=b(其中a為變量,b為表達(dá)式)②a+=b(將有下劃線的“a+”移到“=”右側(cè))|___↑③a=a+b(在“=”左側(cè)補(bǔ)上變量名a)3.賦值表達(dá)式由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來的式子稱為“賦值表達(dá)式”。一般形式為:變量=表達(dá)式賦值表達(dá)式求解的過程是:①求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值;②賦給賦值運(yùn)算符左側(cè)的變量。例如:賦值表達(dá)式“a=3*5”的值為15,執(zhí)行表達(dá)式后,變量a的值也是15。又如賦值表達(dá)式∶(a=3*5)=4*3的求解過程為:在對賦值表達(dá)式(a=3*5)求解后,變量a得到值15。執(zhí)行(a=3*5)=4*3時(shí),實(shí)際上是將4*3的積12賦給變量a,而不是賦給3*5。嵌套賦值表達(dá)式例:當(dāng)a=12時(shí),a+=a-=a*a求解結(jié)果?先“a-=a*a”的運(yùn)算,a=a-a*a=-132;再進(jìn)行“a+=-132”的運(yùn)算,a=a+(-132)=-264。嵌套賦值表達(dá)式:e1=e2=…=en,如:a=b=c=d=100等價(jià)于a=(b=(c=(d=100)))e1,e2,…,en不必具有相同的數(shù)據(jù)類型4.賦值類型轉(zhuǎn)換

規(guī)則:把賦值運(yùn)算符右邊表達(dá)式的數(shù)據(jù)類型轉(zhuǎn)換成左邊對象的類型。⑴實(shí)型賦給整型變量時(shí),舍去實(shí)數(shù)的小數(shù)部分。⑵整型賦給實(shí)型變量時(shí),數(shù)值不變,以浮點(diǎn)形式存儲。如:i為整型變量,執(zhí)行“i=3.56”的結(jié)果是使i的值為3,以整數(shù)形式存儲在整型變量中。又如:將23賦給float變量f,即執(zhí)行f=23,先將23轉(zhuǎn)換成23.00000,再存儲在f中。5.賦值語句形式:變量=表達(dá)式;含義:計(jì)算“=”右邊表達(dá)式的值,將之賦給“=”左邊的變量。如:

b=3;if((a=b)>0)t=a;注意:賦值語句與賦值表達(dá)式的區(qū)別6變量賦初值(1)C語言允許在定義變量的同時(shí)使變量初始化如:inta=3;//指定a為整型變量,初值為3floatf=3.56;//指定f為浮點(diǎn)型變量,初值為3.56charc=‘a(chǎn)’;//指定c為字符變量,初值為‘a(chǎn)’(2)可以使被定義的變量的一部分賦初值。如:inta,b,c=5;表示指定a、b、c為整型變量,但只對c初始化,c的初值為5(3)如果對幾個(gè)變量賦以同一個(gè)初值。應(yīng)寫成:inta=3,b=3,c=3;表示a、b、c的初值都是3。不能寫成∶inta=b=c=3;

注意:初始化不是在編譯階段完成的而是在程序運(yùn)行時(shí)執(zhí)行本函數(shù)時(shí)賦初值的,相當(dāng)于有一個(gè)賦值語句。

例3.4輸入三角形的三邊長,求三角形面積。程序:

#include<math.h>#include<stdio.h>voidmain(){floata,b,c,s,area;sacnf(%f,%f,%f”,&a,&b,&c);s=1.0/2*(a+b+c);//注意1.0/2的含義area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n”,a,b,c,s);

printf(“area=%7.2f\n”,area);//注意%7.2f的含義}分析:三邊為a,b,c,面積area=s(s-a)(s-b)(s-c),其中s=(a+b+c)/2。3.4數(shù)據(jù)的輸入輸出3.4.1輸入輸出舉例例3.5求ax2+bx+c=0方程的根。#include<stdio.h>

#include<math.h>

voidmain()

{

floata,b,c,disc,x1,x2,p,q;

scanf("a=%f,b=%f,c=%f",&a,&b,&c);

disc=b*b-4*a*c;

p=-b/(2*a);

q=sqrt(disc)/(2*a);

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

printf("\n\nx1=%7.2f\nx2=%7.2f\n",x1,x2);

}3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念(1)所謂輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言的。輸出:從計(jì)算機(jī)向外部輸出設(shè)備(顯示器,打印機(jī))輸出數(shù)據(jù)輸入:從輸入設(shè)備(鍵盤,鼠標(biāo),掃描儀)向計(jì)算機(jī)輸入數(shù)據(jù).(2)C語言本身不提供輸入輸出語句,輸入和輸出操作是由C函數(shù)庫中的函數(shù)來實(shí)現(xiàn)的。例如:格式輸入函數(shù):scanf格式輸出函數(shù):printf字符串輸入函數(shù):gets字符串輸出函數(shù):puts字符輸入函數(shù):getchar字符輸出函數(shù):putchar(3)在使用系統(tǒng)庫函數(shù)時(shí),要用預(yù)編譯命令“#include”將有關(guān)的“頭文件”包括到用戶源文件中.例如:在調(diào)用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時(shí),文件開頭應(yīng)該有:#include“stdio.h”或:#include<stdio.h>3.4.3用printf函數(shù)輸出數(shù)據(jù)1.printf函數(shù)的一般形式一般形式:printf(格式控制,輸出表列);(1)格式控制:是用雙引號括起來的字符串,包含兩種信息:①格式說明:由%和格式控制符組成。如:%d,%f等;②普通字符和轉(zhuǎn)義字符(普通字符原樣輸出,增加可讀性)(2)輸出表列:程序需要輸出的數(shù)據(jù),可以是常量、變量或表達(dá)式。如:printf(“a=%d,b=%d”,a,b);若a、b的值分別為2和3,則輸出結(jié)果為:a=2,b=32.格式字符幾種用法:①%d:按十進(jìn)制整型數(shù)據(jù)的實(shí)際長度輸出。②%md:m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于m,則按實(shí)際位數(shù)輸出。例:printf(“%4d,%4d”,a,b);若a=123,b=12345則輸出結(jié)果為123,12345③%ld:輸出長整型數(shù)據(jù)。例:longa=135790;/*定義a為長整型變量*/printf(“%ld”,a);(1)d格式符。用來輸出十進(jìn)制整數(shù)。(2)c格式符用來輸出一個(gè)字符。如:chard=‘a(chǎn)’;printf(“%c”,d);輸出字符’a’.一個(gè)整數(shù),只要它的值在0~127范圍內(nèi),可以用“%c”使之按字符形式輸出,在輸出前,系統(tǒng)會將該整數(shù)作為ASCII碼轉(zhuǎn)換成相應(yīng)的字符;一個(gè)字符數(shù)據(jù)也可以用整數(shù)形式輸出。例:字符數(shù)據(jù)的輸出。

#include<stdio.h>

voidmain()

{charc=‘a(chǎn)’;

inti=97;

printf(“%c,%d\n”,c,c);

printf(“%c,%d\n”,i,i);

}(3)s格式符輸出字符串.①%s。例如:printf(“%s”,”CHINA”);輸出字符串“CHINA”(不包括雙引號)。②%ms,輸出的字符串占m列,若串長大于m,則全部輸出,若串長小于m,則左補(bǔ)空格。③%-ms,若串長小于m,字符串向左靠,右補(bǔ)空格。例:字符串的輸出。

#include<stdio.h>

voidmain()

{

printf(“%s,%7s,%4s,%-5s\n”,“CHINA”,“CHINA”,“CHINA”,“CHINA”);

}(4)f格式符用來以小數(shù)形式輸出實(shí)數(shù)(包括單雙精度)有以下幾種用法:①%f。不指定字段寬度,由系統(tǒng)自動指定字段寬度,使整數(shù)部分全部輸出,并輸出6位小數(shù)。應(yīng)當(dāng)注意,在輸出的數(shù)字中并非全部數(shù)字都是有效數(shù)字。單精度實(shí)數(shù)的有效位數(shù)一般為6位。②%m.nf。指定輸出的數(shù)據(jù)共占m列,其中有n位小數(shù)。如果數(shù)值長度小于m,則左端補(bǔ)空格。③%-m.nf與%m.nf基本相同,只是使輸出的數(shù)值向左端靠,右端補(bǔ)空格。

(4)f格式符例:輸出實(shí)數(shù)時(shí)指定小數(shù)位數(shù)。

#include<stdio.h>

voidmain()

{

floatf=123.456;

printf(“%f%10f%10.2f%.2f%-10.2f\n”,f,f,f,f,f);

}運(yùn)行結(jié)果:

123.455994123.455994123.46123.46123.46例:輸出實(shí)數(shù)時(shí)的有效位數(shù)。

#include<stdio.h>

voidmain()

{floatx,y;

x=111111.111;y=222222.222;

printf(“%f”,x+y);

運(yùn)行結(jié)果:

333333.328125將floatx,y;改為doublex,y;結(jié)果不同。(5)e格式符以指數(shù)形式輸出實(shí)數(shù)。可用以下形式:①%e。數(shù)字部分前面只有1位非0數(shù)字,數(shù)字的小數(shù)部分為5位,指數(shù)部分占4位。例:printf(“%e”,123.456);輸出:1.23456e+02所輸出的實(shí)數(shù)共占11列寬度。(注:不同系統(tǒng)的規(guī)定略有不同)②%m.ne和%-m.ne。輸出的指數(shù)部分同%e,數(shù)字部分不連小數(shù)點(diǎn)共n,即小數(shù)點(diǎn)前有1位非0整數(shù),后有n-1位。m和n+1+4比較。若f=123.456,則:printf(“%e\n%10e\n%10.2e\n%.2e\n%-10.2e\n“,f,f,f,f,f);輸出如下:1.23456e+021.23456e+021.2e+021.2e+021.2e+0211列11列10列7列7列

3.4.4用scanf函數(shù)輸入數(shù)據(jù)1.scanf函數(shù)的一般格式scanf(格式控制,地址表列);“格式控制”的含義同printf函數(shù);“地址表列”是由若干個(gè)地址組成的表列,可以是變量的地址,或字符串的首地址。函數(shù)作用:按照變量在內(nèi)存的地址將變量值存進(jìn)去。scanf函數(shù)規(guī)定,組成輸入項(xiàng)表的輸入對象須是地址量;如:scanf(“%d,%d,%d”,&a,&b,&c);scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);對第一個(gè)輸入語句,若輸入的數(shù)據(jù)流為:1

溫馨提示

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

評論

0/150

提交評論