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

下載本文檔

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

文檔簡介

本章要求:進(jìn)一步理解C程序的組成,了解C語句的分類掌握C語言中數(shù)據(jù)的輸入/輸出方法,常用輸入/輸出函數(shù)的使用掌握順序結(jié)構(gòu)程序設(shè)計(jì)方法,能編寫簡單的C程序本章難點(diǎn):

數(shù)據(jù)輸出格式控制符的使用

本章重點(diǎn):

格式輸入/輸出函數(shù)(scanf()/printf())的使用第四講簡單的C程序設(shè)計(jì)(ch3)3.1順序結(jié)構(gòu)的基本語句3.2數(shù)據(jù)的輸入與輸出3.3字符數(shù)據(jù)的輸入輸出*3.4較復(fù)雜的輸入輸出問題本章小結(jié)第3章順序結(jié)構(gòu)程序設(shè)計(jì)內(nèi)容要點(diǎn)提示:順序結(jié)構(gòu)中基本的語句有哪些?輸出函數(shù)printf有哪些格式說明符?利用scanf函數(shù)輸入數(shù)據(jù)時(shí),要注意什么?程序設(shè)計(jì)其實(shí)是對數(shù)據(jù)的設(shè)計(jì)和對操作的設(shè)計(jì)。數(shù)據(jù)設(shè)計(jì)是通過一系列的數(shù)據(jù)描述語句來實(shí)現(xiàn),主要用來定義數(shù)據(jù)的類型,完成數(shù)據(jù)的初始化等;操作設(shè)計(jì)是通過一系列的操作控制語句來完成,其作用是向計(jì)算機(jī)系統(tǒng)發(fā)出操作指令,以完成對數(shù)據(jù)的加工計(jì)算和流程控制。程序的結(jié)構(gòu)分為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)3.1順序結(jié)構(gòu)的基本語句C語句是C程序的最基本成分。C語句必須由分號“;”結(jié)尾,哪怕只有一個(gè)分號也能構(gòu)成一個(gè)空語句。在C語言中只有“可執(zhí)行語句”,沒有“非執(zhí)行語句”。

一個(gè)大型C程序的結(jié)構(gòu)如圖3-1所示,即一個(gè)C程序可以由若干個(gè)源程序文件組成,一個(gè)源文件可以由若干個(gè)函數(shù)和預(yù)編譯命令組成,一個(gè)函數(shù)又由數(shù)據(jù)定義部分和執(zhí)行部分組成。3.1順序結(jié)構(gòu)的基本語句順序結(jié)構(gòu)主要使用的是簡單語句(包括數(shù)據(jù)輸入輸出語句)、空語句和復(fù)合語句。3.1.1簡單語句1.表達(dá)式語句由表達(dá)式組成的語句稱為表達(dá)式語句。即在表達(dá)式后面加上分號就成為表達(dá)式語句。表達(dá)式;/*分號是C語言語句的結(jié)束符*/例如:i++;--j;3.1順序結(jié)構(gòu)的基本語句2.賦值語句例如:y=10;/*把10賦值給變量y*/x=y+1;x=x*6*sin(x)/*計(jì)算右邊表達(dá)式的值,并賦值給變量x*/3.函數(shù)調(diào)用語句函數(shù)調(diào)用語句由函數(shù)名和實(shí)際參數(shù)加上分號組成。形式如下:函數(shù)名(實(shí)際參數(shù)列表);例如:scanf(“%d”,&x);printf(“x=%d”,x);3.1順序結(jié)構(gòu)的基本語句3.1.2空語句只有一個(gè)分號的語句,它什么也不做。有時(shí)用作轉(zhuǎn)向語句或后面章節(jié)提到的循環(huán)語句中的循環(huán)體。例如:while(getchar()!=’\n’)/*這是循環(huán)控制語句*/;/*這是空語句*/3.1.3復(fù)合語句把多條語句用花括號“{}”括起來組成的語句稱為復(fù)合語句。在程序中應(yīng)把復(fù)合語句看成是單條語句,即在語法上相當(dāng)于一條語句。3.1順序結(jié)構(gòu)的基本語句復(fù)合語句的形式:{[數(shù)據(jù)說明]語句1;語句2;……語句n;}注意:在復(fù)合語句的“數(shù)據(jù)說明”中定義的變量是局部變量,僅在復(fù)合語句中有效;復(fù)合語句結(jié)束花括號“}”之后不需再加分號。例如:{intx=3,y=7;/*x,y變量僅在復(fù)合語句中有效*/x=x+y;printf(“x=%d\n”);}3.1順序結(jié)構(gòu)的基本語句【例3-1】輸入三角形的三條邊長,計(jì)算并輸出三角形的面積。假設(shè)輸入的三條邊能構(gòu)成三角形的。根據(jù)三條邊的邊長,計(jì)算三角形面積的公式如下:

#include<stdio.h>#include<math.h>/*數(shù)學(xué)函數(shù)的頭文件*/voidmain(){ floatx,y,z,s,area;printf("Inputa,b,c:\n"); scanf("%f,%f,%f",&x,&y,&z);/*輸入三角形三邊*/ s=(x+y+z)/2; area=sqrt(s*(s-x)*(s-y)*(s-z));/*求三角形面積*/ printf("Theareais:%.2f\n",area);/*輸出三角形面積*/ }思考:輸入任意3個(gè)值作為三角形的邊都能計(jì)算出三角形面積?3.2.1數(shù)據(jù)輸入/輸出的概念

數(shù)據(jù)輸入/輸出是相對計(jì)算機(jī)內(nèi)存3.2數(shù)據(jù)的輸入/輸出

在C語言中所有的數(shù)據(jù)輸入/輸出都是由庫函數(shù)完成的。因此都是函數(shù)語句。在C語言中使用庫函數(shù)時(shí),要使用預(yù)編譯命令#include將相關(guān)的頭文件(*.h)包含到用戶源文件中。使用形式:

#include“頭文件”或#include<頭文件>說明:1.標(biāo)準(zhǔn)輸入/輸出頭文件是:stdio.h2.常用的輸入輸出函數(shù)有:

printf()scanf()puts()gets()putchar()getchar()函數(shù)等3.2數(shù)據(jù)格式輸入/輸出

3.2.1數(shù)據(jù)格式輸出——printf()函數(shù)格式化輸出函數(shù)printf()功能:按控制字符串規(guī)定的格式,向輸出設(shè)備輸出各輸出項(xiàng)其基本格式為:printf(“控制字符串”,輸出項(xiàng)列表)3.2數(shù)據(jù)格式輸入/輸出

輸出項(xiàng)可以是常量、變量、表達(dá)式,其類型與個(gè)數(shù)必須與控制字符串中格式字符的類型、個(gè)數(shù)一致、當(dāng)有多個(gè)輸出項(xiàng)時(shí),各項(xiàng)之間用逗號分隔??刂谱址筛袷秸f明和普通字符兩部分組成。Printf(“a=%d,sum=%f\n”,a,a/10.0)原樣輸出a=原樣輸出,sum=%d按整型輸出%f按實(shí)型輸出表達(dá)式列表1.格式說明一般格式為:%[<修飾符>]<格式字符>格式字符規(guī)定了輸出項(xiàng)的輸出格式,常用格式字符見表3-1格式字符意義舉例輸出結(jié)果d按十進(jìn)制整數(shù)輸出printf("%d",a)65o或O按八進(jìn)制整數(shù)輸出printf("%o",a)101x或X按十六進(jìn)制整數(shù)輸出printf("%x",a)41u按無符號整數(shù)輸出printf("%u",a)65c按字符型輸出printf("%c",a)As按字符串輸出printf("%s","aba")abcf按浮點(diǎn)型小數(shù)輸出printf("%f",x)3.141593e按科學(xué)計(jì)數(shù)法輸出printf("%e",x)3.141593e+00g按e和f格式中較短的一種輸出printf("%g",x)3.141593表3-2輸出格式字符3.2.1數(shù)據(jù)格式輸出——printf()函數(shù)(1)

字段寬度修飾符該修飾符用于確定數(shù)據(jù)輸出的寬度、精度、小數(shù)位數(shù)、對齊方式等,用于產(chǎn)生更規(guī)范整齊的輸出,表3-3列出了字段寬度修飾符。

修飾符格式說明意義m%md以寬度m輸出整型數(shù),不足m時(shí),左補(bǔ)空格0m或.m整型%0md

以寬度m輸出整型數(shù),不足m時(shí),左補(bǔ)零m.n%m.nf%m.ns以寬度m輸出實(shí)型小數(shù),小數(shù)位為n位,實(shí)際小數(shù)位不足時(shí)后補(bǔ)0,輸出字符串時(shí),m決定輸出的寬度,n是子串中n個(gè)字符輸出.表3-3字段寬度修飾符3.2.1數(shù)據(jù)格式輸出——printf()函數(shù)例如:voidmain(){inta=123;floatx=12.345678;printf("%5d,%5.2f\n",a,x);printf("%2d,%2.1f\n",a,x);}程序的運(yùn)行結(jié)果如下:說明:當(dāng)指定寬度小于數(shù)據(jù)的實(shí)際寬度時(shí),對整數(shù),按該數(shù)的實(shí)際寬度輸出。對浮點(diǎn)數(shù),相應(yīng)小數(shù)位的數(shù)四舍五入。若度寬小于等于浮點(diǎn)數(shù)整數(shù)部分的寬度,則該浮點(diǎn)數(shù)按實(shí)際位數(shù)輸出,但小數(shù)位數(shù)仍遵守寬度修飾符給出的值。3.2.1數(shù)據(jù)格式輸出——printf()函數(shù)(2)對齊方式修飾符一般的輸出數(shù)據(jù)為右對齊格式,加“-”號,變?yōu)椤白髮R”方式。例如:voidmain(){inti=123;floata=12.34567;printf("%6d%10.4f\n",i,a);printf("%-6d%10.4f\n",i,a);printf("%6d%-10.4f\n",i,a);}程序運(yùn)行結(jié)果如圖所示:3.2.1數(shù)據(jù)格式輸出——printf()函數(shù)(3)長度修飾符l和h可以與輸出格式字符d、f、u等連用,以說明是用long型或short型格式輸出數(shù)據(jù),如:%hd短整型%lf雙精度型%ld長整型%hu無符號短整型2.普通字符普通字符包括可打印字符和轉(zhuǎn)義字符。可打印字符是一些說明字符,這些字符按原樣顯示在屏幕上轉(zhuǎn)義字符是不可打印的字符,它們其實(shí)是一些控制字符,控制產(chǎn)生特殊的輸出效果。常用的有“\t”,“\n”,其中\(zhòng)t為水平制表符,作用是跳到下一個(gè)水平制表位,“\n”為回車換行符,遇到“\n”,顯示自動(dòng)換到新的一行。3.2.1數(shù)據(jù)格式輸出——printf()函數(shù)例如:voidmain(){inti=123;longn=456;floata=12.34567,y=20.5;printf("i=%4d\ta=%7.4f\n\tn=%lu\n",i,a,n);printf("y=%5.2f%%\n",y);}程序運(yùn)行的輸出結(jié)果如下:3.2.1數(shù)據(jù)格式輸出——printf()函數(shù)3.2.2數(shù)據(jù)格式輸入——scanf()函數(shù)scanf()的功能:從鍵盤上輸入數(shù)據(jù),該輸入數(shù)據(jù)按指定的輸入格式被賦給相應(yīng)的輸入項(xiàng)。函數(shù)一般格式為:

scanf("控制字符串",輸入項(xiàng)地址列表);控制字符串規(guī)定數(shù)據(jù)的輸入格式,其內(nèi)容由格式說明和普通字符兩部分組成。輸入項(xiàng)地址列表由一個(gè)或多個(gè)變量地址組成,各變量地址之間用逗號“,”分隔。scanf()中各變量要加地址操作符,表示如下:

&變量名3.2數(shù)據(jù)格式輸入/輸出

【例3-2】已知華氏溫度求對應(yīng)的攝氏溫度。轉(zhuǎn)換公式為:y=5*(x-32)/9x表示華氏溫度,y攝氏溫度。源程序文件名:exp3_2.cpp#include<stdio.h>voidmain(){intfahr,sius;

/*變量fahr表示華氏溫度,變量sius表示攝氏溫度*/printf("請輸入華氏溫度=");scanf("%d",&fahr);

/*輸入fahr的值*/sius=5*(fahr-32)/9;printf("攝氏溫度=%d\n",sius);}控制字符串的兩個(gè)組成部分:格式說明和普通字符。1.格式說明格式說明規(guī)定輸入項(xiàng)中的變量以何種類型的數(shù)據(jù)格式被輸入,形式是:%[<修飾符>]<格式字符>各個(gè)格式字符及其意義見表3-5表3-5輸入格式字符格式字符意義舉例輸入形式d輸入一個(gè)十進(jìn)制整數(shù)scanf("%d",&a)15o輸入一個(gè)八進(jìn)制整數(shù)scanf("%o",&a)015x輸入一個(gè)十六進(jìn)制整數(shù)scanf("%x",&a)0x15f輸入一個(gè)小數(shù)形式的浮點(diǎn)數(shù)scanf("%f",&x)35680e輸入一個(gè)指數(shù)形式的浮點(diǎn)數(shù)scanf("%e",&x)3.568e+3c輸入一個(gè)字符scanf("%c",&ch)As輸入一個(gè)字符串scanf("%s",ps)ABCD3.2.2數(shù)據(jù)格式輸入——scanf()函數(shù)各修飾符是可選的,這些修飾符是:(1)字段寬度例:scanf("%3d",&a);輸入123456,按寬度3輸入一個(gè)整數(shù)123賦給變量a(2)l和h可與d、o、x一起使用,l表示輸入數(shù)據(jù)為長整數(shù),h表示輸入數(shù)據(jù)為短整數(shù),例:scanf("%ld%hd",&x,&i);x按長整型讀入,i按短整數(shù)讀入。(3)字符*表示按規(guī)定格式輸入但不賦予相應(yīng)變量,作用是跳過相應(yīng)的數(shù)據(jù)。例如:scanf(“%d%*d%d”,&x,&y,&z);執(zhí)行該語句,若輸入為“123”結(jié)果為x=1,y=3,z未賦值,2被跳過。(1,3,65536)3.2.2數(shù)據(jù)格式輸入——scanf()函數(shù)2.普通字符普通字符包括空格、轉(zhuǎn)義字符和可打印字符。(1)空格在有多個(gè)輸入項(xiàng)時(shí),一般用空格或回車作為分隔符,若以空格作分隔符,則當(dāng)輸入項(xiàng)中包含字符類型時(shí),可能產(chǎn)生非預(yù)期的結(jié)果,例如:scanf("%d%c",&a,&ch);輸入32q期望a=32,ch=q,但實(shí)際上,分隔符空格被讀入并賦給ch。(2)可打印字符例如:scanf("%d,%d,%c",&a,&b,&ch);當(dāng)輸入為:1,2,q即:a=1,b=2,ch=q若輸入為12q除a=1正確賦值外,對b與ch的賦值都不能正確賦值。這些可打印字符應(yīng)是輸入數(shù)據(jù)分隔符,scanf在讀入時(shí)自動(dòng)去除與可打印字符相同的字符。3.2.2數(shù)據(jù)格式輸入——scanf()函數(shù)使用scanf函數(shù)還必須注意以下幾點(diǎn):(1)scanf函數(shù)中沒有精度控制。如:scanf("%5.2f",&a);是非法的。(2)在輸入多個(gè)數(shù)值數(shù)據(jù)時(shí),若格式控制串中沒有非格式字符作輸入數(shù)據(jù)之間的間隔則可用空格或回車作間隔。(3)如果格式控制串中有非格式字符則輸入時(shí)也要輸入該非格式字符。例如:scanf("%d,%d,%d",&a,&b,&c);其中用非格式符“,”作間隔符,故輸入時(shí)應(yīng)為:5,6,7又如:scanf("a=%d,b=%d,c=%d",&a,&b,&c);則輸入應(yīng)為a=5,b=6,c=73.2.2數(shù)據(jù)格式輸入——scanf()函數(shù)1.字符輸入函數(shù)——getchar()getchar()函數(shù)的格式:getchar();getchar()函數(shù)的作用:從系統(tǒng)的輸入設(shè)備鍵盤輸入一個(gè)字符。

從功能角度來看,scanf()函數(shù)可以完全代替getchar()函數(shù)。例:charc1;則c1=getchar();可使用等價(jià)語句:scanf("%c",&c1);3.3字符數(shù)據(jù)非格式輸入/輸出函數(shù)

說明:(1)getchar()函數(shù)一次只能返回一個(gè)字符,即調(diào)用一次只能輸入一個(gè)字符。(2)程序第一次執(zhí)行g(shù)etchar()函數(shù)時(shí),系統(tǒng)暫停等待用戶輸入,直到按回車鍵結(jié)束,如果用戶輸入了多個(gè)字符,則該函數(shù)只取第一個(gè)字符,多余的字符(包括換行符'\n')存放在鍵盤緩沖區(qū)中,如果程序再一次執(zhí)行g(shù)etchar()函數(shù),則程序就直接從鍵盤緩沖區(qū)讀入,直到讀完后,如果還有g(shù)etchar()函數(shù)才會暫停,再次等待用戶輸入。3.3字符數(shù)據(jù)非格式輸入/輸出函數(shù)

2.字符輸出函數(shù)——putchar()putchar()函數(shù)的格式:

putchar(ch);該函數(shù)的功能是向顯示器終端輸出一個(gè)字符。其中,ch可以是一個(gè)字符變量或常量,也可以是一個(gè)轉(zhuǎn)義字符。說明:(1)putchar()函數(shù)只能用于單個(gè)字符的輸出,且一次只能輸出一個(gè)字符。(2)從功能角度printf()函數(shù)可以完全代替putchar()函數(shù),其等價(jià)形式:printf("%c",ch)。3.3字符數(shù)據(jù)非格式輸入/輸出函數(shù)

例3-8輸入一個(gè)字符,回顯該字符并輸出其ASCII碼值。#include<stdio.h>voidmain(){charch1,ch2;ch1=getchar();ch2=getchar();putchar(ch1);putchar(ch2);printf("%C\n%c",ch1,ch2);}程序運(yùn)行后,若ch1、ch2分別得到字符A、B,應(yīng)輸入AB<回車>,如果輸入A<回車>,則實(shí)際上ch1被賦值為字符A,ch2被賦值為字符換行符'\n‘簡介:行輸入行輸出(字符串)gets(),puts()3.3字符數(shù)據(jù)非格式輸入/輸出函數(shù)

補(bǔ)充例子:編一程序,從鍵盤輸入一個(gè)大寫字母,要求改用小寫字母輸出(提示:大寫字母對應(yīng)的ASCII碼序號比相應(yīng)的小寫字母的ASCII碼序號小32)。#include"stdio.h"voidmain(){charc1,c2;c1=getchar();printf("%c,%d\n",c1,c1);c2=c1+32;printf("%c,%d\n",c2,c2);}應(yīng)用程序舉例

程序運(yùn)行情況:A↙A,65a,97補(bǔ)充例子:

輸入時(shí)間(小時(shí),分和秒)然后使用輸出消息框輸出其計(jì)多少秒。分析:hh代表小時(shí),mm代表分鐘,ss代表秒,tss代表總的秒數(shù)值,則:其總時(shí)間秒:tss=hh*3600+mm*60+ss程序代碼如下:voidmain(){inthh,mm,ss;longtss;/*定義為長整型數(shù)據(jù),因int整數(shù)的最大數(shù)據(jù)是32767*/printf("Enterhh:mm:ss=");/*提示用戶輸入數(shù)據(jù)*/scanf("%d:%d:%d",&hh,&mm,&ss);/*輸入數(shù)據(jù)之間需用“:”分隔*/tss

溫馨提示

  • 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

提交評論