




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言程序設計第3章順序結構程序設計問題:一年有春夏秋冬四季,按序執行,做事亦有先后順序,那么C語言在編寫程序時可以采用這樣的順序結構嗎?
按程序書寫的前后順序依次按序執行。順序結構程序設計
C語言同樣提供了這種最簡單的程序設計結構:順序結構。引子
本章重點第3章順序結構程序設計
本章難點
C語言基本語句的分類字符數據輸入輸出函數格式化輸入輸出函數
格式化輸入輸出函數的格式控制字符串3.13.23.33.4C語言語句概述字符數據的輸入輸出格式化輸入輸出函數順序結構程序設計舉例本章主要內容說明語句變量定義或說明數據類型定義函數聲明等語句可執行語句:用來向計算機發出操作指令。簡單語句表達式語句:表達式;例:i++;函數調用語句控制語句空語句:只有分號“;”組成的語句,程序執行時不產生任何動作。復合語句:把多個語句用括號“{}”括起來組成的一個語句C語言無I/O語句,I/O操作由函數實現#include<stdio.h>1)條件判斷語句:if語句、switch語句等;2)循環執行語句:do-while語句、while語句、for語句;3)轉向語句:break語句、goto語句、continue語句、return語句。3.1C語言語句概述printf("CProgram");/*調用庫函數,輸出字符串*/
while(getchar()!='\n');
{語句1;
語句2;┇
語句n;}。
{x=y+z;a=b+c;
printf("%d%d",x,a);
}3.13.23.33.4C語言語句概述字符數據的輸入輸出格式化輸入輸出函數順序結構程序設計舉例本章主要內容輸出3.2字符數據的輸入輸出從計算機向外部輸出設備(如顯示器、打印機、磁盤等)輸出數據輸入從輸入設備(如鍵盤、磁盤、光盤、掃描儀等)向計算機輸入數據在VC中,調用輸入/輸出函數之前,必須使用下面預編譯命令對頭文件“stdio.h”(stdio是standardinput/output的縮寫)進行文件包含說明。
#include<stdio.h>格式:putchar(ch)參數:ch為字符常量或變量,也可以是一個轉義字符
功能:在默認輸出終端(一般為顯示器)上輸出單個字符
字符輸出函數(putchar)3.2字符數據的輸入輸出#include<stdio.h>main(){charch='B';
putchar(ch);/*輸出變量的值字符B*/
putchar('\n');/*輸出一個換行符*/
putchar('B');/*直接輸出字符B*/
putchar('\n');/*輸出一個換行符*/putchar(0x42);/*使用ASCII值輸出字符B*/
putchar('\n');/*輸出一個換行符*/}運行結果:BBB例:輸出單個字符格式:getchar()功能:從系統默認的輸入終端(一般為鍵盤)輸入一個字符,可以是字母字符、數字字符和其他字符等例3.2輸入單個字符,并輸出。#include<stdio.h>main(){charc;c=getchar();
putchar(c);}
運行結果:abc↙a字符輸入函數(getchar)getchar函數等待輸入直到按回車才結束,回車前所輸入的全部字符都會在在屏幕上顯示,但只有第一個字符作為函數的返回值。例3.2輸入單個字符,并輸出。#include<stdio.h>main(){putchar(getchar());}
3.13.23.33.4C語言語句概述字符數據的輸入輸出格式化輸入輸出函數順序結構程序設計舉例本章主要內容格式:printf("格式控制字符串",輸出表列);功能:將數據在終端設備(或系統默認的輸出設備上)按指定格式輸出
說明:輸出表列是以逗號隔開的表達式;
格式控制字符串規定輸出格式格式控制串作用:為各輸出項提供輸出格式%[修飾符]格式字符:將要輸出的數據轉換為指定的格式輸出,由“%”符號開始,緊跟其后的是格式描述符,說明輸出數據的類型、形式、長度、小數位數等。
原樣輸出普通字符:在程序運行過程中起提示作用格式輸出函數(printf)3.3格式化輸入輸出函數例3.3輸出函數printf程序示例。#include<stdio.h>main(){inti=3314;floata=2.1454;
printf("i=%d,a=%f,a*10=%e\n",i,a,a*10);}運行結果:i=3314,a=2.145400,a*10=2.145400e+001printf函數中常用的輸出格式printf函數的輸出格式的一般形式為:%[標志][寬度指示符][.精度指示符][長度修飾符]格式字符格式字符格式字符說明d或iox,Xufe,E以十進制形式輸出帶符號整數(正數不輸出符號)以八進制形式輸出無符號整數(不輸出前綴0)以十六進制形式輸出無符號整數(不輸出前綴0x),對于x用abcdef輸出;對于X用ABCDEF輸出以十進制形式輸出無符號整數以小數形式輸出單、雙精度實數,隱含輸出6位小數以指數形式輸出單、雙精度實數,數字部分小數位數為6位,指數部分占5位,用“E”時,指數以大寫表示格式字符格式字符說明g,Gcsp以%f或%e中較短的輸出寬度輸出單、雙精度實數,不輸出無意義的0,用“G”時,則指數以大寫表示輸出單個字符輸出字符串輸出變量的內存地址寬度(域寬)指示符。作用:用來指定輸出數據項的最小字段寬度,通常用十進制表示。
省略寬度指示符時,按實際位數輸出;若實際位數大于定義的寬度,也按實際位數輸出;若實際位數小于定義的寬度,數據右對齊,左邊補以空格。未指定寬度和指定輸出寬度時的輸出結果輸出語句輸出結果printf("%3d\n",4321);printf("%f\n",123.54);printf("%12f\n",123.54);4321123.540000ㄩㄩ123.540000printf("%e\n",123.54);1.235400e
+
002printf("%14e\n",123.54);ㄩ1.235400e
+
002printf("%g\n",123.5);123.5printf("%8g\n",123.5);ㄩㄩㄩ123.5精度指示符以“.”開頭,后跟十進制整數精度指示符通常與寬度指示符結合使用,格式為:“m.n”,“m”表示輸出數據所占總的寬度,“n”表示輸出數據的精度浮點數n表示輸出數據的小數的位數,輸出數據的小數位數大于“n”時,截去右邊多余的小數,并對截去的第一位小數做四舍五入;輸出數據的小數位數小于“n”時,在小數的最右邊添0。省略“m.n”中的m用“.n”表示小數的位數,并對截去的第一位小數進行四舍五入,這時輸出數據的寬度由系統決定。若指定“%.0f”,則不輸出小數部分,但要對第一位小數進行四舍五入。對于g或G“.n”表示輸出的有效數字,并對截去的第一位進行四舍五入,整數部分并不丟失,隱含的輸出有效數字為6位有效數字。對于字符串“.n”則表示要輸出字符的個數;如果實際位數大于所定義的精度時,則截去超過的部分。輸出語句輸出結果指定精度時的輸出結果printf("%8.3f\n",123.55);
ㄩ123.550-
printf("%8.1f\n",123.55);
ㄩㄩㄩ123.6
printf("%8.0f\n",123.55);
printf("%g\n",123.56789);printf("%.7g\n",123.56789);
printf("%.5s\n",“abcdefg”);
ㄩㄩㄩㄩㄩ124
123.568
123.5679
abcde
注意:輸出數據的實際精度不完全取決于格式控制串中的寬度和精度,而是取決于數據的存儲精度。如果在格式控制串中指定的寬度和精度超過了相應類型數據的有效數字,輸出的多余數字是沒有意義的,只是系統用來填充數據寬度而已。標志標志及其意義
標志意義?
輸出結果左對齊,右邊填空格;缺省則輸出結果右對齊,左邊填空格+輸出符號(正號或負號)
空格輸出值為正時冠以空格,為負時冠以負號
#對c,s,d,u類無影響;對o類,在輸出時加前綴0;對x類,在輸出時加前綴0x標志標志的用法輸出語句輸出結果ㄩㄩㄩ111
printf("%6d\n",111);
printf("%?6d\n",111);111ㄩㄩㄩ
printf("%
+
d\n",111);
+111
printf("%ㄩd\n",111);
ㄩ111
printf("%ㄩd\n",?111);
?111
printf("%#o\n",10);
012
printf("%#x\n",16);0x10
長度修飾符長度修飾符為h、l兩種h表示按短整型(short)輸出,可加在格式符d、o、x、u前面,如%hd;l表示按長整型(long)輸出,如%ld、%lx等。l也可加在格式符f前面,但沒有什么意義。例3.4輸出函數printf程序示例。#include<stdio.h>main(){inta=15;floatb=123.1234567;doublec=12345678.1234567;chard='p';
printf("a=%d,%5d,%o,%x\n",a,a,a,a);
printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);
printf("c=%lf,%f,%8.4lf\n",c,c,c);
printf("d=%c,%8c\n",d,d);}運行結果如下:a=15,ㄩㄩㄩ15,17,fb=123.123459,123.123459,123.1235,1.231235e+002c=12345678.123457,12345678.123457,12345678.1235d=p,ㄩㄩㄩㄩㄩㄩㄩp調用printf函數時的注意事項如果格式控制字符串中的格式描述符少于輸出項的個數,多余的輸出項不予輸出;如果格式控制字符串中的格式描述符多于輸出項的個數,則對于多余的格式將輸出不定值(或0值)。(1)輸出表列中的各輸出項要用逗號隔開,輸出項可以是合法的常量、變量或表達式。格式控制字符串中的格式描述符與輸出列表的輸出項在數量和類型上應該一一對應。例inta=3,b=4;
printf(“%d%d\n”,a,b);
printf(“a=%d,b=%d\n”,a,b);輸出結果:34a=3,b=4例inta=3,b=4;printf("%d%d\n",a,b);printf(“a=%d,b=%d\n”,a,b);
例inta=3,b=4;printf("%d%d\n",a,b);printf("a=%d,b=%d\n",a);
調用printf函數時的注意事項(2)如果格式控制字符串中的格式描述符與對應的輸出項類型不匹配,將導致數據不能正確輸出,這時系統并不報錯例如:在輸出長整型數據時,應使用%ld格式說明,在VC6.0中也可使用%d(因為int型和long型數據所占字節數相同),但如果使用%hd,將輸出錯誤的數據。例3.5輸出函數printf程序示例。#include<stdio.h>main(){longa=80000;
printf("x=%hd\n",a);}運行結果:x=14464調用printf函數時的注意事項(3)在格式控制字符串中,除了合法的格式說明外,可以包含任意的合法字符(包括轉義字符),這些字符在輸出時將原樣輸出。(4)如果需要輸出百分號%,則應該在格式控制字符串中用連續的百分號“%%”來表示。(5)printf函數的返回值通常是本次調用中輸出項的個數。(6)盡量不要在輸出函數中改變輸出變量的值,因為在輸出時,先對輸出表列的各項求值,然后再輸出。輸出順序是從左到右,而求值順序,有的編譯系統是從左到右,有的是從右到左,VC6.0是按從右到左進行的。例3.6輸出函數printf程序示例。#include<stdio.h>main(){inti=8;printf("%d\t%d\n",i,++i);}輸出結果為:99格式輸入函數(scanf)格式:scanf(“格式控制串”,地址表)功能:從終端設備(或系統默認的輸入設備)上輸入數據。格式控制字符串的作用是指定輸入數據的格式,由“%”符號開始,其后是格式描述符。各輸入項只能是合法的地址表達式例scanf(“%d”,&a);
輸入:10
則a=10例scanf(“%x”,&a);
輸入:11
則a=17例scanf("%d%d",&a,&b);scanf函數中常用的格式說明scnaf格式字符
格式字符說明輸入有符號的十進制整數
d,i
o
輸入無符號的八進制整數
x,X
輸入無符號的十六進制整數
u
輸入無符號的十進制整數
f,e
輸入實型數(用小數形式或指數形式)c輸入單個字符s
輸入字符串,結果存入字符數組中,輸入時以第一個非空白字符開始,以第一個空白字符結束,系統自動加上'\0'作為字符串結束標志%[*][輸入數據寬度][長度修飾符]格式字符scanf函數中常用的格式說明“*”符表示讀入該輸入項后不賦予相應的變量,即跳過該輸入值。數據寬度用十進制整數指定輸入的寬度,即讀取輸入數據中相應位數賦給相應的變量,舍棄多余部分。長度修飾符長度格式符為h和l。在VC環境下,輸入short型整數,格式控制要求用%hd;輸入double型數據,必須用%lf或%le。否則,數據可能不能正確輸入。但在VC中,%ld與%d一樣。10a,30b12345a12a,67bscanf(“%d%*d%d”,&a,&b);
輸入102530scanf(“%5d”,&a);
輸入12345678scanf(“%2d%*3d%2d”,&a,&b);
輸入12345671234a,5678bscanf("%4d%4d",&a,&b);
輸入12345678scanf(“%4d%2d%2d”,&yy,&mm,&dd);
輸入199910151999yy,10mm,15dd調用scanf函數時的注意事項scanf函數中的格式字符前可以用一個整數指定輸入數據所占寬度,但不可以對實型數指定小數位的寬度。scanf("%5.2f",&a);非法的scanf中要求給出變量地址,如給出變量名則會出錯。scanf("%d",a);非法的在輸入多個數值數據時,若格式控制字符串中沒有非格式字符作為輸入數據之間的間隔,則可用空格、Tab或回車作為間隔。程序在運行時碰到空格、Tab鍵、回車或非法數據時即認為該數據結束。對"%d"輸入“12A”時,A即為非法數據輸入分隔符的指定一般以空格、TAB或回車鍵作為分隔符其它字符做分隔符:格式串中兩個格式符間字符例scanf(“%d%o%x”,&a,&b,&c);
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
輸入123123123輸出a=123,b=83,c=291例scanf(“%d:%d:%d”,&h,&m,&s);
輸入12:30:45則12h,30m,45s例scanf(“%d,%d”,&a,&b)
輸入3,4
則3a,4b例scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);
輸入a=12,b=24,c=36說明:用“%c”格式符時,空格和轉義字符作為有效字符輸入如scanf(“%c%c%c”,&c1,&c2,&c3);
若輸入abc
則ac1,
c2,bc3輸入數據時,遇以下情況認為該數據結束:遇空格、TAB、或回車遇寬度結束遇非法輸入如scanf(“%d%c%f”,&a,&b,&c);
若輸入1234a123o.26則1234a,‘a’b,123c輸入函數留下的“垃圾”:例intx;charch;
scanf(“%d”,&x);
ch=getchar();
printf(“x=%d,ch=%d\n”,x,ch);執行:123輸出:x=123,ch=10例intx;charch;
scanf(“%d”,&x);
scanf(“%c”,&ch);
printf(“x=%d,ch=%d\n”,x,ch);執行:123輸出:x=123,ch=10解決方法:(1)用getchar()清除(2)用函數fflush(stdin)清除全部剩余內容(3)用格式串中空格或“%*c”來“吃掉”例intx;charch;
scanf(“%d”,&x);
scanf(“%c”,&ch);或scanf(“%*c%c”,&ch);
例scanf(“%3c%2c”,&c1,&c2);
輸入abcde
在輸入字符數據時,若格式控制字符串中沒有非格式字符,則認為所有輸入的字符均為有效字符。調用scanf函數時的注意事項scanf("%c%c%c",&a,&b,&c);
輸入dㄩeㄩf↙“d”a,“ㄩ”b,“e”
cscanf("%c%c%c",&a,&b,&c);
輸入def↙“d”a,“e”b,“f”
c例scanf(“%3d%*4d%f”,&k,&f);
輸入12345678765.43123k,8765.43f
‘a’c1,‘d’c2調用scanf函數時,應當注意變量類型與格式字符保持一致,否則雖然編譯能夠通過,但結果將不正確。例3.7輸入函數scanf程序示例。#include<stdio.h>main(){longi;doublef;
scanf("%hd%f",&i,&f);
printf("%d\t%g\n",i,f);}運行情況如下:1111111111123↙-859032121-9.25596e+061scanf函數也有一個返回值,這個返回值就是成功輸入的項數。調用scanf函數時的注意事項調用scanf函數時,應當注意變量類型與格式字符保持一致,否則雖然編譯能夠通過,但結果將不正確。例3.8輸入函數scanf的返回值。#include<stdio.h>main(){int
x,y;
printf("%d\n",scanf("%d%d",&x,&y));}運行結果:45ㄩ54↙2例3.9輸入函數scanf程序示例。#include<stdio.h>main(){int
a,b,c,d;
scanf("%d%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
scanf("%d%d",&c,&d);
printf("c=%d,d=%d",c,d);}運行結果:45ㄩ54ㄩ23ㄩ89↙a=45,b=54c=23,d=893.13.23.33.4C語言語句概述字符數據的輸入輸出格式化輸入輸出函數順序結構程序設計舉例本章主要內容例輸入圓半徑,輸出圓周長和面積。#include<stdio.h>#definePI3.14159main(){floatr,l,s;
scanf("%f",&r);l=2*PI*r;s=PI*r*r;
printf("\nl=%8.4f",l);
printf("\ns=%8.4f",s);}運行情況如下:
5↙l=ㄩ31.4159s=ㄩ78.5397文件包含預處理命令變量定義輸入數據輸出數據3.4
順序結構程序設計舉例#include<stdio.h>main(){
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- lng合同標準文本
- 2025年全面積壓勞動合同范本
- 農村祠堂修建合同樣本
- 構建靈活的公司財務規劃體系的方案計劃
- 農藥產品供貨合同樣本
- 企業員工內部生產合同樣本
- 減肥合同范例寫
- 代理投資咨詢合同樣本
- 第12講 人體內物質的運輸 2025年會考生物學專題練習(含答案)
- 親子鑒定合同樣本
- 肥胖癥治療季度臨床路徑分析
- 《習作:心愿》課件(兩套)
- 針灸筆記課件
- 《蜀相》76816省公開課一等獎全國示范課微課金獎課件
- 幼兒園大班繪本閱讀教學現狀與對策研究
- 隧道工程畢業設計
- 期中句型轉換練習專項過關卷(試題)-2023-2024學年譯林版(三起)英語四年級下冊
- 2024年杭州市水務集團有限公司招聘筆試參考題庫附帶答案詳解
- 《汽車鈑金噴涂技術》 課件 任務26.2 中涂底漆噴涂
- 在英語教學中如何激發學生學習英語興趣
- 《對聯的基本常識》課件
評論
0/150
提交評論