scanf是c語言中的標(biāo)準(zhǔn)庫函數(shù),主要作用是接收用戶輸入的數(shù)據(jù)。
創(chuàng)新互聯(lián)建站從2013年成立,先為淄川等服務(wù)建站,淄川等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為淄川企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
scanf是C語言中的輸入函數(shù),可以從鍵盤獲得用戶輸入,和printf輸出功能正好相反。scanf的輸入格式是多種多樣的,使用時(shí)需根據(jù)情況選擇,最常用的是十進(jìn)制整數(shù)型輸入%d。
scanf的使用和輸入格式
scanf("%d", c); //輸入一個(gè)整數(shù)并賦值給c。
scanf("%d", d); //輸入一個(gè)整數(shù)并賦值給d。
scanf("%d,%d", c, d); //輸入兩個(gè)整數(shù)并分別賦值給c、d。
scanf("%d %d", c, d); //輸入兩個(gè)整數(shù)并分別賦值給c、d。
前兩個(gè)scanf:輸入一個(gè)整數(shù),按下回車鍵,scanf會(huì)讀取鍵盤輸入,并把數(shù)據(jù)賦值給c(或d);后兩個(gè)scanf:都是一樣功能,輸入格式不同,對(duì)于scanf(),輸入數(shù)據(jù)的格式要和控制字符串的格式保持一致。比如:輸入15 24回車,輸入15,24回車,同樣的把值分別賦給c和d。
庫函數(shù)(Library function)是把函數(shù)放到庫里,供別人使用的一種方式。.方法是把一些常用到的函數(shù)編完放到一個(gè)文件里,供不同的人進(jìn)行調(diào)用。調(diào)用的時(shí)候把它所在的文件名用#include加到里面就可以了。一般是放到lib文件里的。
一般是指編譯器提供的可在c源程序中調(diào)用的函數(shù)。可分為兩類,一類是c語言標(biāo)準(zhǔn)規(guī)定的庫函數(shù),一類是編譯器特定的庫函數(shù)。
由于版權(quán)原因,庫函數(shù)的源代碼一般是不可見的,但在頭文件中你可以看到它對(duì)外的接口
庫函數(shù)簡介。
C語言的語句十分簡單,如果要使用C語言的語句直接計(jì)算sin或cos函數(shù),就需要編寫頗為復(fù)雜的程序。因?yàn)镃語言的語句中沒有提供直接計(jì)算sin或cos函數(shù)的語句。又如為了顯示一段文字,我們?cè)贑語言中也找不到顯示語句,只能使用庫函數(shù)printf。
C語言的庫函數(shù)并不是C語言本身的一部分,它是由編譯程序根據(jù)一般用戶的需要編制并提供用戶使用的一組程序。C的庫函數(shù)極大地方便了用戶,同時(shí)也補(bǔ)充了C語言本身的不足。事實(shí)上,在編寫C語言程序時(shí),應(yīng)當(dāng)盡可能多地使用庫函數(shù),這樣既可以提高程序的運(yùn)行效率,又可以提高編程的質(zhì)量。
這里調(diào)用的是靜態(tài)庫。
函數(shù)庫:函數(shù)庫是由系統(tǒng)建立的具有一定功能的函數(shù)的集合。庫中存放函數(shù)的名稱和對(duì)應(yīng)的目標(biāo)代碼,以及連接過程中所需的重定位信息。用戶也可以根據(jù)自己的需要建立自己的用戶函數(shù)庫。
庫函數(shù):存放在函數(shù)庫中的函數(shù)。庫函數(shù)具有明確的功能、入口調(diào)用參數(shù)和返回值。
連接程序:將編譯程序生成的目標(biāo)文件連接在一起生成一個(gè)可執(zhí)行文件。
頭文件:有時(shí)也稱為包含文件。C語言庫函數(shù)與用戶程序之間進(jìn)行信息通信時(shí)要使用的數(shù)據(jù)和變量,在使用某一庫函數(shù)時(shí),都要在程序中嵌入(用#include)該函數(shù)對(duì)應(yīng)的頭文件。
由于C語言編譯系統(tǒng)應(yīng)提供的函數(shù)庫尚無國際標(biāo)準(zhǔn)。不同版本的C語言具有不同的庫函數(shù),用戶使用時(shí)應(yīng)查閱有關(guān)版本的C的庫函數(shù)參考手冊(cè)。我們以Turbo C為例簡介一下C的庫函數(shù),并附錄中給出了Turbo C的部分常用庫函數(shù)。
庫函數(shù)是c語言中程序自帶的程序代碼,它提供了基本輸入輸出,排序等可以直接使用的代碼,可減少程序員的編程時(shí)間,這些函數(shù)只要直接調(diào)用就可以使用了.
如:輸入輸出 在程序開頭為: #include stdio.h
文件stddef.h里包含了標(biāo)準(zhǔn)庫的一些常用定義,無論我們包含哪個(gè)標(biāo)準(zhǔn)頭文件,stddef.h都會(huì)被自動(dòng)包含進(jìn)來。
這個(gè)文件里定義:
類型size_t (sizeof運(yùn)算符的結(jié)果類型,是某個(gè)無符號(hào)整型);
類型ptrdiff_t(兩個(gè)指針相減運(yùn)算的結(jié)果類型,是某個(gè)有符號(hào)整型);
類型wchar_t (寬字符類型,是一個(gè)整型,其中足以存放本系統(tǒng)所支持的所有本地環(huán)境中的字符集的所有編碼值。這里還保證空字符的編碼值為0);
符號(hào)常量NULL (空指針值);
宏offsetor (這是一個(gè)帶參數(shù)的宏,第一個(gè)參數(shù)應(yīng)是一個(gè)結(jié)構(gòu)類型,第二個(gè)參數(shù)應(yīng)是結(jié)構(gòu)成員名。 offsetor(s,m)求出成員m在結(jié)構(gòu)類型t的變量里的偏移量)。
. 使用scanf函數(shù)的注意事項(xiàng)。
scanf函數(shù)的一般語法格式為 scanf(格式占位符列表,變量地址列表),常用的格式占位符有%d(整型數(shù)),%f(浮點(diǎn)型數(shù))等。
示例:1) 輸入一個(gè)整型值給變量a : scanf(“%d”,a); //注意a前有取地址符,因?yàn)檎Z法格式要求此處是變量地址。
2)輸出兩個(gè)整型值分別給變量a,b
可以使用兩條scanf函數(shù)語句來實(shí)現(xiàn):
scanf(“%d”,a); scanf(“%d”,b);
這種寫法主要的缺點(diǎn)就是繁瑣,幾個(gè)變量就需要寫幾篇scanf,輸入數(shù)據(jù)時(shí),兩次數(shù)據(jù)間用空格或回車分隔都可以。
也可以使用一條scanf函數(shù)語句實(shí)現(xiàn):
scanf(“%d%d”,a,b); //注意兩個(gè)%d是放在一個(gè)雙引號(hào)內(nèi),中間不需要使用任何分隔符,在程序運(yùn)行輸入數(shù)據(jù)時(shí),用戶可以用空格或回車將兩個(gè)數(shù)分隔開。
特別提醒注意的是:如果寫成 scanf(“%d,%d”,a,b); 那么用戶在輸入數(shù)據(jù)時(shí),中間也必須用,將兩個(gè)輸入數(shù)據(jù)分隔開。
2. printf()函數(shù)
基本語法格式 printf(格式占位符列表,變量列表);
在printf()函數(shù)中,格式占位符決定了輸出的樣子,只是在占位符列表中,用占位符%d等先把位置占住,然后將后面的變量值依次填入前面的占位符處。
例如: 假設(shè)a的值為50,b的值為78
printf(“%d”,a); 此函數(shù)語句代表將變量a的值輸出,因?yàn)楦袷秸嘉环斜碇兄挥幸粋€(gè)%d,所以只輸入一個(gè)值屏幕上顯示的輸出結(jié)果為 50
printf(“%d,%d”,a,b) 此函數(shù)表示將a與b兩個(gè)變量的值輸出,中間還需要有一個(gè)逗號(hào),這是由輸出格式?jīng)Q定的,格式占位符列表為 %d,%d,就表示要輸出兩個(gè)變量,變量中間有逗號(hào),執(zhí)行時(shí),將a的值填在第一個(gè)%d處,b的值填在第2個(gè)%d處。屏幕中顯示的輸出結(jié)果為 50,78
printf(“a=%d,b=%d”,a,b) 格式占位符是 a=%d,b=%d 其中a=,b=這都會(huì)原樣輸出,后面a,b的值分別填入前兩個(gè)%所在位置。屏幕中顯示的輸出結(jié)果為 a=50,b=78
int
add(int
x,int
y);
int
sub(int
x,int
y);
int
mul(int
x,int
y);
int
div(int
x,int
y);
#include
math.h
#include
stdio.h
void
main()
{
int
a,b,c,d,e,f,g,h,i;
printf("XXXXXXXXXXXXXXX計(jì)算器");
printf("\n");
for(c=1;c=30;c++)
printf("*");
printf("\n");
printf("請(qǐng)輸入一個(gè)整數(shù)");
printf("\n");
scanf("%d",a);
printf("\n");
for(c=1;c=30;c++)
printf("-");
printf("\n");
printf("請(qǐng)選擇您要做的運(yùn)算:1.+,2.-,3.*,4./5.abs,6.sqrt");
printf("\n");
for(c=1;c=30;c++)
printf("*");
printf("\n");
scanf("%d",d);
printf("\n");
if(d==5)
{printf("%d",abs(a));goto
end;}(如果想做絕對(duì)值,就直接做abs函數(shù)(它是個(gè)庫函數(shù)).做完后就goto"end"--也就是函數(shù)的最后.)
if(d==6)
{printf("%.2f",sqrt(a));goto
end;};}(如果想做開平方,就直接做sqrt函數(shù)(它是個(gè)庫函數(shù)).做完后就goto"end"--也就是函數(shù)的最后.)
printf("請(qǐng)?jiān)俅屋斎胍粋€(gè)整數(shù)");
(如果是做雙目的就開始輸入第二個(gè)數(shù)b)
printf("\n");
scanf("%d",b);
printf("\n");
switch(d)
{
case
1:add(a,b);break;
case
2:sub(a,b);break;
case
3:mul(a,b);break;
case
4:div(a,b);break;
default:printf("date
input
error!\n");
}
end:
printf("\n");}
int
add(int
x,int
y)
{
int
m;
m=x+y;
printf("%d",m);
return
m;
}
int
sub(int
x,int
y)
{
int
m;
m=x-y;
printf("%d",m);
return
m;
}
int
mul(int
x,int
y)
{
int
m;
m=x*y;
printf("%d",m);
return
m;
}
int
div(int
x,int
y)
{
int
m;
m=x/y;
printf("%d",m);
return
m;
}
(你試試看吧!應(yīng)該可以!呵呵)