L3CH3IO函數(shù)和順序程序_第1頁
L3CH3IO函數(shù)和順序程序_第2頁
L3CH3IO函數(shù)和順序程序_第3頁
L3CH3IO函數(shù)和順序程序_第4頁
L3CH3IO函數(shù)和順序程序_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3講輸入輸出函數(shù)

和順序程序

(第3章)湖南工業(yè)大學(xué)計算機與通信學(xué)院湖南省普通高等學(xué)校省級精品課程《C語言程序設(shè)計》上講要點復(fù)習(xí)(快速提問1)各種數(shù)據(jù)類型之間主要在哪三方面不同?了解C語言常用的三種基本數(shù)據(jù)類型。表達式的作用、構(gòu)成、二種用法?(重點)什么是符號常量?使用符號常量的優(yōu)點?什么是變量?(重點、難點)什么是賦值運算?

(重點、難點)標識符的命名規(guī)則?運算的優(yōu)先級和結(jié)合性的概念。本講內(nèi)容1.函數(shù)和標準函數(shù)2.字符輸出函數(shù)putchar()3.字符輸入函數(shù)getchar()4.格式輸出函數(shù)printf()5.格式輸入函數(shù)scanf()6.簡單程序設(shè)計基本要求掌握四個常用標準函數(shù)的用法難點是格式輸出函數(shù)printf()掌握程序設(shè)計的基本步驟(三部曲)進一步了解語句的概念和分類進一步了解C語言程序的結(jié)構(gòu)1.函數(shù)和標準函數(shù)C語言:邏輯上,C程序由一組函數(shù)組成函數(shù)由語句組成,構(gòu)成一個相對獨立功能的程序。標準函數(shù)自定義函數(shù)(第6章)輸入輸出函數(shù)常用的標準輸入輸出函數(shù)字符輸出函數(shù):putchar()鍵盤輸入函數(shù):getchar()格式輸出函數(shù):printf()格式輸入函數(shù):scanf()使用這組函數(shù)前必須要用“文件包含命令”:#include<stdio.h>或#include“stdio.h”功能簡單。容易使用功能較強。容易較繁3.1問題提出順序結(jié)構(gòu)是最簡單的一種結(jié)構(gòu),即按書寫的先后順序執(zhí)行它所包含的內(nèi)容。循環(huán)結(jié)構(gòu)選擇結(jié)構(gòu)順序結(jié)構(gòu)3種基本結(jié)構(gòu)BA順序結(jié)構(gòu)中的語句只執(zhí)行一次3.1問題提出計算機完成一個任務(wù)的具體步驟設(shè)計程序,也就是設(shè)計解題步驟算法01將描述好的算法輸入計算機程序輸入03編寫程序02利用一種計算機能理解的語言來描述算法3.1問題提出圖3-1C程序的構(gòu)成

C程序的構(gòu)成C語言有九種控制語句??煞殖梢韵氯悾?1).條件判斷語句:if語句、switch語句;(2).循環(huán)執(zhí)行語句:dowhile語句、while語句、for語句;(3).轉(zhuǎn)向語句:break語句、goto語句(此語句盡量少用)、continue語句、return語句。3.2C語言的基本語句C程序的執(zhí)行部分是由語句組成的。程序的功能也是由執(zhí)行語句實現(xiàn)的。C語句:以“;”作分隔符,編譯后產(chǎn)生機器指令。控制語句用于控制程序的流程,以實現(xiàn)程序的各種結(jié)構(gòu)方式。它們由特定的語句定義符組成。由表達式加上分號“;”組成。其一般形式為:表達式;執(zhí)行表達式語句就是計算表達式的值。表達式語句任何表達式都可以加上分號而成為語句。例如:y+z是一個加法表達式y(tǒng)+z;加法運算語句,但計算結(jié)果不能保留,無實際意義;i++;自增1語句,i值增1。x=y+z;賦值語句3.2C語言的基本語句由函數(shù)調(diào)用加上分號“;”組成。其一般形式為:函數(shù)名(實際參數(shù)表);只有分號“;”組成的語句稱為空語句??照Z句是什么也不執(zhí)行的語句。在程序中空語句可用來作空循環(huán)體或程序流程的轉(zhuǎn)向點。把多個語句用括號{}括起來組成的一個語句稱復(fù)合語句。在程序中應(yīng)把復(fù)合語句看成是單條語句,而不是多條語句。函數(shù)調(diào)用語句空語句復(fù)合語句例如:printf(“hello”);scanf(“%d”,&a);復(fù)合語句在什么情況下使用復(fù)合語句?條件語句和循環(huán)語句在語法上只允許帶一條語句當分支和循環(huán)中需要進行多項操作時{t=x;x=y;y=t;}被當作一條語句來處理2.字符輸出函數(shù)

(§3.3.1)

程序結(jié)果

#include<stdio.h>voidmain(){chara=‘Y';putchar(‘A’);putchar('\n');putchar(a);}AY控制字符,表示換行字符輸出函數(shù)格式:putchar(字符變量或常量);功能:在顯示器上輸出單個字符。3.字符輸入函數(shù)

(§3.3.1)說明:1)沒有參數(shù)。

2)函數(shù)值為接收的字符。通常的用法:作為賦值語句的右部表達式,如,#include<stdio.h>main(){charc;c=getchar();putchar(c);}注意格式:getchar()功能:從標準輸入設(shè)備(鍵盤)上輸入一個字符假設(shè)輸入A,則輸出結(jié)果為:A使用getchar函數(shù)應(yīng)注意幾個問題getchar函數(shù)只能接受單個字符輸入多于一個字符時,只接收第一個字符。輸入數(shù)字也按字符處理。charc;c=getchar();putchar(c);假設(shè)輸入123,則輸出結(jié)果為:14.格式輸出函數(shù)printf()函數(shù)(§3.3.2)功能:向缺省輸出設(shè)備(顯示器)輸出數(shù)據(jù)語法:

printf(格式控制,輸出表列)格式控制:包括:普通字符(可打印字符、轉(zhuǎn)義字符):原樣輸出格式說明:由%符號接格式字符組成,格式字符是含有特定含義的單個字符,它決定數(shù)據(jù)以何種類型輸出。如:%f,%d等。輸出表列:是用“,”號隔開的變量或表達式序列,也可以沒有。例:printf("a=%d'\n'b=%f",a,b);格式說明個數(shù)與輸出表達式的個數(shù)要一致

可打印字符一組用逗號分隔的表達式轉(zhuǎn)義字符格式說明printf()函數(shù)的格式控制字符串printf("a=%d'\n'b=%f",a,b);普通字符:可打印字符(非控制字符):原樣輸出轉(zhuǎn)義字符(控制字符):執(zhí)行控制功能

格式說明:說明輸出表達式的輸出格式格式:%[<修飾符>]

<格式字符>(修飾符:可省略)如要輸出可打印字符%,則要用兩個%表示:%%。printf()函數(shù)的格式字符(表3-2)字符說明舉例結(jié)果d,i按帶符號的十進制整數(shù)輸出inta=567;printf(“%d”,a);567c按字符型輸出chara=65;printf(“%c”,a);Af按小數(shù)形式輸出實數(shù)floata=567.789;printf(“%f”,a);567.789000s按字符串輸出printf(“%s”,“ABC”);ABCE,e按指數(shù)形式輸出實數(shù)floata=567.789;printf(“%e”,a);5.677890e+02u按無符號十進制整數(shù)輸出inta=2;printf(“%u”,a);inta=-2;printf(“%u”,a);265534o按八進制無符號整數(shù)輸出inta=65;printf(“%o”,a);101X,x按十六進制無符號整數(shù)輸出inta=255;printf(“%x”,a);ffg按e和f格式中較短的一種輸出floata=567.789;printf(“%g”,a);567.789%%輸出百分號(%)printf(“%%”);%printf()函數(shù)的修飾符用于確定數(shù)據(jù)輸出的寬度、精度、小數(shù)位數(shù)、對齊方式等,產(chǎn)生更規(guī)范整齊的輸出修飾符是可選的當沒有修飾符時,按系統(tǒng)缺省設(shè)定顯示。20數(shù)據(jù)輸出類型按長整型輸出

對實數(shù),表示小數(shù)位數(shù),對字符串,表示截取的字符個數(shù)

輸出數(shù)據(jù)總寬度,若小于實際寬度,則按實際寬度輸出輸出數(shù)據(jù)總寬度大于實際寬度時,用0補足按左對齊方式輸出格式說明開始%-0m.nl<格式字符>3.3.2printf()函數(shù)%d按整型數(shù)據(jù)的實際長度輸出。m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補以空格,若大于m,則按實際位數(shù)輸出。輸出長整型數(shù)據(jù)。%d:用來輸出十進制整數(shù)。具體用法如下:%md%ldprintf(“%d”,567);輸出結(jié)果為:567inta=1234;printf(“%8d\n”,a);printf(“%08d\n”,a);printf(“%0+8d\n”,a);輸出結(jié)果:123400001234+0001234longa=65536;printf(“%d,%8ld\n”,a,a);

輸出結(jié)果:0,6553616位系統(tǒng)中的運行結(jié)果主要修飾符%m.nf:至少輸出m列,其中有n位小數(shù)若數(shù)值寬度小于m,則左端補空格。%-m.nf:至少輸出m列,其中有n位小數(shù)若數(shù)值寬度小于m,則右端補空格。例:整型數(shù)據(jù)的輸出:

inta=1234,c=-1;longb=2269978;printf("%dA\n",a);printf("%8dA\n",a);printf("%-8dA\n",a);printf("%8ldA\n",b);printf("%u,%d\n",c,c);輸出結(jié)果1234A□□□□1234A1234□□□□A□2269978A65535,-1

3.3.2printf()函數(shù)

%c:輸出一個字符。也可以指定字段寬度用"%mc"格式輸出。printf(“%c\n%3c”,’a’,’a’);輸出結(jié)果為:aa(此行a之前有2個空格)例:字符型數(shù)據(jù)的輸出。

charc='b';printf("%c,%d",c,c);輸出結(jié)果:b,98

3.3.2printf()函數(shù)

%s:例如:printf("%s","CHINA")輸出"CHINA"字符串(不包括雙引號)。%ms:輸出的字符串占m列,如字符串本身長度大于m,則突破獲m的限制,將字符串全部輸出。若串長小于m,則左補空格。

%-ms:如果串長小于m,則在m列范圍內(nèi),字符串向左靠,右補空格。

%m.ns:輸出占m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右側(cè),左補空格。

%-m.ns:其中m、n含義同上,n個字符輸出在m列范圍的左側(cè),右補空格。如果n>m,則自動取n值,即保證n個字符正常輸出。

%s:用來輸出一個字符串。具體用法如下:3.3.2printf()函數(shù)舉例說明

staticchara[]=“Hello,word!”;printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a);運行結(jié)果:Hello,world!

Hello,world!

HelloHelloHel

3.3.2printf()函數(shù)%f:不指定寬度,整數(shù)部分全部輸出并輸出6位小數(shù)。%m.nf:輸出共占m列,其中有n位小數(shù),如數(shù)值寬度小于m左端補空格。%-m.nf:輸出共占n列,其中有n位小數(shù),如數(shù)值寬度小于m右端補空格。

%f:用來輸出實型數(shù),以小數(shù)形式輸出。例:實型數(shù)據(jù)的輸出。floatf=123.456;printf("%f\n",f);printf("%10.2f\n",f);printf("%0.2f\n",f);printf("%12.3e\n",f);輸出結(jié)果:123.456000□□□□123.46123.46□□1.235e+002

3.3.2printf()函數(shù)

%e:以指數(shù)形式輸出實型數(shù)。floatf=123.456;printf(“%e,%.2e\n”,f,f);

輸出結(jié)果:1.234560e+002,1.23e+002%e:數(shù)字部分(又稱尾數(shù))輸出6位小數(shù),指數(shù)部分占5位或4位。%m.ne和%-m.ne:m、n和”-”字符含義與前相同。此處n指數(shù)據(jù)的數(shù)字部分的小數(shù)位數(shù),m表示整個輸出數(shù)據(jù)所占的寬度。

%g:自動選f格式或e格式中較短的一種輸出,且不輸出無意義的零。

舉例思考(寫出程序結(jié)果)#include<stdio.h>main(){ floatf1=100.15799,f2=12.55,f3=1.7; intn1=123,n2=45,n3=6;

printf("printfWITHOUTwidth:\n"); printf("%f\n%f\n%f\n",f1,f2,f3); printf("%d\n%d\n%d\n",n1,n2,n3);printf("printfWITHwidth:\n"); printf("%5.2f\n%6.1f\n%3.0f\n",f1,f2,f3); printf("%5d\n%6d\n%3d\n\n",n1,n2,n3);}5.格式輸入函數(shù)scanf()(§3.3.3)最常用格式:

scanf(格式控制,地址表列)功能:

在標準輸入裝置(鍵盤)上按指定格式輸入各種類型的數(shù)據(jù),分別存放到地址表列給出的變量地址中。地址表列是變量的地址或字符串首地址,因此要加上&符號。格式控制與printf格式輸出函數(shù)基本相同。scanf("%d,%f”,&a,&b);格式說明地址列表3.3.3scanf()函數(shù)普通字符scanf("%d,%f”,&a,&b);格式說明地址列表3.3.3scanf()函數(shù)普通字符scanf()的格式字符(表3–3)d輸入一個十進制整數(shù)常用f輸入一個十進制實數(shù)常用c輸入一個字符常用s輸入一個字符串(用于字符數(shù)組,第5章)常用o輸入一個八進制整數(shù)x輸入一個十六進制整數(shù)e輸入一個指數(shù)形式的浮點數(shù)親,請注意(6點)哦:

(1)輸入數(shù)據(jù)的間隔用↙、Tab或空格,不能用“,”,系統(tǒng)會自動忽略空格,識別出每一個數(shù)據(jù)。

scanf(“%d%d”,&a,&b);輸入如下:5

6

(5和6中間可以是一個或多個空格的哦?。?)scanf函數(shù)使用地址量接受數(shù)據(jù),因而變量前面要加&,表示將鍵盤輸入的數(shù)據(jù)存放到變量所在的存儲單元中。(3)允許在格式控制部分使用%格式字符和普通字符,但普通字符要照原樣輸入。scanf()的格式控制字符串中普通字符是不顯示的,而是規(guī)定了輸入時必須輸入的字符3.3.3scanf()函數(shù)中的普通字符scanf("%d,%d",&a,&b);當輸入為:1,2。即:a=1,b=2若輸入為1

2呢?則將1傳給a,因缺少普通字符“,”,對b賦值將以失敗告終。親,普通字符在輸入數(shù)據(jù)也要輸入哦!比較好的方法是:printf("pleaseinputaandb:/n");scanf("%d%d",&a,&b);第2章簡單的C程序設(shè)計注意(6點):(4)指定數(shù)據(jù)長度時,系統(tǒng)自動截取數(shù)據(jù)長度。(5)在%后加“*”表示跳過相應(yīng)的數(shù)據(jù)。(6)輸入數(shù)據(jù)不能規(guī)定精度如scanf("%7.2f",&a);是錯誤的。例:scanf("%2d%2d",&a,&b);例:scanf("%2d%*3d%2d",&a,&b);當輸入123456↙時,12→a,34→b當輸入1234567↙時,12→a,67→b用“%c”格式符時,空格和轉(zhuǎn)義字符作為有效字符輸入。

例如:scanf(“%c%c%c”,&c1,&c2,&c3);若輸入a

b

c,則a傳送給c1,空格傳送給c2,b傳送給c3。6.簡單程序設(shè)計(§3.4)復(fù)習(xí):第1,2講順序結(jié)構(gòu)程序:按書寫的先后順序執(zhí)行各語句

程序設(shè)計的三個主要步驟:

分析問題、算法設(shè)計、編程調(diào)試例1求梯形面積的程序求梯形面積的程序,梯形的上底、下底和高由鍵盤輸入。解題三部曲1.分析輸入:梯形的上底a、下底b和高h計算方法(數(shù)學(xué)知識):梯形面積s=(a+b)×h÷22.算法(順序結(jié)構(gòu)可以不用流程圖)2.1先定義四個實型變量:上底a、下底b、高h、梯形面積s2.2處理過程(順序結(jié)構(gòu))輸入上底a、下底b和高h;計算s=(a+b)×h÷2輸出梯形面積s3編碼程序main(){floata,b,h,s;printf("pleaseinputa,b,h:");scanf("%f%f%f",&a,&b,&h);s=0.5*(a+b)*h;printf("a=%5.2fb=%5.2fh=%5.2f",

a,b,h);printf("s=%7.4f",s);}定義變量數(shù)據(jù)輸入結(jié)果輸出計算面積小結(jié)一般,程序包含三部分輸入數(shù)據(jù)計算處理輸出數(shù)據(jù)小結(jié):程序設(shè)計三部曲分析(分析問題):根據(jù)專業(yè)知識,確定解題方案;不要考慮C語言的語法細節(jié)流程(算法設(shè)計):將解題方案細化出各個處理步驟細化到能用C語言的語句(包括函數(shù))實現(xiàn)注意輸入、處理和輸出三個環(huán)節(jié)的邏輯性分析數(shù)據(jù),采用合適數(shù)據(jù)類型表示;無二義性地描述上述處理步驟如,流程圖(特別是選擇程序段,見第四章)要了解C語言,但也不要考慮C語言的語法細節(jié)編碼(編程調(diào)試):嚴格遵循語法(要考慮C語言的語法細節(jié)),

用C語言的說明和語句描述數(shù)據(jù)和處理過程例2:已知某同學(xué)三門課程的成績,求平均分1.分析輸入:三門課的成績computer、math、english計算(數(shù)學(xué)知識):

平均分average=(computer+math+english)/3數(shù)據(jù)類型:實型2.算法2.1先定義四個實型變量:

computer、math、english、average2.2處理過程(順序結(jié)構(gòu))輸入三門課成績;計算average=(computer+math+english)/3輸出平均分average3.編程

3.4算法與程序?qū)崿F(xiàn)已知某同學(xué)三門課程的成績,求平均分。#include<stdio.h>voidmain(){floatyu,shu,wai,average;printf("pleaseinputyu,shu,wai:");scanf("%f,%f,%f",&yu,&shu,&wai);average=(yu+shu+wai)/3.0;printf("theaverageis:%7.2f\n",average);}分析程序親,請注意:輸入分數(shù)時要輸入,哦!

3.4算法與程序?qū)崿F(xiàn)根據(jù)求根公式,先求b*b-4*a*c的值存入變量d,再調(diào)用求平方根函數(shù)sqrt(),求出sqrt(d)/(2*a)的值存入q;求出-b/(2*a)的值存入p求方程ax2+bx+c=0的實根。分析完成了,你會編程序嗎?分析定義變量a,b,c,x1,x2,d,p,q調(diào)用scanf函數(shù)輸入實數(shù)a,b,c,且要求滿足a不等于0,b2-4ac>0求方程的根x1、x2,x1=p+q;,x2=p-q;編程調(diào)用printf函數(shù)輸出方程的根

3.4算法與程序?qū)崿F(xiàn)#include<stdio.h>#include<math.h>main(){floata,b,c,d,x1,x2,p,q;scanf("a=%f,b=%f,c=%f",&a,&b,&c);d=b*b-4*a*c;p=-b/(2*a);q=sqrt(d)/(2*a);x1=p+q;x2=p-q;printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2);}求方程ax2+bx+c=0的實根。你寫對了嗎?小結(jié):學(xué)寫簡單的順序結(jié)構(gòu)程序最簡單的順序結(jié)構(gòu)程序的組成一組編譯預(yù)處理命令一個主函數(shù)編譯預(yù)處理命令如果要使用庫函數(shù)(標準函數(shù)),scnaf()、printf()、getchar()、putchar()等應(yīng)該使用編譯預(yù)處理命令,將相應(yīng)的頭文件包含進來:#include<stdio.h>/*注意后面沒有“;”*/主函數(shù)說明部分:主要定義函數(shù)中要用到的一些變量。數(shù)據(jù)提供部分:主要有scanf()、g

溫馨提示

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

評論

0/150

提交評論