版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第3章 順序結(jié)構(gòu)程序設(shè)計3.1 程序的基本結(jié)構(gòu)【學(xué)習(xí)目標(biāo)】(1) 掌握程序的幾種基本結(jié)構(gòu)(2) 掌握順序結(jié)構(gòu)程序設(shè)計的程序模式(3) 掌握字符型輸入輸出函數(shù)實例11 字符型數(shù)據(jù)的輸入和輸出輸入與輸出幾個字符【實例任務(wù)】 輸入幾個字符然后輸出。程序運(yùn)行結(jié)果如圖3-1所示。圖3-1 程序運(yùn)行結(jié)果【程序代碼】#include "stdio.h"main() /*聲明變量*/ char a,b,c; /*使用getchar()函數(shù)接受用戶輸入的值*/ printf("請輸入字符:n"); fflush(stdin); a=getchar(); fflush(st
2、din); b=getchar(); fflush(stdin); c=getchar(); /*使用putchar()函數(shù)輸出這幾個字符,并輸出一個換行符*/ putchar(a); putchar(b); putchar(c); putchar('n'); getch(); 【相關(guān)知識】1. 程序的幾種基本結(jié)構(gòu)程序設(shè)計模式 C語言中,常用的流程控制結(jié)構(gòu)分為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。由這三種結(jié)構(gòu)可組成各種復(fù)雜的程序。順序結(jié)構(gòu)是三種結(jié)構(gòu)中最簡單,最常見的程序結(jié)構(gòu)。三種流程控制結(jié)構(gòu),使用特定的流程控制語句,從而實現(xiàn)程序的各種結(jié)構(gòu)方式。C語言中常用的控制語句有:if語句、swi
3、tch語句、do while語句、while語句、for語句、continue語句、break語句等。2順序結(jié)構(gòu)的執(zhí)行過程所謂“程序結(jié)構(gòu)”,即指程序中語句的執(zhí)行順序。程序設(shè)計者要把事情交給計算機(jī)去做,使用的都是寫出一條條語句,順序地執(zhí)行,這是順序式結(jié)構(gòu)。本例中的程序運(yùn)行就是順序執(zhí)行每條語句。3getchar()函數(shù)getchar()函數(shù)是一個沒有參數(shù)的函數(shù),它從標(biāo)準(zhǔn)輸入(鍵盤)讀取一個字符,返回改字符的編碼值。當(dāng)使用此函數(shù)時,按下的鍵將自動回顯到屏幕上。使用getchar()函數(shù)時,任何鍵都是有效的返回值。調(diào)用沒有參數(shù)的函數(shù)時應(yīng)在函數(shù)名后寫一對空括號。下面的代碼演示了getchar()函數(shù)的用
4、法:char c;fflush(stdin);c=getchar(); getchar()函數(shù)只能接受單個字符,輸入數(shù)字也按字符處理。當(dāng)輸入多于一個字符時,只接收第一個字符。使用getchar()函數(shù)時需要注意這一點。函數(shù)fflush()用于清空輸入緩沖區(qū)。stdin是標(biāo)準(zhǔn)的輸入,即鍵盤輸入。分配給鍵盤的緩沖區(qū)需要清空,以便存儲新數(shù)據(jù)。有時,鍵盤緩沖區(qū)中保留著舊信息,如果不清空,在接受字符時會將舊信息返回,這樣就可能引發(fā)錯誤。4 putchar()函數(shù)putchar()函數(shù)對應(yīng)于getchar()函數(shù)。函數(shù)putchar把一個字符送到標(biāo)準(zhǔn)輸出。例如:putchar('o');
5、putchar('k');兩個字符“ok”將被送到標(biāo)準(zhǔn)輸出。標(biāo)準(zhǔn)輸出的默認(rèn)連接通常是計算機(jī)顯示器,因此,執(zhí)行這兩個語句的效果使字符在計算機(jī)屏幕上顯示出來。實例中創(chuàng)建了3個變量a、b和c,getchar()函數(shù)將用戶輸入的字符存儲在這些變量中。每個getchar()前都使用一個fflush()函數(shù)幫助清空緩沖區(qū)。在該程序中,如果不使用fflush(),也不會出現(xiàn)問題。隨著每個getchar()函數(shù)的執(zhí)行,輸入的字符就顯示在屏幕上。最后一行輸出結(jié)果將顯示前面輸入的所有字符。此輸出結(jié)果顯然表明,使用putchar()函數(shù)后,所有字符將顯示在同一行上,最后換一行(因為它輸出一個換行符)
6、,程序隨即結(jié)束。【課堂精練】1從鍵盤辦入3個數(shù),并計算他們的和值。程序的運(yùn)行結(jié)果如圖3-2所示。 圖3-2 程序運(yùn)行結(jié)果根據(jù)程序的運(yùn)行結(jié)果,請將下面程序補(bǔ)充完整并調(diào)試。#include "stdio.h"main()int a1,a2,a3;/*定義三個整型變量*/scanf("%d,%d,%d",&a1,&a2,&a3); /*從鍵盤上輸入三個變量的值*/printf("a1+a2+a3=%d",_); /*輸出三個數(shù)的和值*/getch();2從鍵盤辦入2個整數(shù),計算兩數(shù)整除所得的余數(shù)。程序的運(yùn)行結(jié)果如圖3
7、-3所示。 圖3-3 程序運(yùn)行結(jié)果根據(jù)程序的運(yùn)行結(jié)果,請將下面程序補(bǔ)充完整并調(diào)試。#include "stdio.h"main()int a1,a2; /*定義兩個整型變量*/scanf("%d,%d",&a1,&a2); /*從鍵盤上輸入兩個變量的值*/printf("兩數(shù)整除余數(shù)為:%d",_);/*輸出兩數(shù)整除所得的余數(shù)*/getch();3. 從鍵盤上輸入一個大寫字母,輸出該字母的小寫。程序的運(yùn)行結(jié)果如圖3-4所示。 圖3-4 程序運(yùn)行結(jié)果根據(jù)程序的運(yùn)行結(jié)果,請將下面程序補(bǔ)充完整并調(diào)試。#include &qu
8、ot;stdio.h"main()char c; /*定義字符型變量*/c=getchar(); /*從鍵盤上輸入字符變量的值*/_; /*將字符轉(zhuǎn)換成對應(yīng)的小寫字母*/putchar(c); /*輸出這個小寫字母*/getch(); 3.2 常用的輸入輸出函數(shù)【學(xué)習(xí)目標(biāo)】(1)掌握常用的字符型輸入輸出函數(shù)(2)掌握常用的格式化輸入輸出函數(shù)(3)掌握頭文件在編寫程序時的作用(4)掌握復(fù)合語句、空語句的格式及作用實例12 格式化數(shù)據(jù)的輸入和輸出互換兩個變量的值【實例任務(wù)】 接收兩個整數(shù),分別保存在兩個變量中,通過第三個變量將這兩個變量的值互換。運(yùn)行結(jié)果如圖3-5所示。圖3-5 程序運(yùn)行
9、結(jié)果【程序代碼】#include "stdio.h"main() int x,y,z; printf("n請輸入第一個數(shù):"); scanf(" %d",&x); printf("n請輸入第二個數(shù):"); scanf(" %d",&y); /*顯示互換前的數(shù)*/ printf("nn輸出互換前的數(shù)"); printf("n第一個數(shù)是: %d",x); printf("n第二個數(shù)是: %d",y); /*互換這兩個數(shù)*/
10、z=x; x=y; y=z; /*顯示互換后的數(shù)*/ printf("nn輸出互換后的數(shù)"); printf("n第一個數(shù)是: %d",x); printf("n第二個數(shù)是: %d",y); getch(); 【相關(guān)知識】1頭文件“stdio.h”C語言格式輸入函數(shù)scanf()和格式輸出函數(shù)printf(),都在頭文件stdio.h里。因此,程序中使用它們時,在程序的開始處,應(yīng)該書寫一條包含命令: #include "stdio.h" 或 #include <stdio.h>2格式化輸出函數(shù)print
11、f() 其功能是向顯示器輸出若干指定類型的數(shù)據(jù)。其一般格式為:printf(參數(shù)1,參數(shù)2,參數(shù)n)其中參數(shù)1是”格式控制字符串”,即用雙引號括起來的字符串,它包含兩類字符信息:一類是格式說明:由%開始的格式字符序列,如%d、%c、%f等。表示表達(dá)式的值應(yīng)以給定的格式輸出。另一類是普通字符,按原樣輸出的字符,除了格式說明字符之外的全是普通字格式輸入函數(shù)printf的功能是按指定的格式將數(shù)據(jù)在標(biāo)準(zhǔn)設(shè)備上進(jìn)行輸出。其一般格式為:printf(格式控制參數(shù),輸出項表列);其中輸出項表列是由各輸出項組成,各輸出項之間用逗號分隔開。輸出項可以是合法的變量、常量或表達(dá)式。格式控制參數(shù)是由雙引號括起來的字符
12、串,它是由格式描述符和普通字符組成。普通字符將被原樣輸出。格式描述符是以%開頭,以一個格式字符結(jié)束,作用是將輸出數(shù)據(jù)按指定的格式輸出。常用的格式描述符為: %d:以十進(jìn)制輸出帶符號的整數(shù)。%o:以八進(jìn)制無符號形式輸出整數(shù)。%x:以十六進(jìn)制無符號形式輸出整數(shù)。%c:用于輸出單個字符。%f:以十進(jìn)制形式輸出實型數(shù)據(jù)。%s:用于輸出字符串。在printf函數(shù)中一個格式描述符要求輸出一個數(shù)據(jù),也就是說必須在輸出項表列中有一個變量與之相對應(yīng),且類型要前后一致。說明:(1)在%與格式字符間插入整數(shù)來指定輸出寬度。%md:表明所輸出的數(shù)據(jù)占m個字符的寬度,如果實際輸出數(shù)據(jù)的位數(shù)大于m,則按實際的位數(shù)輸出,否
13、則在輸出數(shù)據(jù)的左端補(bǔ)空格。%mc:表明輸出的字符占m個字符的寬度,當(dāng)m大于1時,左端補(bǔ)空格。%ms:表明輸出m個字符的字符串。如果實際長度大于m時,則按原樣輸出字符串,否則左端補(bǔ)空格。%m.nf:表明輸出數(shù)據(jù)的總寬度為m(包括整數(shù)位數(shù)、小數(shù)點和小數(shù)位數(shù)),n為小數(shù)位數(shù)。如果輸出的數(shù)據(jù)的總長度小于m,則在輸出數(shù)據(jù)的左端補(bǔ)空格。對于小數(shù)部分,若n小于實際輸出的小數(shù)位數(shù)時,對第n+1位進(jìn)行四舍五入。如表中結(jié)果表3-1所示(其中表示空格):表3-1 格式控制符與輸出項形式之間的關(guān)系輸出語句輸出結(jié)果printf(“%d”,123);123printf(“%5d”,123);123printf(“%f”,
14、123.45);123.450000printf(“%12f”,123.45);123.450000printf(“%9.3f”,123.45);123.450printf(“%9.0f”,123);123printf(“%5c”,c);cprintf(“%5s”, ”abc”);abc(2)在輸出的數(shù)值型數(shù)據(jù)前總是帶正負(fù)號。這可以通過在%與格式符間加一個“”來實現(xiàn)。如:printf(”%+d,%+d”,1,-1); 則輸出結(jié)果為:1,1。(3)在輸出數(shù)據(jù)前加前導(dǎo)0。這可以在%與指定輸出寬度的整數(shù)間加一個“0”來實現(xiàn)。如:printf(”%05d”,123); 則輸出結(jié)果為:00123。(4)
15、在格式控制字符串中,如果兩個%連用,則輸出一個%。如:printf(”%d”,10); 則輸出結(jié)果為:%10。3格式化輸入函數(shù)scanf( )格式輸入函數(shù)scanf的功能是按指定的格式從鍵盤上輸入數(shù)據(jù)。其一般格式為:scanf(格式控制參數(shù),地址項表列);其中地址項表列是由接收數(shù)據(jù)的變量的地址組成,求地址運(yùn)算符為&,如&a,&b,&c。格式控制參數(shù)是由雙引號括起來的字符串,里邊有格式描述符和輸入數(shù)據(jù)分隔符。常用的格式描述符為: %d:用于輸入十進(jìn)制整數(shù)。%o:用于輸入八進(jìn)制整數(shù)。%x:用于輸入十六進(jìn)制整數(shù) 。%c:用于輸入單個字符。%f:用于實型數(shù)據(jù)。%s:用于
16、輸入字符串。在scanf函數(shù)中一個格式描述符要求輸入一個數(shù)據(jù),也就是說必須在址址項表列中有一個變量與之相對應(yīng),且類型要前后一致。(1)如果輸入數(shù)值型數(shù)據(jù)時,數(shù)據(jù)間要用空格、Tab鍵或回車鍵分隔。如:scanf(”%d%d”,&a,&b);對應(yīng)此語句,可輸入13789(表示回車)。(2)如果在各輸入描述符間有分隔符,則在輸入數(shù)據(jù)時,要輸入與這些字符相同的字符作為分隔符。如:scanf(”%d,%d”,&a,&b);對應(yīng)此語句,要求輸入數(shù)據(jù)間要用“,”分隔。可輸入13,789。(3)如果輸入多個字符數(shù)據(jù)時,則不需要在各字符間輸入分隔符。如:scanf(”%c%c”,
17、&a,&b);對應(yīng)此語句,可輸入AB。則對a輸入字符A,對b輸入字符B。(4)當(dāng)交叉輸入數(shù)值數(shù)據(jù)和字符數(shù)據(jù)時,如果字符在前,則字符和數(shù)值型數(shù)據(jù)間要有空格;如果數(shù)值在前,則數(shù)值和字符間不要有空格。如:scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);對應(yīng)此語句,必須用以下形式輸入數(shù)據(jù):20A 30B。如:scanf(“%c%d%c%d”,&c1,&a1,&c2,&a2);對應(yīng)此語句,可以用以下形式輸入數(shù)據(jù):A 20B 30。4復(fù)合語句在C語言程序中,可以用一對花括號把若干條語句括起來,形成一個整體。
18、這個整體就被稱為“復(fù)合語句”。從語法上講,它相當(dāng)于一個語句。復(fù)合語句的一般格式是: 語句1; 語句2; 語句n; 要注意,復(fù)合語句中可以出現(xiàn)變量說明,復(fù)合語句中的最后一條語句的語句結(jié)束符(分號)不能省略,否則會造成語法錯誤。另外,標(biāo)識復(fù)合語句結(jié)束的右花括號的后面不能有語句結(jié)束符(分號)。5空語句 在C語言中,稱僅由一個分號組成的語句為“空語句”,即:;編譯程序在遇到空語句時,不會為其產(chǎn)生任何相應(yīng)的指令代碼。這就是說,空語句不執(zhí)行任何操作。因此,空語句只是C語言語法上的一個概念,它起到一個語句的作用,僅此而已?!菊n堂精練】1輸入圓的半徑,求其周長和面積。程序的運(yùn)行結(jié)果如圖3-6所示。 圖3-6
19、程序運(yùn)行結(jié)果根據(jù)程序的運(yùn)行結(jié)果,請將下面程序補(bǔ)充完整并調(diào)試。 #include "stdio.h" #define PI 3.14159 /*定義字符常量PI,且值為3.14159*/ main() float r,l,s; /*定義3個實行變量r、l、s*/ _ getchar(); l=2*PI*r; /*計算周長并賦值給l*/ s=PI*r*r; /*計算面積并賦值給s*/ printf("n r=%7.2f,l=%7.2fn",r,l);/*輸入周長,數(shù)據(jù)共占7個字符寬,2位小數(shù)*/ printf("n r=%7.2f,s=%7.2fn
20、",r,s);/*輸入面積,數(shù)據(jù)共占7個字符寬*/ getch (); 2復(fù)合語句和空語句的使用。程序的運(yùn)行結(jié)果如圖3-7所示。 圖3-7 程序的運(yùn)行結(jié)果根據(jù)程序的運(yùn)行結(jié)果,請將下面程序補(bǔ)充完整并調(diào)試。#include "stdio.h"main()int x=10; /*空語句*/printf("x is %dn",x); /*復(fù)合語句開始*/int y=50;printf("y is %dn",y);_ /*空語句*/ /*復(fù)合語句結(jié)束*/printf("x is %dn",x);getch();3.
21、3 課后習(xí)題3.3.1 項目練習(xí)一練習(xí)目的 1進(jìn)一步鞏固順序結(jié)構(gòu)程序設(shè)計 2進(jìn)一步鞏固各種輸入輸出函數(shù)的使用方法 3進(jìn)一步練習(xí)常用的語句的使用方法 4提高編程和調(diào)試程序的能力二練習(xí)內(nèi)容1編寫程序,用getchar函數(shù)讀入兩個字符給c1、c2,然后分別用putchar函數(shù)和printf函數(shù)輸出這兩個字符,并思考以下問題:(1)變量c1、c2應(yīng)定義為字符型或整型?抑或二者皆可?(2)要求輸出c1和c2值的ASCII碼,應(yīng)如何處理?用putchar函數(shù)還是printf函數(shù)?(3)整型變量與字符變量是否在任何情況下都可以互相代替?如"char c1,c2;"與"int c
22、1,c2;"是否無條件等價?2求一個圓柱體的體積。 3編寫一個簡單的計算器,實現(xiàn)兩個整型數(shù)的四則運(yùn)算。P533.3.2 練習(xí)題一選擇題1 putchar函數(shù)可以向終端輸出一個_。(A) 整型變量表達(dá)式 (B) 實型變量值(C) 字符串 (D) 字符或字符型變量值2 閱讀以下程序,當(dāng)輸入數(shù)據(jù)的形式為:25,13,10<CR>(注:<CR>表示回車),則正確的輸出結(jié)果為_。 main() int x,y,z; scanf(“%d%d%d”,&x,&y,&z); printf(“x+y+z=%dn”,x+y+z); getch()
23、 (A) x+y+z=48 (B) x+y+z=35 (C) x+z=35 (D) 不確定值3已知定義int i,j,k;若從鍵盤輸入:1,2,3回車,分別使i,j,k的值為1、2、3,以下選項中正確的輸入語句是_。(A)scanf("%2d%2d%2d",&i,&j,&k); (B) scanf("%d %d %d",&i,&j,&k); (C)scanf("%d,%d,%d",&i,&j,&k); (D) scanf("i=%d,j=%d,k=%d",&i,&j,&k);4.已有如下定義和輸入語句,若要求a1,a2,c1,c2的值分別為20,30,C和D,當(dāng)從第一列開始輸入數(shù)據(jù)時,正確的數(shù)據(jù)輸入方式是_。 in
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 曲港高速公路便道施工檔案管理方案
- 學(xué)校食堂員工培訓(xùn)
- 2023年深圳公務(wù)員考試申論試題(一卷)
- 幼兒園課程評估制度
- 老舍四世同堂讀書心得2024(3篇)
- 郵政實習(xí)心得體會
- 安徽省亳州市渦陽縣2024-2025學(xué)年高一上學(xué)期10月月考生物試題
- 氣管切開護(hù)理新進(jìn)展
- 路基清表施工技術(shù)方案
- 學(xué)校周邊鹵味問卷調(diào)查
- 安徽財經(jīng)大學(xué)班主任工作考核表
- 價值流PSI拉動暢流
- 保險業(yè)反洗錢-可疑交易和典型案例分析
- 2023年社區(qū)換屆選舉會議記錄【三篇】
- 2023年黑龍江省哈爾濱市紀(jì)監(jiān)委遴選面試題及參考答案
- ??低旸SK1T系列接鎖電源操作手冊
- 圍產(chǎn)期母嬰感染B族鏈球菌的防治及專家共識防治指南PPT課件院內(nèi)培訓(xùn)
- 鐵路基礎(chǔ)知識考試題庫500題(單選、多選、判斷)
- 多媒體會議室維護(hù)維保方案書
- 【失敗案例】“瘋太陽”鄭州亞細(xì)亞集團(tuán)的隕落亞細(xì)亞(戰(zhàn)略和體制)
- 大學(xué)化學(xué)-物質(zhì)結(jié)構(gòu)基礎(chǔ)
評論
0/150
提交評論