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

下載本文檔

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

文檔簡介

C語言程序設(shè)計(jì)第3章簡單程序設(shè)計(jì)第3章簡單程序設(shè)計(jì)主要內(nèi)容3.1基本的輸入輸出函數(shù)3.2編譯預(yù)處理命令define和include簡介3.3程序設(shè)計(jì)舉例 3.1基本的輸入輸出函數(shù)

3.1.1格式化輸出函數(shù)printf()3.1.2格式化輸入函數(shù)scanf()3.1.3字符輸入輸出函數(shù)getchar()和putchar()printf()函數(shù)是C語言系統(tǒng)提供的格式化輸出函數(shù),用于向標(biāo)準(zhǔn)輸出設(shè)備(通常為顯示器)按規(guī)定格式輸出信息。printf()函數(shù)一般使用格式printf("格式化字符串",表達(dá)式表);說明:⑴“表達(dá)式表”是要輸出的一系列表達(dá)式,各表達(dá)式之間用“,”分隔。⑵“格式化字符串”用于說明要輸出表達(dá)式的形式:以“%”開始的格式控制參數(shù),它規(guī)定對應(yīng)表達(dá)式的輸出格式;對普通字符按原樣輸出,對轉(zhuǎn)義字符,輸出的是其轉(zhuǎn)義后的形式。⑶輸出表達(dá)式的個(gè)數(shù)必須與格式化字符串所說明的輸出參數(shù)個(gè)數(shù)相同,且順序要與格式串中要求輸出的內(nèi)容一一對應(yīng)。3.1.1格式化輸出函數(shù)printf()3.1.1格式化輸出函數(shù)printf()printf()函數(shù)中常用的格式控制符及其功能

格式控制符功能是否常用%d輸出一個(gè)int型數(shù)據(jù)是%f輸出一個(gè)float型數(shù)據(jù)是%c輸出一個(gè)char型數(shù)據(jù)是%s輸出一個(gè)字符串是%u輸出一個(gè)十進(jìn)制無符號整數(shù)否%e輸出一個(gè)指數(shù)形式的浮點(diǎn)數(shù)否%x或%X輸出一個(gè)以十六進(jìn)制表示的無符號整數(shù)否%O輸出一個(gè)以八進(jìn)制表示的無符號整數(shù)否%g自動選擇%f或%e格式中輸出寬度較短的一種形式否printf()函數(shù)的轉(zhuǎn)義字符及其功能字符形式功能是否常用\n換行,將當(dāng)前位置移到下一行開頭是\t水平跳格,跳到下一個(gè)Tab位置一般\b退格,將當(dāng)前位置移到前一列否\r回車,將當(dāng)前位置移到本行開頭否\\反斜杠字符“\”否\'單引號字符'否\"雙引號字符"否\ddd8進(jìn)制數(shù)表示的對應(yīng)ASCII碼字符一般\xhh16進(jìn)制數(shù)表示的對應(yīng)ASCII碼字符一般3.1.1格式化輸出函數(shù)printf()例3-1輸出格式控制舉例一。/*programe3-1.c*/#include<stdio.h>voidmain(){ inta,b; a=8; b=2000; printf("%d+%d=%d\n",a,b,a+b);}3.1.1格式化輸出函數(shù)printf()用法提示輸出表達(dá)式的個(gè)數(shù)必須與格式控制字符串所說明的輸出參數(shù)個(gè)數(shù)相同,且順序要與格式串中要求輸出的內(nèi)容一一對應(yīng)printf("%d,%f,%c\n",5,12.6,'A');5,12.600000,Aprintf("%d,%f,%c\n",5,'A',12.6);5,0.000000,3用法提示輸出表達(dá)式的個(gè)數(shù)必須與格式控制字符串所說明的輸出參數(shù)個(gè)數(shù)相同,且順序要與格式串中要求輸出的內(nèi)容一一對應(yīng)printf("%d,%d,%d",3,4,5,6);3,4,5printf("%d,%d,%d",3,4);

3,4,24333163.1.1格式化輸出函數(shù)printf()在“%”和格式控制符之間插進(jìn)數(shù)字,表示輸出項(xiàng)的最大域?qū)?。例如?3d

表示輸出3位整型數(shù),不夠3位右對齊。%9.2f表示輸出域?qū)挒?的實(shí)數(shù),其中小數(shù)位為2,整數(shù)位為6,小數(shù)點(diǎn)占1位,不夠9位時(shí)按域?qū)捰覍R。%8s

表示輸出占8個(gè)字符的寬度,不夠8個(gè)字符時(shí)右對齊。例3-2輸出格式控制舉例二/*programe3-2.c*/#include<stdio.h>voidmain(){floatr=5.7693,s;s=3.1416*r*r;printf("R=%10.3f,S=%10.3f\n",r,s);}R=□□□□□5.769,S=□□□104.568在“%”和格式控制符之間加入一個(gè)"-"號,控制輸出為左對齊,否則為右對齊。

例3-3輸出格式控制舉例三。/*programe3-3.c*/#include<stdio.h>voidmain(){ floatr=5.7693,s; s=3.1416*r*r; printf("R=%-10.3f,S=%-10.3f\n",r,s);}R=5.769□□□□□,S=104.568□□□3.1.1格式化輸出函數(shù)printf()3.1.1格式化輸出函數(shù)printf()字符型數(shù)據(jù)既可以使用“%c”格式符輸出,也可以使用“%d”格式符輸出。當(dāng)使用“%c”格式符時(shí)輸出字符本身,當(dāng)使用“%d”格式符時(shí)輸出字符對應(yīng)的ASCII碼。例3-4字符型變量輸出舉例。/*programe3-4.c*/#include<stdio.h>voidmain(){ charch='A'; printf("%c,%d\n",ch,ch);}ASCⅡ字符表例3-5字符變量可以與整數(shù)進(jìn)行算術(shù)運(yùn)算#include<stdio.h>voidmain(){charch1='A',ch2;ch2=ch1+5;printf("%c,%d\n",ch1,ch1);printf("%c,%d\n",ch2,ch2);}A,65F,703.1.2格式化輸入函數(shù)scanf()格式化輸入函數(shù)從標(biāo)準(zhǔn)輸入設(shè)備為變量輸入數(shù)據(jù)。scanf()函數(shù)一般使用格式

scanf("格式化字符串",變量地址表);其中:⑴“格式化字符串”用于說明輸入數(shù)據(jù)的類型和數(shù)據(jù)格式,使用的格式控制符與printf()函數(shù)相同。⑵“變量地址表”是接受輸入數(shù)據(jù)的變量的內(nèi)存地址,它們之間以逗號“,”分隔。當(dāng)接受數(shù)據(jù)的變量是簡單變量時(shí),變量地址的表示形式如下:

&簡單變量名⑶“格式化字符串”中的格式控制參數(shù)之間通常用逗號“,”或空格(以“”表示)分隔,也可以不使用任何分隔符號。當(dāng)使用“,”分隔時(shí),輸入數(shù)據(jù)時(shí)各個(gè)數(shù)據(jù)之間也要使用“,”分隔;當(dāng)使用空格分隔或不使用任何分隔符時(shí),輸入的數(shù)據(jù)之間可以使用空格分隔,也可以使用回車符分隔。

(4)“格式字符串”中控制參數(shù)的個(gè)數(shù)必須與變量地址的個(gè)數(shù)一致。3.1.2格式化輸入函數(shù)scanf()例3-6

輸入學(xué)生兩門課的成績,計(jì)算其平均成績。/*programe3-6.c*/#include<stdio.h>voidmain(){ intscore1,score2,average; printf("Data:"); scanf("%d%d",&score1,&score2); average=(score1+score2)/2; printf("Average:%d\n",average);}輸入數(shù)據(jù)的格式要與此對應(yīng)變量名前加“&”拓展知識①從輸入流中自動獲取數(shù)值

scanf("%3d%2d",&m,&n);

123456789<CR>②數(shù)據(jù)虛讀

scanf("%3d%*4d%f",&m,&n);

123456789.1234<CR>③自動識別數(shù)據(jù)類型

inta;charb;floatc;scanf("%d%c%f",&a,&b,&c);234K1234.123<CR>m=123,n=45m=123,n=89.1234a=234,b=K,c=1234.123例3-10-1#include<stdio.h>voidmain(){charc1,c2;scanf("%c",&c1);scanf("%c",&c2);//A<CR>B<CR>printf("%c,%c\n",c1,c2);printf("%d,%d\n",c1,c2);}A,

65,10例3-10-2#include<stdio.h>voidmain(){charc1,c2;scanf("%c",&c1);

fflush(stdin);/*清除文件緩沖區(qū)

*/scanf("%c",&c2);/*A<CR>B<CR>*/printf("%c,%c\n",c1,c2);printf("%d,%d\n",c1,c2);}A,B65,66%f&%lfscanf()語句:“%lf”用于double類型,“%f”用于float類型printf()語句:"%f"既可用于double類型,又可用于float類型,意思是輸出實(shí)數(shù)(包括單、雙精度),并意指“保留6位小數(shù)”;"%lf"只能用于double型,意思是輸出雙精度。例:求三角形面積#include<stdio.h>#include<math.h>voidmain(){

floata,b,c,s;printf("Pleaseenter3reals:\n");scanf("%f%f%f",&a,&b,&c);s=(a+b+c)*0.5;printf("\nAreaofthetriangleis%lf\n",sqrt(s*(s-a)*(s-b)*(s-c)));}3.1.3字符輸入輸出函數(shù)getchar()和putchar()getchar()函數(shù)功能:從鍵盤輸入的字符串中讀入一個(gè)字符。調(diào)用格式:getchar()putchar()函數(shù)功能:向標(biāo)準(zhǔn)輸出設(shè)備輸出一個(gè)字符。調(diào)用格式:

putchar(ch)其中:ch為一個(gè)字符變量名或字符常量。例3-11從鍵盤輸入一個(gè)字符,然后再顯示出來。/*programe3-11-1.c*/#include<stdio.h>voidmain(){ charch; ch=getchar();

putchar(ch);

}3.1.3字符輸入輸出函數(shù)getchar()和putchar()3.2編譯預(yù)處理命令define和include簡介3.2.1define命令3.2.2include命令3.2.1define命令define命令稱為編譯預(yù)處理的宏定義命令。宏分為帶參數(shù)的宏和不帶參數(shù)的宏兩類,符號常量屬于不帶參數(shù)的宏。不帶參數(shù)的宏的一般形式:#define宏名宏體其中:⑴“#”是預(yù)處理命令開始符,不能缺省。⑵“define”為宏定義命令字,表示宏定義命令。⑶“宏名”是一個(gè)標(biāo)識符,“宏體”可以是一個(gè)字符串,也可以是一個(gè)數(shù)值,也可以是一個(gè)表達(dá)式等。使用宏定義后,在編譯預(yù)處理階段,系統(tǒng)就把程序中的宏名替換為宏體,這一替換過程稱為“宏替換”,宏替換是對宏體字符串的原樣照搬。3.2.1define命令例3-12使用符號常量的程序。/*programe3-12.c*/#include<stdio.h>#definePI3.14159/*定義符號常量PI*/voidmain(){ floatr,l,s; printf("r="); scanf("%f",&r);

l=2*PI*r;/*使用符號常量PI*/

s=PI*r*r; printf("%f,%f\n",l,s);}帶參數(shù)的宏一般形式:

#define宏名(參數(shù)表)字符串其中:(1)參數(shù)表可以是一個(gè)參數(shù)或是多個(gè)參數(shù),多個(gè)參數(shù)之間要用“,”分隔。(2)字符串部分,要包括參數(shù)表中的參數(shù)。可以是一個(gè)表達(dá)式等。(3)同一個(gè)宏名不能重復(fù)定義。(4)在調(diào)用帶參數(shù)的宏名時(shí),一對圓括號必不可少,圓括號中實(shí)參的個(gè)數(shù)應(yīng)該與形參個(gè)數(shù)相同。注意事項(xiàng):帶參數(shù)的宏定義中,宏的參數(shù)不分配內(nèi)存單元,也不存在類型定義問題。帶參數(shù)的宏定義中,宏名和形參表之間不能有空格出現(xiàn),一旦出現(xiàn)空格,就成了不帶參數(shù)的宏定義。例3-13計(jì)算a4+b4#include<stdio.h>#definem(x)x*x*x*xvoidmain(){inta,b,s;printf("Inputa,b:");scanf("%d%d",&a,&b);s=m(a)+m(b);printf("Result:%d\n",s);}s=a*a*a*a+b*b*b*b;例3-14#include<stdio.h>#definemax(x,y)x>y?x:yvoidmain(){inta,b,c,m;a=36,b=97,c=88;m=max(a,b);m=max(m,c);printf("max=%d\n",m);}max=97#include<stdio.h>#defineMM(a,b)((a)*2+(b))#definePRD(x)printf("%d\n",x);main(){ inti,j,k; i=2;j=6; k=2*MM(i,j)+5; PRD(k);}2*MM(i,j)+52*((a)*2+(b))+52*((i)*2+(j))+52*((2)*2+(6))+5printf("%d",x)printf("%d",k)運(yùn)行結(jié)果:253.2.2include命令C語言系統(tǒng)提供了大量的系統(tǒng)函數(shù),對函數(shù)的說明信息分門別類的放在不同的頭文件中。如printf()、scanf()、getchar()、putchar()等輸入輸出函數(shù)的說明信息在頭文件“stdio.h”中,sin()、sqrt()等數(shù)學(xué)函數(shù)的說明信息在頭文件“math.h”中。C語言規(guī)定,要使用這些函數(shù)必須先行說明。說明的方法,是使用include命令包含相關(guān)的頭文件。include命令的一般使用形式:#include<文件名>#include"文件名"3.2.2include命令例3-15計(jì)算表達(dá)式的值。/*programe3-15.c*/#include<stdio.h>#include<math.h>

voidmain(){ floatx,y; printf("Data:"); scanf("%f%f",&x,&y); printf("Result:%f\n",sqrt(x*x+y*y));}3.3程序設(shè)計(jì)舉例3.3.1分段函數(shù)求值3.3.2計(jì)算三角形面積3.3.3字母轉(zhuǎn)換3.3.4雞兔同籠問題

3.3.1分段函數(shù)求值例3-17計(jì)算分段函數(shù)值。1.問題分析⑴函數(shù)值y=(x>0)?(x+25):(x-25)⑵該問題的輸入量為x;輸出量為y。2.算法設(shè)計(jì)本題的任務(wù)是根據(jù)一個(gè)輸入量計(jì)算表達(dá)式的值。關(guān)鍵步驟有3個(gè):⑴輸入x;⑵(x>0)?(x+25):(x-25)y;⑶輸出y。3.實(shí)現(xiàn)程序/*programe3-17.c*/#include<stdio.h>voidmain(){intx,y;printf("X=");scanf("%d",&x);y=(x>0)?(x+25):(x-25);printf("Y=%d\n",y);}3.3.2計(jì)算三角形面積例3-18設(shè)三角形邊長為a、b、c,計(jì)算其面積area。1.問題分析⑴面積area的計(jì)算公式2.算法設(shè)計(jì)⑴輸入a、b、c;⑵(a+b+c)/2→s;⑶sqrt(s*(s-a)*(s-b)*(s-c))→area;⑷輸出area。,⑵該問題的輸入量有三個(gè),即a、b、c;輸出量是area。3.實(shí)現(xiàn)程序/*programe3-18.c*/#include<stdio.h>#include<math.h>voidmain(){floata,b,c,s,area;printf("a,b,c:");

scanf("%f,%f,%f",&a,&b,&c);s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c);

printf("Area=%7.2f\n",area);}

3.3.3字母轉(zhuǎn)換例3-19

從鍵盤輸入一個(gè)大寫英文字母,然后在屏幕上輸出它的小寫形式。

1.問題分析⑴英文字母以ASCII碼存儲,同一個(gè)字母的大、小寫ASCII碼值對應(yīng)關(guān)系:小寫字母ASCII碼值=大寫字母ASCII碼值+32⑵設(shè)輸入量為ch,則輸出量為ch+32。2.算法設(shè)計(jì)⑴輸入大寫字母存儲到變量ch中;⑵ch+32→ch;⑶輸出ch。3.實(shí)現(xiàn)程序/*programe3-19.c*/#include<stdio.h>voidmain(){ charch; printf("Input:");

ch=getchar();

printf("Output:%c\n",ch+32);}3.3.3字母轉(zhuǎn)換例

3-20

從鍵盤輸入一個(gè)字符,若其為大寫英文字母,則在屏幕上輸出它的小寫形式;否則,原樣輸出該字符。

1.問題分析設(shè)輸入量為ch1,則判斷大寫字母:

ch1>='A'&&ch1<='Z'設(shè)輸出量為ch2:

ch2=(ch1>='A'&&ch1<='Z')?ch1+32:ch1

2.算法設(shè)計(jì)⑴輸入字符存儲到ch1中;⑵計(jì)算字符的輸出形式ch2:

ch2=(ch1>='A'&&ch1<='Z')?ch1+32:ch1⑶輸出ch2。3.實(shí)現(xiàn)程序/*programe3-20.c*/#include<stdio.h>voidmain(){charch1,ch2;printf("Input:");ch1=getchar();ch2=(ch1>='A'&&ch1<='Z')?ch1+32:ch1;printf("Output:%c\n",ch2);}

小寫變大寫字符原形判斷大、小寫字母3.

溫馨提示

  • 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

提交評論