版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章
簡(jiǎn)單程序設(shè)計(jì)
本章要點(diǎn)l
結(jié)構(gòu)化程序的三種流程結(jié)構(gòu),C語(yǔ)句的分類(lèi)。l
字符輸入輸出函數(shù)getchar、putchar的使用方法。l
格式輸入輸出函數(shù)的使用方法,常見(jiàn)的格式說(shuō)明符的含義及使用方法。l
順序結(jié)構(gòu)程序設(shè)計(jì)方法。本章難點(diǎn)格式說(shuō)明符的含義及使用。
3.1流程結(jié)構(gòu)和語(yǔ)句
3.2標(biāo)準(zhǔn)輸入輸出函數(shù)3.3簡(jiǎn)單程序設(shè)計(jì)舉例3.1流程結(jié)構(gòu)和語(yǔ)句3.1.1三種流程結(jié)構(gòu)3.1.2C的語(yǔ)句概述3.1.1三種流程結(jié)構(gòu)順序結(jié)構(gòu)N-S結(jié)構(gòu)圖流程圖ABAB選擇結(jié)構(gòu)YNABP成立?PTFAB循環(huán)結(jié)構(gòu)NYP成立?A當(dāng)P成立時(shí)
A直到型循環(huán)
A當(dāng)P成立時(shí)YNAP成立?當(dāng)型循環(huán)N-S結(jié)構(gòu)圖流程圖3.1.2C的語(yǔ)句概述
C語(yǔ)言程序最基本的組成元素是一條條的C語(yǔ)句。按其編譯后是否產(chǎn)生目標(biāo)代碼,C語(yǔ)言的語(yǔ)句可分為:數(shù)據(jù)定義語(yǔ)句(說(shuō)明語(yǔ)句):定義數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)初值,指示編譯器分配存儲(chǔ)單元。如變量定義語(yǔ)句。外部說(shuō)明必須放在一個(gè)源程序文件中所有函數(shù)定義的外面局部說(shuō)明必須放在執(zhí)行語(yǔ)句的前面
可執(zhí)行語(yǔ)句:編譯后產(chǎn)生若干機(jī)器指令,實(shí)現(xiàn)對(duì)數(shù)據(jù)的處理和對(duì)程序流程的控制。
常用的程序結(jié)構(gòu)為:常量說(shuō)明類(lèi)型說(shuō)明變量說(shuō)明/*外部說(shuō)明*/返回類(lèi)型函數(shù)名(參數(shù)表){
變量說(shuō)明/*局部說(shuō)明*/
可執(zhí)行語(yǔ)句}C語(yǔ)言的可執(zhí)行語(yǔ)句分為5類(lèi):表達(dá)式語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、復(fù)合語(yǔ)句、空語(yǔ)句、控制語(yǔ)句。
表達(dá)式后面加一個(gè)分號(hào),構(gòu)成表達(dá)式語(yǔ)句x=3;y=y+5;x=a-b&&c||d;printf("x=%d,y=%d\n",x,y);sort(a,10);
表達(dá)式語(yǔ)句能夠獨(dú)立出現(xiàn)在程序中,而表達(dá)式則不能獨(dú)立出現(xiàn)。1.表達(dá)式語(yǔ)句
注意:
分號(hào)是語(yǔ)句必不可少的一部分。C的說(shuō)明語(yǔ)句也必須以分號(hào)結(jié)束。2.函數(shù)調(diào)用語(yǔ)句由函數(shù)名、實(shí)際參數(shù)加上分號(hào)“;”組成。其一般形式為:函數(shù)名(實(shí)際參數(shù)表);執(zhí)行函數(shù)調(diào)用語(yǔ)句就是調(diào)用被調(diào)用函數(shù)體并把實(shí)際參數(shù)賦予函數(shù)定義中的形式參數(shù),然后執(zhí)行被調(diào)用函數(shù)體中的語(yǔ)句,求取函數(shù)值。3.復(fù)合語(yǔ)句
用一對(duì)花括號(hào)“{}”括起來(lái)的若干條語(yǔ)句。
花括號(hào)中可以是說(shuō)明語(yǔ)句、表達(dá)式語(yǔ)句、控制語(yǔ)句,也可以是復(fù)合語(yǔ)句。右括號(hào)“}”后不必加分號(hào)。例如:⑴if(a>b){max=a;min=b;}
⑵for(n=1;n<10;n++)
{p=n+p;if(p>=100)
{
printf(“%d\n”,p);break;
}
}
復(fù)合語(yǔ)句中如果有說(shuō)明性語(yǔ)句,應(yīng)該寫(xiě)在可執(zhí)行語(yǔ)句的前面。例如:
main(){inta,b;a=b=100;{floatc=10.23;
printf("%f\n",c);}
printf("%d%d\n",a,b);}要特別注意:花括號(hào)的配對(duì)花括號(hào)的位置4.空語(yǔ)句單獨(dú)的一個(gè)分號(hào)“;”構(gòu)成一個(gè)空語(yǔ)句,空語(yǔ)句是什么也不執(zhí)行的語(yǔ)句。例如:
;(空語(yǔ)句,是最簡(jiǎn)單的C語(yǔ)句)
while(getchar()!=‘\n’)
;
該語(yǔ)句的功能是,只要從鍵盤(pán)輸入的字符不是回車(chē)就重新輸入。循環(huán)體為空。5.控制語(yǔ)句選擇分支控制語(yǔ)句
if()…else…
switch(){…} 循環(huán)控制語(yǔ)句
for()…
while()…do…while()其他控制語(yǔ)句
break、continue、gotoreturn3.2標(biāo)準(zhǔn)輸入輸出函數(shù)C語(yǔ)言的輸入和輸出操作是通過(guò)調(diào)用C標(biāo)準(zhǔn)函數(shù)庫(kù)中的函數(shù)來(lái)實(shí)現(xiàn)的。
標(biāo)準(zhǔn)函數(shù)庫(kù)是由C編譯程序提供的、以編譯后的目標(biāo)代碼形式存儲(chǔ)的函數(shù)的集合。用戶程序可根據(jù)需要按規(guī)定的格式調(diào)用其中的函數(shù)來(lái)完成相應(yīng)的功能。標(biāo)準(zhǔn)輸入輸出函數(shù)默認(rèn)的標(biāo)準(zhǔn)輸入設(shè)備通常為鍵盤(pán),默認(rèn)的標(biāo)準(zhǔn)輸出設(shè)備通常為顯示器。由于這些函數(shù)都是C語(yǔ)言提供的“標(biāo)準(zhǔn)I/O庫(kù)”函數(shù),其具體函數(shù)定義均在頭文件“stdio.h”中,因此在使用這些函數(shù)之前應(yīng)該使用預(yù)編譯命令#include<stdio.h>
將這些庫(kù)函數(shù)包含到C程序中。C語(yǔ)言中從標(biāo)準(zhǔn)輸入和輸出設(shè)備中進(jìn)行讀(寫(xiě))的四個(gè)標(biāo)準(zhǔn)函數(shù)是:字符輸出函數(shù)putchar字符輸入函數(shù)getchar格式輸出函數(shù)printf格式輸入函數(shù)scanf3.2.1字符輸入和輸出函數(shù)3.2.2格式輸出函數(shù)printf3.2.3格式輸入函數(shù)scanf3.2.1字符輸入和輸出函數(shù)
1字符輸出函數(shù):函數(shù)調(diào)用的一般形式:
putchar(ch)功能:在標(biāo)準(zhǔn)輸出設(shè)備(即顯示器屏幕)上輸出一個(gè)字符。ch可以是char、short或int類(lèi)型的表達(dá)式,其值是要被輸出字符的字符碼。返回值是被輸出的字符。例如:
putchar('b'); putchar('\101');#include"stdio.h"
main(){charc1,c2;c1='a';c2='b';putchar(c1);putchar(c2);putchar('\n');putchar(c1-32);putchar(c2-32);
putchar('\n');}也可改為:c1=97;c2=98;輸出結(jié)果:abAB例3.1#include“stdio”voidmain(){ charc1,c2,c3; c1=‘T’; c2=‘o’; c3=‘m’; putchar(c1); putchar(c2); putchar(c3);}輸出結(jié)果:Tom例3.2#include“stdio”voidmain(){ charc1,c2,c3; c1=‘T’;c2=‘o’;c3=‘m’; putchar(c1); putchar(‘\n’); putchar(c2); putchar(‘\n’); putchar(c3); putchar(‘\n’);}輸出結(jié)果:T o m也可改為:c1=84;c2=111;c3=109;說(shuō)明:若有:inti=7;下面四個(gè)語(yǔ)句是等價(jià)的,同為輸出一個(gè)響鈴字符:putchar(i);putchar(7);putchar(‘\07’);putchar(‘\a’);下面三個(gè)語(yǔ)句分別輸出字符a,3和換行putchar(‘a(chǎn)’);putchar(‘3’);putchar(‘\n’);
注:putchar(3)輸出是?而不是整數(shù)3。putchar(((c=getchar())>=’a’&&c<=’z’)?c-‘a(chǎn)’+’A’:c);
該語(yǔ)句先輸入一個(gè)字符存入變量c,如果c是小寫(xiě)字母則將其轉(zhuǎn)換成大寫(xiě)字母后輸出,否則直接輸出原字符。2字符輸入函數(shù)函數(shù)調(diào)用的一般形式
getchar()功能:從標(biāo)準(zhǔn)輸入設(shè)備(即鍵盤(pán))上讀取一個(gè)字符。返回值(即函數(shù)值)是所讀取字符的字符碼,類(lèi)型為由unsignedchar轉(zhuǎn)換的int。例如:c=getchar();putchar(getchar());printf("%c\n",getchar());【例】#include"stdio.h"voidmain(){charch;
ch=getchar();
printf("%c%d\n",ch,ch);
printf("%c%d\n\n",ch-32,ch-32);}程序運(yùn)行時(shí)輸入:m
并按回車(chē)鍵后輸出結(jié)果是:m109M77如果輸入多個(gè)字符,getchar()只能接收第一個(gè)getchar函數(shù)需要交互輸入,接收到輸入字符之后才繼續(xù)執(zhí)行程序。連續(xù)使用getchar函數(shù)時(shí),要注意字符的輸入形式,例如執(zhí)行如下程序段:charch1,ch2;ch1=getchar();ch2=getchar();必須連續(xù)輸入兩個(gè)字符,中間不能有其他字符。如果有空格,空格也會(huì)被作為輸入字符接收getchar和putchar函數(shù)用于輸入和輸出單個(gè)字符,輸入和輸出過(guò)程中不進(jìn)行格式上的任何轉(zhuǎn)換。printf和scanf函數(shù)在數(shù)據(jù)的輸入和輸出過(guò)程中能夠?qū)⒂?jì)算機(jī)內(nèi)部形式的數(shù)據(jù)和輸入輸出任務(wù)上的數(shù)據(jù)相互轉(zhuǎn)換,稱(chēng)為格式輸出和格式輸入。3.2.2格式輸出函數(shù)printf
函數(shù)調(diào)用的一般形式
printf(格式控制,參數(shù)2,…,參數(shù)n)參數(shù)2,…,參數(shù)n可以是任何基本類(lèi)型的表達(dá)式,功能:按格式控制所指定的格式,在標(biāo)準(zhǔn)輸出設(shè)備上輸出參數(shù)2、…、參數(shù)n的值。函數(shù)的返回值是實(shí)際輸出字符的數(shù)目。例如:
inta=123,b=100;
printf("%d%d%d\n",a,b,a+b);
printf("c=%d+%d=%d\n",a,b,a+b);調(diào)用printf函數(shù)時(shí)至少要給出第一個(gè)參數(shù),即格式說(shuō)明符。用雙引號(hào)括起的字符串,用于指定輸出數(shù)據(jù)的類(lèi)型、格式、個(gè)數(shù)包括:普通字符和格式說(shuō)明符照原樣輸出
printf("c=%d+%d=%d\n",a,b,a+b);格式說(shuō)明符:指定輸出3個(gè)十進(jìn)制整型數(shù),分別為變量a、b、a+b的值格式說(shuō)明符用于說(shuō)明數(shù)據(jù)輸出格式,其形式為:%轉(zhuǎn)換字符一個(gè)格式說(shuō)明符以%開(kāi)頭。每個(gè)格式說(shuō)明符對(duì)應(yīng)于一個(gè)輸出參數(shù),該參數(shù)被轉(zhuǎn)換成由轉(zhuǎn)換說(shuō)明規(guī)定的數(shù)據(jù)格式后輸出。普通字符通常用作輸出提示信息,它可以與轉(zhuǎn)換說(shuō)明交替出現(xiàn)。輸出格式說(shuō)明符整型數(shù)據(jù)
%d以有符號(hào)十進(jìn)制形式輸出整型數(shù)%ld輸出十進(jìn)制長(zhǎng)整型數(shù)據(jù)。在VC6.0中與%d相同%u(%lu)以無(wú)符號(hào)十進(jìn)制形式輸出整型數(shù)(無(wú)符號(hào)十進(jìn)制長(zhǎng)整型數(shù)據(jù))在VC6.0中二者作用相同%o以無(wú)符號(hào)八進(jìn)制形式輸出整型數(shù)%x以無(wú)符號(hào)十六進(jìn)制形式輸出整型數(shù)例實(shí)型數(shù)據(jù)
%f以十進(jìn)制小數(shù)形式輸出單、雙精度實(shí)型數(shù)%e以指數(shù)形式輸出單、雙精度實(shí)型數(shù)例%g以%f或%e中寬度最小的形式輸出實(shí)型數(shù),且不輸出無(wú)意義的零例字符型數(shù)據(jù)
%c輸出一個(gè)字符%s按實(shí)際寬度輸出一個(gè)字符串其他
%%輸出字符%本身例例:printf(“%d,%d”,a,b);longinta=1234567;printf(“%ld”,a);#include“stdio.h” voidmain() { unsignedintx=4294967295;
inty=-2;
printf(“x=%d,%u\n”,x,x);
printf(“y=%d,%u\n”,y,y);}x、y的內(nèi)存分配情況輸出結(jié)果:
x=-1,
4294967295y=-2,4294967294
1111
11
111111
11
111111
11
111111
11
111111
11
111111
11
111111
11
111111
1110intx=-1;printf(“%d,%o,%x\n”,x,x,x);-1的內(nèi)存分配情況1111
11
111111
11
111111
11
111111
11
11輸出結(jié)果:
-1,
37777777777,ffffffff例3.4#include“stdio.h”voidmain(){ doublex=3.1415; floaty=15.725;
printf(“x=%f,y=%f\n”,x,y);}vc6.0和TC3.0都默認(rèn)輸出6位小數(shù),不夠時(shí)末尾補(bǔ)零。若以指數(shù)形式輸出,則輸出語(yǔ)句改為:
printf(“x=%e,y=%e\n”,x,y);輸出結(jié)果:
x=3.141500,
y=15.725000輸出結(jié)果:
x=3.141500e+000,
y=1.572500e+001例:#include“stdio.h”voidmain(){ doublepi=3.1415;
printf(“%f,%e,%g”,pi,pi,pi);}輸出結(jié)果:
3.141500,3.141500e+000,
3.1415例:charc;c=‘s’;printf(“%c,%s,%%”,c,”Goodmorning!”);輸出結(jié)果:
s,Goodmorning!,%域?qū)捲?和格式說(shuō)明符之間可以加入域?qū)捳f(shuō)明,用于指定數(shù)據(jù)輸出時(shí)的對(duì)齊方向、輸出數(shù)據(jù)的域?qū)挾?、小?shù)部分的位數(shù)等要求。:%[域?qū)抅格式說(shuō)明符printf域?qū)捳f(shuō)明字符
域?qū)捳f(shuō)明符號(hào)意義-(減號(hào))以左對(duì)齊方式輸出(默認(rèn)右對(duì)齊)+以右對(duì)齊方式輸出,輸出正值時(shí)前面加符號(hào)+空格輸出的第一個(gè)字符不是符號(hào)時(shí),要輸出一個(gè)空格作參照0(零)數(shù)據(jù)不足最小輸出寬度時(shí),左補(bǔ)零#對(duì)于o格式輸出前導(dǎo)0,對(duì)于x或X格式要輸出0x或0X前綴,對(duì)于g或G格式不刪除尾部零m(正整數(shù))域?qū)挘赋鲚敵鰯?shù)據(jù)的最小寬度。如果實(shí)際寬度>m,則按實(shí)際寬度;如果實(shí)際寬度<m,則左邊(左對(duì)齊時(shí)為右邊)補(bǔ)上空格或零(當(dāng)有域?qū)捳f(shuō)明字符0時(shí)).(小數(shù)點(diǎn))分隔域?qū)捙c精度。小數(shù)點(diǎn)前面可以沒(méi)有域?qū)捳f(shuō)明符。n(正整數(shù))指出輸出數(shù)據(jù)的精度。對(duì)于e、f格式為小數(shù)部分的位數(shù),對(duì)于g格式為有效字的個(gè)數(shù),對(duì)于整數(shù)為至少應(yīng)輸出的數(shù)字的個(gè)數(shù)(添加前導(dǎo)0來(lái)滿足所需寬度)例:設(shè)有整數(shù)x=18,y=-1:
printf(“%-5d,%05d,%+5d,%4d\n”,x,x,x,y); printf(“%15o,%-10x\n”,y,y);輸出結(jié)果:
18□□□,00018,+18,
□□-1
□□37777777777,ffffffff
□□
例3.5#include“stdio.h”voidmain(){ doublepi=3.1415;
printf(“%f,%6.2f,%.2f,%-6.2f\n”,pi,pi,pi,pi);}輸出結(jié)果:
3.141500,□□3.14,3.14,3.14□□
charc; c=‘s’; Printf(“%c,%3c”,c,c);輸出結(jié)果:
s,□□s
例3.6#include“stdio”voidmain(){printf(“%s,%3s,%8s,%-8s,%8.3s”,”Hello”,”Hello”,”Hello”,”Hello”,”Hello”);}輸出結(jié)果:
Hello,Hello,□□□Hello,Hello
□□□,□□□□□Hel
例3.7#include"stdio.h"voidmain(){
int
a,b; floatx,y,s; a=12;b=-34; x=3.1;y=6.3;s=x*x-y*y;
printf(“a=%d,b=%d\n",a,b);
printf(“x=%6.2f,y=%-6.2f,s=%.2f\n",x,y,s);}輸出結(jié)果:
a=12,b=-34x=3.10,y=6.30,s=-30.08例3.8#include"stdio.h"voidmain(){
intx=83; chary=‘S’;
printf(“x=%d,%o,%x,%c\n",x,x,x,x);
printf(“y=%d,%o,%x,%c\n",y,y,y,y);
printf(“x=%f%%”,1.0/3);}輸出結(jié)果:
x=83,123,53,Sy=83,123,53,S
0.333333%例1整型數(shù)據(jù)的輸出voidmain(){inta=11,b=22;
intm=-1;longn=123456789;
printf("%d%d\n",a,b);
printf("a=%d,b=%d\n",a,b);
printf("m:%d,%o,%x,%u\n",m,m,m,m);
printf("n=%d\n",n);
printf("n=%ld\n",n);}程序輸出:1122a=11,b=22m:-1,177777,ffff,65535n=-13035n=123456789例2實(shí)型數(shù)據(jù)的輸出voidmain(){floatx=1234.56,y=1.23456789;doublez=1234567.123456789;
printf("x=%f,y=%f\n",x,y);
printf("z=%f\n",z);
printf("z=%e\n",z);
printf("z=%g\n",z);
printf("z=%18.8f\n",z);
printf("x=%10.3f\n",x);
printf("x=%-10.3f\n",x);
printf("x=%4.3f\n",x);}程序輸出:x=1234.560059,y=1.234568z=1234567.123457z=1.23457e+06z=1.23457e+06z=1234567.12345679x=1234.560x=1234.560x=1234.560例3字符型數(shù)據(jù)的輸出voidmain(){intm=97;charch='B';
printf("m:%d%c\n",m,m);
printf("ch:%d%c\n",ch,ch);
printf("%s\n","student");printf("%10s\n","student");printf("%-10s\n","student");printf("%10.3s\n","student");printf("%.3s\n\n","student");}程序輸出:m:97ach:66Bstudentstudentstudent
stustu注意:printf函數(shù)格式控制中的格式說(shuō)明符與輸出參數(shù)的個(gè)數(shù)、次序和類(lèi)型必須一一對(duì)應(yīng)。格式說(shuō)明符的%和后面的描述符之間不能有空格。除%X、%E、%G外類(lèi)型描述符必須是小寫(xiě)字母。長(zhǎng)整型數(shù)應(yīng)該用%ld(或%lo、%lx、%lu)格式輸出,否則會(huì)出現(xiàn)輸出錯(cuò)誤。數(shù)值范圍在0~255之間的整數(shù)也可以用字符形式輸出。反之,一個(gè)字符型數(shù)據(jù)也可以用整數(shù)形式輸出。printf函數(shù)的參數(shù)可以是常量、變量或表達(dá)式。在計(jì)算各參數(shù)值時(shí),C語(yǔ)言采用從右至左的順序求值。printf中參數(shù)右結(jié)合,如設(shè)inti=1;則:
printf(“%d,%d,%d”,++i,++i,++i); 輸出結(jié)果為4,3,2
printf(“%d,%d,%d”,i++,i++,i++); 輸出結(jié)果為3,2,1
3.2.3格式輸入函數(shù)scanf
函數(shù)調(diào)用的一般形式scanf(格式控制,地址參數(shù)2…,地址參數(shù)n);功能:按格式控制指定的格式,從標(biāo)準(zhǔn)輸入設(shè)備(即鍵盤(pán))輸入數(shù)據(jù),并依次存放到對(duì)應(yīng)地址參數(shù)指定的變量中(即將輸入值賦給變量)。返回被轉(zhuǎn)換并賦值的數(shù)據(jù)項(xiàng)的數(shù)目。
例如:scanf("%d%f",&a,&f);scanf("a=%d,b=%d",&a,&b);用雙引號(hào)括起的字符串,用于指定輸入數(shù)據(jù)的類(lèi)型、格式、個(gè)數(shù)以及輸入的形式,包括:普通字符和格式說(shuō)明符照原樣輸入
scanf("a=%d,b=%d",&a,&b);格式說(shuō)明符:指定輸入2個(gè)十進(jìn)制整型數(shù)賦給變量a和b輸入格式說(shuō)明符整型數(shù)據(jù)
%d輸入十進(jìn)制整型數(shù)%u輸入無(wú)符號(hào)的十進(jìn)制整型數(shù)%o輸入八進(jìn)制整型數(shù)%x輸入十六進(jìn)制整型數(shù)實(shí)型數(shù)據(jù)
%f輸入小數(shù)形式的單精度實(shí)型數(shù)%e輸入指數(shù)形式的單精度實(shí)型數(shù)字符型數(shù)據(jù)
%c輸入單個(gè)字符%s輸入一個(gè)字符串在%和格式符之間可以使用附加說(shuō)明符附加格式說(shuō)明符l與d、o、x、u結(jié)合輸入長(zhǎng)整型數(shù)與f、e結(jié)合輸入double型數(shù)h與d、o、x、u結(jié)合輸入短整型數(shù)m指定數(shù)據(jù)輸入的寬度(即域?qū)挘?忽略讀入的數(shù)據(jù)(即不將讀入數(shù)據(jù)賦給相應(yīng)變量)例如:%mf——輸入m位數(shù)(域?qū)挘?*d——忽略輸入的一個(gè)整型數(shù)對(duì)float和double型指整數(shù)位數(shù)+小數(shù)點(diǎn)+小數(shù)位數(shù)例如:scanf("%d%d%d",&a,&b,&c);輸入3個(gè)整型十進(jìn)制數(shù),以空白符(空格、tab鍵或回車(chē)鍵)分隔scanf("%d,%o,%f",&a,&b,&x);輸入3個(gè)數(shù),以“,”分隔scanf("a=%d,b=%d",&a,&b);輸入的形式是:a=32,b=28(普通字符要照原樣輸入)int
i,j; scanf(“%3d%d”,&i,&j);
輸入12345678,則整數(shù)123被賦給i,4被賦給j。shorti; longj;
doublex;
scanf(%hd%ld”,&i,&j);
scanf(“%lf”,&x);使用scanf函數(shù)應(yīng)注意:輸入數(shù)據(jù)個(gè)數(shù)、次序和類(lèi)型必須與格式說(shuō)明符一一對(duì)應(yīng)。地址參數(shù)形式:&變量名(除數(shù)組或指針變量)格式控制中有普通字符時(shí),必須照原樣輸入。格式控制中無(wú)普通字符時(shí),輸入的數(shù)值型數(shù)據(jù)之間、字符串之間用空白符分隔,字符型數(shù)據(jù)不必分隔。double型數(shù)據(jù)輸入時(shí),必須用%lf或%le格式。實(shí)型數(shù)輸入時(shí)域?qū)挷荒苡胢.n形式的附加說(shuō)明。當(dāng)整型或字符型格式說(shuō)明符中有寬度說(shuō)明時(shí),按寬度說(shuō)明截取數(shù)據(jù)。為了減少不必要的輸入量,除了逗號(hào)、分號(hào)、空格符以外,格式控制中盡量不要出現(xiàn)普通字符,也不要使用‘\n’
、‘\t’
等轉(zhuǎn)義字符。scanf("%c%c%c",&ch1,&ch2,&ch3);要輸入:abc不能輸入:abc注意數(shù)值型數(shù)據(jù)與char型數(shù)據(jù)的混合輸入例:例如:scanf("%d%d",&m,&n);scanf("%c",&ch);錯(cuò)誤輸入:3228a
正確輸入:3228a
當(dāng)下一次調(diào)用scanf時(shí),從上一次scanf調(diào)用已被讀取的最后一個(gè)字符的后面那一個(gè)字符開(kāi)始讀取。例1. inti,j;floatx,y;
scanf(“%d%d”,&i,&j,&x);
scanf(“%f”,&y);執(zhí)行時(shí)輸入123456.789執(zhí)行第一個(gè)scanf調(diào)用時(shí)i被賦值為12,j為34,x未被賦值。Scanf返回值為2;56.7未被讀取。執(zhí)行第2個(gè)scanf時(shí),將56.7賦予y,89多余,scanf返回值為1。轉(zhuǎn)換說(shuō)明應(yīng)與輸入?yún)?shù)所指變量的類(lèi)型一致,否則,輸入數(shù)據(jù)不是所需要的結(jié)果;轉(zhuǎn)換說(shuō)明項(xiàng)個(gè)數(shù)也應(yīng)與輸入?yún)?shù)個(gè)數(shù)相同,如果轉(zhuǎn)換說(shuō)明項(xiàng)個(gè)數(shù)少于輸入?yún)?shù)個(gè)數(shù),右邊多出的輸入?yún)?shù)所指變量將不被賦值,反之,數(shù)據(jù)不存放。例2.int
i,j;
scanf(“%d%d”,&i,&j);執(zhí)行時(shí)輸入12a則i為12,j未被賦值,scanf返回值為1。如果%和格式說(shuō)明符之間加了*,則輸入數(shù)據(jù)被跳過(guò),不賦值。 例如:inti=0,j=0,k=0;
scanf(“%d%*d%d”,&i,&j,&k);
執(zhí)行時(shí)輸入:102030
執(zhí)行結(jié)果為:i=10,j=30,k依然保留原來(lái)的0;其中第2個(gè)數(shù)據(jù)20被跳過(guò)不賦予任何變量。在使用“%”輸入字符時(shí),空格和轉(zhuǎn)義字符都作為有效字符輸入。 例如:
charch1,ch2,ch3; scanf(“%c%c%c”,&ch1,&ch2,&ch3);
若輸入:B□O□Y↙
執(zhí)行結(jié)果為:ch1=B,ch2=□,ch3=O例3.9#include"stdio.h"voidmain(){
int
x,y,z;
scanf(“%d%d”,&x,&y); z=x*x+y*y;
printf(“z=%d\n",z);}程序運(yùn)行時(shí):
34(輸入x、y的值)z=25(輸出z的值)例3.10#include"stdio.h“#include“math.h”voidmain(){ doublea,b,c;
printf(“input
a,b:”);
scanf(“%lf,%lf”,&a,&b);c=sqrt(a*a
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度城鄉(xiāng)畜牧飼養(yǎng)產(chǎn)業(yè)信息化建設(shè)合作合同4篇
- 2025年度農(nóng)村土地流轉(zhuǎn)民間借貸合同4篇
- 2025年度個(gè)人科技研發(fā)貸款擔(dān)保合同模板4篇
- 2025年度個(gè)人自建房裝修材料采購(gòu)合同示范4篇
- 2025年度光伏發(fā)電項(xiàng)目承包商融資合同樣本4篇
- 2024版全新公路勞務(wù)分包合同
- 2025年度大型場(chǎng)館門(mén)窗鋁型材加工及工程承包合同4篇
- 2025年度出租車(chē)公司股權(quán)協(xié)議范本及車(chē)輛智能化改造合同4篇
- 2025年度智能化停車(chē)管理系統(tǒng)車(chē)位租賃合同范本3篇
- 二零二五年度高炮廣告牌安全檢測(cè)與維護(hù)保養(yǎng)合同4篇
- 分割不動(dòng)產(chǎn)的協(xié)議書(shū)(2篇)
- 兒童流感診療及預(yù)防指南(2024醫(yī)生版)
- 教代會(huì)提案征集培訓(xùn)
- 高考語(yǔ)文復(fù)習(xí)【知識(shí)精研】《千里江山圖》高考真題說(shuō)題課件
- 河北省承德市2023-2024學(xué)年高一上學(xué)期期末物理試卷(含答案)
- 012主要研究者(PI)職責(zé)藥物臨床試驗(yàn)機(jī)構(gòu)GCP SOP
- 農(nóng)耕研學(xué)活動(dòng)方案種小麥
- 2024年佛山市勞動(dòng)合同條例
- 污水管網(wǎng)規(guī)劃建設(shè)方案
- 城鎮(zhèn)智慧排水系統(tǒng)技術(shù)標(biāo)準(zhǔn)
- 采購(gòu)管理制度及流程采購(gòu)管理制度及流程
評(píng)論
0/150
提交評(píng)論