版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章qq順序結(jié)構(gòu)程序設(shè)計(jì)
本章主要內(nèi)容3.1
順序結(jié)構(gòu)程序的引入3.2數(shù)據(jù)的輸入3.3數(shù)據(jù)的輸出3.4基本語(yǔ)句及程序規(guī)范3.5順序結(jié)構(gòu)程序設(shè)計(jì)及實(shí)例3.1順序結(jié)構(gòu)程序的引入3.1.1問題與引例【引例】從鍵盤輸入一個(gè)3位正整數(shù)m,然后將其各位數(shù)字分離為a、b、c,并輸出。問題分析:將一個(gè)3位數(shù)的各位數(shù)字分離,實(shí)際上就是計(jì)算出各位數(shù)字的值,可以利用下列方法進(jìn)行運(yùn)算。百位:a=m/100十位:b=(m%100)/10個(gè)位:c=m%10對(duì)程序而言,順序結(jié)構(gòu)就是指按照書寫順序,自上而下順次執(zhí)行每一條語(yǔ)句。AB順序結(jié)構(gòu)ab3.1.2順序結(jié)構(gòu)的基本概念3.1.3順序結(jié)構(gòu)流程圖輸入數(shù)據(jù)數(shù)據(jù)處理輸出數(shù)據(jù)3.1.4順序結(jié)構(gòu)舉例【例3.1】從鍵盤輸入兩個(gè)整數(shù)a與b,將它們交換后輸出。算法分析在此程序中,可以使用scanf函數(shù)語(yǔ)句實(shí)現(xiàn)隨機(jī)輸入,將從鍵盤輸入的2個(gè)數(shù)分別賦給變量a、b;要交換兩個(gè)變量的值,可采用借助中間變量t的方法實(shí)現(xiàn)數(shù)據(jù)交換后輸出。#include<stdio.h>//標(biāo)準(zhǔn)庫(kù)函數(shù)聲明voidmain(){inta,b,t;//定義3個(gè)整型變量
printf("請(qǐng)輸入兩個(gè)數(shù):");//輸入提示
scanf("%d,%d",&a,&b);//格式化輸入函數(shù)
printf("交換前:a=%d,b=%d\n",a,b);//輸出交換前的兩個(gè)數(shù)t=a;a=b;b=t;//此前3句為兩數(shù)交換語(yǔ)句
printf("交換后:a=%d,b=%d\n",a,b);//輸出交換后的兩個(gè)數(shù)}思考:能否不借助于中間變量實(shí)現(xiàn)兩個(gè)整數(shù)的交換?8
1.getchar()函數(shù)的用法從標(biāo)準(zhǔn)輸入輸出設(shè)備上輸入一個(gè)字符,一般是鍵盤使用格式:ch=getchar();
例:#include<stdio.h>voidmain(){charc;c=getchar();printf("c=%d\n",c);}鍵盤上輸入的數(shù)字、空格、回車、逗號(hào)等都將作為一個(gè)字符輸入3.2數(shù)據(jù)的輸入#include<stdio.h>
//輸入小寫字母,輸出大寫字母voidmain(){charch1,ch2;//聲明變量ch1=getchar();
//從鍵盤輸入一個(gè)字符,并存入變量ch1printf("%c,%d\n",ch1,ch1);//輸出字母和其ASCII碼值c2=c1-32;
//小寫字母轉(zhuǎn)化為大寫字母
printf("%c,%d\n",ch2,ch2);
//輸出對(duì)應(yīng)的小寫字母和ASCII碼值}【例3.2】從鍵盤輸入一個(gè)小寫字母,輸出其對(duì)應(yīng)的大寫字母。注意點(diǎn):(1)getchar()是一個(gè)無(wú)參函數(shù),函數(shù)的返回值就是從鍵盤讀入的字符。(2)getchar()函數(shù)只能接收單個(gè)字符,輸入數(shù)字、空格、回車等也按字符處理。當(dāng)輸入多個(gè)字符時(shí),只接收第一個(gè)字符。(3)使用getchar()函數(shù)前必須包含文件"stdio.h"。(4)執(zhí)行g(shù)etchar()輸入字符時(shí),輸入后需要按回車鍵,這樣程序才會(huì)響應(yīng)輸入,繼續(xù)執(zhí)行后續(xù)語(yǔ)句。即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量中?!暗刂繁砹小笔怯扇舾蓚€(gè)地址組成的表列scanf("%d,%f",&a,&b);格式說明地址表列3.2.2格式化輸入函數(shù)scanf()格式輸入函數(shù)scanf
(格式控制字符串,地址表列);”&”是”地址運(yùn)算符”,&a指在a內(nèi)存中的地址。scanf()函數(shù)的格式說明(二)格式說明以%開始,以一個(gè)格式字符結(jié)束。格式字符格式字符含義d輸入一個(gè)帶符號(hào)的十進(jìn)制整數(shù)o輸入一個(gè)無(wú)符號(hào)的八進(jìn)制整數(shù)x輸入一個(gè)無(wú)符號(hào)的十六進(jìn)整數(shù)u輸入一個(gè)無(wú)符號(hào)的十進(jìn)制整數(shù)f/e用來輸入實(shí)數(shù),可以用小數(shù)形式或指數(shù)形式輸入c輸入一個(gè)單字符s輸入一個(gè)字符串scanf的附加格式說明字符字符說明l用于輸入整型數(shù)據(jù)(可用%ld,%lo,%lx)以及型數(shù)據(jù)(用%lf或%le)h用于輸入短整型數(shù)據(jù)(可用%hd,%ho,%hx)域?qū)捴付ㄝ斎霐?shù)據(jù)所占寬度(列數(shù)),域?qū)拺?yīng)為正整數(shù)*表示本輸入項(xiàng)在讀入后不賦給相應(yīng)的變量14使用scanf()函數(shù)需注意:(1)scanf()函數(shù)中一定給出變量地址,不可是變量名,否則出錯(cuò)。如:scanf("%d",a);錯(cuò)
scanf("%d",&a);對(duì)(2)scanf()函數(shù)可以設(shè)置輸入寬度,不能設(shè)置精度
floata; scanf("%5f",&a); 正確
scanf("%5.2f",&a);非法(3)輸入多個(gè)數(shù)據(jù)時(shí),格式控制串中沒有非格式字符,則輸入時(shí)數(shù)據(jù)間的分隔符可用空格、Tab鍵、回車鍵。如:scanf("%d%d%f",&a,&b,&c);格式輸入函數(shù)-scanf函數(shù)15(4)用連續(xù)%c輸入字符數(shù)據(jù)時(shí),任意字符都有效
scanf("%c%c%c",&a,&b,&c);printf("a=%c,b=%c,c=%c",a,b,c);
輸入:A,B,C
輸出:a=A,b=,,c=B
(5)如果格式控制字符串中有非格式字符,則輸入時(shí)也要輸入非格式字符。scanf("%d,%d,%d",&a,&b,&c);
輸入應(yīng)為:5,6,7若為:scanf("a=%d,b=%d,c=%d",&a,&b,&c);
輸入應(yīng)為:a=5,b=6,c=716(6)
輸入輸出格式控制符必須匹配,否則不能正確輸出
設(shè):從鍵盤輸入:1020.5<CR>
,分析各程序的輸出
voidmain(){inta;floatb;scanf("%d%d",&a,&b);printf("%d,%f",a,b); }voidmain(){inta;floatb;scanf("%d%f",&a,&b);printf("%d,%f\n",a,b);}voidmain(){inta;floatb;scanf("%d%d",&a,&b);printf("%d,%d",a,b); }17(7)遇到寬度設(shè)置,認(rèn)為數(shù)據(jù)輸入結(jié)束123.000000,456 voidmain() { intx; doublem; scanf("%4lf%d",&m,&x); printf("%lf,%d\n",m,x); } 若輸入123.456□23,則輸出結(jié)果是?18#include<stdio.h>main(){ inta,b; printf("Pleaseinputaandb:"); scanf("%2d%*2d%2d",&a,&b); printf("a=%d,b=%d,a+b=%d\n",a,b,a+b);}(8)
%*
表示本輸入項(xiàng)在讀入后不賦給相應(yīng)變量19
putchar()向標(biāo)準(zhǔn)輸入輸出設(shè)備上輸出一個(gè)字符,一般是顯示器。使用格式:putchar(ch);已定義: intc;c='a';若想輸出字符a,可以用幾種方式?
putchar(c);
或putchar(‘a(chǎn)’);
或putchar(97);對(duì)于不可打印的字符,輸出方式有兩種:
putchar(012);和putchar('\12');3.3.1字符輸出函數(shù)putchar()3.3數(shù)據(jù)的輸出例:輸出控制字符、轉(zhuǎn)義字符。#include<stdio.h>voidmain(){putchar('\101');putchar('\n');putchar('\\');}例如:
printf("a=%d,b=%f",a,b);21調(diào)用格式:
printf("格式控制字符串",輸出表列);格式控制:格式說明(%格式字符)+普通字符輸出表列:即需要輸出的數(shù)據(jù),可以是表達(dá)式
函數(shù)名輸出表列普通字符格式說明:%格式說明符3.3.2格式化輸出函數(shù)printf()printf函數(shù)常用類型格式符表格式字符格式字符含義d以十進(jìn)制形式輸出一個(gè)帶符號(hào)的整數(shù)(默認(rèn)正數(shù)不輸出符號(hào))o以八進(jìn)制形式輸出一個(gè)無(wú)符號(hào)的整數(shù)(默認(rèn)不輸出前導(dǎo)符0)x,X以十六進(jìn)制形式輸出一個(gè)無(wú)符號(hào)的整數(shù)(默認(rèn)不輸出前導(dǎo)符0x或0X)u以十進(jìn)制形式輸出一個(gè)無(wú)符號(hào)的整數(shù)f以小數(shù)形式輸出帶符號(hào)的實(shí)數(shù)(包括單、雙精度)e,E以指數(shù)形式輸出帶符號(hào)的實(shí)數(shù)g,G選擇%f或%e格式輸出實(shí)數(shù)c輸出一個(gè)單字符s輸出一個(gè)字符串231.
標(biāo)志:-、+、#、空格、0的意義如下:
- 結(jié)果左對(duì)齊,右邊填空格
+ 輸出符號(hào)(正號(hào)或負(fù)號(hào))(只對(duì)十進(jìn)制數(shù))
空格 輸出值為正時(shí)冠以空格,為負(fù)時(shí)冠以負(fù)號(hào)
#
對(duì)c,s,d,i,u類無(wú)影響;對(duì)o類,在輸出時(shí)加前綴0;對(duì)x類,在輸出時(shí)加前綴0x;對(duì)e,g,f類,確保出現(xiàn)小數(shù)點(diǎn),即使無(wú)小數(shù)位時(shí)亦如此
0 右對(duì)齊輸出數(shù)據(jù)時(shí),不夠?qū)挾妊a(bǔ)0
Printf()函數(shù)24若實(shí)際位數(shù)多于定義的寬度:則按實(shí)際位數(shù)輸出。若實(shí)際位數(shù)少于定義的寬度:默認(rèn)右對(duì)齊,有負(fù)號(hào)左對(duì)齊n:
精度m:
域?qū)挘摧敵鲰?xiàng)在輸出設(shè)備上所占的寬度
輸出實(shí)型數(shù)據(jù),n指定實(shí)型數(shù)據(jù)所占的小數(shù)位數(shù)輸出字符串,n指定最多輸出的字符個(gè)數(shù)域?qū)捈熬龋╩.n)25例1:printf("%4d,%-4d,%4d",a,a,b);
若a=123,b=12345
則輸出結(jié)果是:□123,123□,12345例2:printf("%lf,%8.2lf\n",b,b);
若b=123.4567
則輸出結(jié)果是:123.456700,□□123.46例3:printf("%s,%8s,%8.3s","china","china","china");
則輸出結(jié)果是:china,□□□china,□□□□□chi格式輸出函數(shù)-printf函數(shù)26#include<stdio.h>main(){inta=100;floatb=123.255;printf("a=%d\n",a);printf("a=%10d\n",a);printf("a=%-10d\n",a);printf("a=%+d\n",a);printf("a=%d\n",a);printf("a=%#o\n",a);printf("a=%#x\n",a);printf("b=%07.1f\n",b);}//a=100
//a=□□□□□□□100//a=100□□□□□□□
//a=+100//a=□100//a=0144//a=0x64//b=00123.33.4基本語(yǔ)句及程序規(guī)范1、控制語(yǔ)句控制語(yǔ)句完成一定的控制功能。C語(yǔ)言只有9條控制語(yǔ)句,又可細(xì)分為三種:(1)選擇結(jié)構(gòu)控制語(yǔ)句(又稱為條件語(yǔ)句)
if()~else~,switch()~(2)循環(huán)結(jié)構(gòu)控制語(yǔ)句
do~while(),for()~,while()~,break,continue(3)其它控制語(yǔ)句
goto,return3.4.1C語(yǔ)言的基本語(yǔ)句2、函數(shù)調(diào)用語(yǔ)句函數(shù)調(diào)用語(yǔ)句由一次函數(shù)調(diào)用加一個(gè)分號(hào)(語(yǔ)句結(jié)束標(biāo)志)構(gòu)成。例如:printf("ThisisaCfunctionstatement.");3、表達(dá)式語(yǔ)句表達(dá)式語(yǔ)句由表達(dá)式后加一個(gè)分號(hào)構(gòu)成。最典型的表達(dá)式語(yǔ)句是,在賦值表達(dá)式后加一個(gè)分號(hào)構(gòu)成的賦值語(yǔ)句。例如:“num=5”是一個(gè)賦值表達(dá)式,而“num=5;”卻是一個(gè)賦值語(yǔ)句。4、空語(yǔ)句空語(yǔ)句僅由一個(gè)分號(hào)構(gòu)成。顯然,空語(yǔ)句什么操作也不執(zhí)行。例如,下面就是一個(gè)空語(yǔ)句:;C語(yǔ)言語(yǔ)句概述5、復(fù)合語(yǔ)句復(fù)合語(yǔ)句是由大括號(hào)括起來的一組(也可以是1條)語(yǔ)句構(gòu)成。例如:
main(){……{……}//復(fù)合語(yǔ)句……}注意:
(1)在語(yǔ)法上和單一語(yǔ)句相同,即單一語(yǔ)句可以出現(xiàn)的地方,也可使用復(fù)合語(yǔ)句。右括號(hào)后不需要分號(hào)。(2)復(fù)合語(yǔ)句可以嵌套,即復(fù)合語(yǔ)句中也可出現(xiàn)復(fù)合語(yǔ)句。C語(yǔ)言的語(yǔ)句概述3.4.2程序的風(fēng)格與基本規(guī)范1.程序風(fēng)格最基本的是縮進(jìn)、花括號(hào)的位置以及換行等2.程序設(shè)計(jì)基本規(guī)范程序設(shè)計(jì)主要原則是“清晰第一,效率第二”,限制使用goto語(yǔ)句。(1)適當(dāng)增加注釋,并保持注釋與代碼完全一致。(2)每個(gè)源程序文件,都有文件頭說明。(3)每個(gè)函數(shù),都有函數(shù)頭說明。(4)定義標(biāo)識(shí)符時(shí),盡量“見名知義”,并通過注釋反映其含義。(5)利用縮進(jìn)來顯示程序的邏輯結(jié)構(gòu),縮進(jìn)量一致并以Tab鍵為單位,定義Tab為6個(gè)字節(jié)。(6)注釋可以與語(yǔ)句在同一行,也可以在上一行。(7)空行和空白字符也是一種特殊注釋。3.5.1順序結(jié)構(gòu)程序設(shè)計(jì)1.問題分析2.算法分析3.代碼設(shè)計(jì)4.運(yùn)行調(diào)試3.5順序結(jié)構(gòu)程序設(shè)計(jì)及實(shí)例【例3.7】已知圓柱的半徑和高,求圓柱的體積。#include<stdio.h>voidmain(){floatr,h,v;//定義變量:r為圓柱的底面半徑,h為高,v為體積printf("請(qǐng)輸入圓柱的底面半徑和高:");//輸出提示信息scanf("%f%f",&r,&h);//從鍵盤上輸入半徑和高v=3.1415926*r*r*h;//按公式計(jì)算圓柱體積printf("圓柱的體積是:%8.2f\n",v);
//按指定格式輸出變量v的值}【例3.8】輸入一個(gè)3位正整數(shù),輸出逆序后的數(shù)。如:輸入345,輸出為543。程序代碼#include<stdio.h>//標(biāo)準(zhǔn)庫(kù)函數(shù)聲明voidmain(){inta,b,c,x,y;//變量定義printf("請(qǐng)輸入一個(gè)三位數(shù):");//輸入提示scanf("%d",&x);//格式化輸入函數(shù)a=x/100;//計(jì)算
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房產(chǎn)開發(fā)項(xiàng)目股權(quán)轉(zhuǎn)讓協(xié)議書3篇
- 2025年度二零二五年度挖掘機(jī)股份轉(zhuǎn)讓及二手交易服務(wù)協(xié)議3篇
- 二零二五年度茶飲品牌新店加盟合同3篇
- 2025年度房屋買賣合同裝修改造條款完善版本2篇
- 2025年度消防工程設(shè)計(jì)與施工一體化承攬合同樣本6篇
- 2025年度建筑工程安全生產(chǎn)應(yīng)急救援預(yù)案合同3篇
- 2025年度智能家居房屋獨(dú)家代理銷售合同3篇
- 荒山土地承包與生態(tài)保護(hù)合作合同(2025)3篇
- 二零二五年度工地運(yùn)輸車輛燃料補(bǔ)給合同樣本3篇
- 二零二五年度房屋出租托管與智慧城市建設(shè)合作協(xié)議3篇
- 2024-2025學(xué)年北京房山區(qū)初三(上)期末英語(yǔ)試卷
- 2024年三年級(jí)英語(yǔ)教學(xué)工作總結(jié)(修改)
- 2023-2024學(xué)年廣東省深圳市光明區(qū)高二(上)期末地理試卷
- 【8地RJ期末】安徽省蕪湖市弋江區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末考試地理試卷(含解析)
- 2025年春季幼兒園后勤工作計(jì)劃
- 鑄牢中華民族共同體意識(shí)的培養(yǎng)路徑
- 世界各大洲國(guó)家中英文、區(qū)號(hào)、首都大全
- 2024-2030年中國(guó)波浪發(fā)電商業(yè)計(jì)劃書
- 咖啡廳店面轉(zhuǎn)讓協(xié)議書
- 《中國(guó)腎性貧血診療的臨床實(shí)踐指南》解讀課件
- 期末(試題)-2024-2025學(xué)年人教PEP版英語(yǔ)六年級(jí)上冊(cè)
評(píng)論
0/150
提交評(píng)論