怎么做可以把下圖中相同的的款號數(shù)量一鍵整理成一個款號然后款號后面就是這個款的總數(shù)
1321
2022-05-29
函數(shù)名: scanf
功 能: 執(zhí)行格式化輸入
用 法: int scanf(char *format[,argument,...]);
scanf()函數(shù)是通用終端格式化輸入函數(shù),它從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤) 讀取輸入的信息。可以讀入任何固有類型的數(shù)據(jù)并自動把數(shù)值變換成適當(dāng)?shù)臋C內(nèi)格式。
其調(diào)用格式為: scanf("<格式化字符串>",<地址表>);
scanf()函數(shù)返回成功賦值的數(shù)據(jù)項數(shù),出錯時則返回EOF。
其控制串由三類字符構(gòu)成:
1。格式化說明符;
2。空白符;
3。非空白符;
(A) 格式化說明符
格式字符 說明
%a 讀入一個浮點值(僅C99有效)
%A 同上
%c 讀入一個字符
%d 讀入十進制整數(shù)
%i 讀入十進制,八進制,十六進制整數(shù)
%o 讀入八進制整數(shù)
%x 讀入十六進制整數(shù)
%X 同上
%c 讀入一個字符
%s 讀入一個字符串
%f 讀入一個浮點數(shù)
%F 同上
%e 同上
%E 同上
%g 同上
%G 同上
%p 讀入一個指針
%u 讀入一個無符號十進制整數(shù)
%n 至此已讀入值的等價字符數(shù)
%[] 掃描字符集合
%% 讀%符號
附加格式說明字符表
修飾符 說明
L/l 長度修飾符 輸入"長"數(shù)據(jù)
h 長度修飾符 輸入"短"數(shù)據(jù)
W 整型常數(shù) 指定輸入數(shù)據(jù)所占寬度
星號 空讀一個數(shù)據(jù)
hh,ll同上h,l但僅對C99有效。
(B) 空白字符
空白字符會使scanf()函數(shù)在讀操作中略去輸入中的一個或多個空白字符,空白符可以是space,tab,newline等等,直到第一個非空白符出現(xiàn)為止。
(C) 非空白字符
一個非空白字符會使scanf()函數(shù)在讀入時剔除掉與這個非空白字符相同的字符。
scanf函數(shù)探討
1.空白符問題
#include
main()
{
int a;
printf( "input the data/n ");
scanf( "%d/n ",&a);//這里多了一個回車符/n
printf( "%d ",a);
return 0;
}
結(jié)果要輸入兩個數(shù)程序才結(jié)束,而不是預(yù)期的一個。why?
原因:用空白符結(jié)尾時,scanf會跳過空白符去讀下一個字符,所以你必須再輸入一個數(shù)。這里的空白符包括 空格,制表符,換行符,回車符和換頁符。所以如果你用scanf( "%d ",&a)也會出現(xiàn)同樣的問題。
解決方法:這種錯誤大多是輸入的時候不小心,多注意一點就好了。這種問題也不好檢查,編譯沒有問題, 一個空格也不容易看出來。當(dāng)你的程序出現(xiàn)上面的問題時,自己對照檢查一下就可以了。
2.緩沖區(qū)問題
這是一個非常容易錯的地方,我就錯過多次。
#include
main()
{
int n = 5;
char c[n];
for(int i = 0; i < n; i++)
c[i] = scanf( "%c ",&c[i]);
printf(c);
return 0;
}
如果輸入:
a b c 那么循環(huán)就會“提前”結(jié)束了.
原因:輸入a和第一個回車后,a和這個回車符都留在緩沖區(qū)中。第一個scanf讀取了a,但是輸入緩沖區(qū)里面 還留有一個/n,第二個scanf讀取這個/n。然后輸入b和第二個回車,同樣的,第三個scanf讀取了b,第四個 scanf讀取了第二個回車符。第五個讀取了c。所以五個scanf都執(zhí)行了,并沒有提前結(jié)束。只不過有的scanf 讀取到了回車符而已。
解決方法:把程序改成這樣就可以了:
for( i = 0; i < n; i++)
{
scanf( "%c ",&c[i]);
fflush(stdin);//刷新緩沖區(qū)
}
或者不用scanf,而用gets()函數(shù),如:
#include
main()
{
char c[5];
gets(c);
printf(c);
return 0;
}
但要注意:這個函數(shù)自動把你最后敲的回車轉(zhuǎn)換為字符 '/0 '。如果你的輸入超過了數(shù)組的大小,那么就會產(chǎn) 生錯誤。
C 語言
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。