柚子快報(bào)邀請(qǐng)碼778899分享:開(kāi)發(fā)語(yǔ)言 【C語(yǔ)言】多組輸入
柚子快報(bào)邀請(qǐng)碼778899分享:開(kāi)發(fā)語(yǔ)言 【C語(yǔ)言】多組輸入
C系列文章目錄
目錄
C系列文章目錄
一、什么是多組輸入?
二、如何使用多組輸入
2.1,試題舉例講解?
2.2,錯(cuò)誤解法
2.3,我們實(shí)現(xiàn)多組輸入的思路
2.4,第一種正確的解法
2.5,第二種正確的解法
2.6,多組輸入的第二種輸入方法?
2.7,如何停止多組輸入?
總結(jié)
前言
我們學(xué)習(xí)C語(yǔ)言,從小白成長(zhǎng)為大佬的的探險(xiǎn)歷程,我們?cè)谶@章將初步探索多組輸入這個(gè)知識(shí)關(guān)卡
一、什么是多組輸入?
在C語(yǔ)言中,"多組輸入"通常指的是從用戶處接收多個(gè)輸入值的情況。這些輸入值可以是不同的數(shù)據(jù)類型,例如整數(shù)、浮點(diǎn)數(shù)、字符等。
二、如何使用多組輸入
2.1,試題舉例講解?
我們通過(guò)該題進(jìn)行講解多組輸入:
2.2,錯(cuò)誤解法
該解法只能通過(guò)僥幸的通過(guò)??途W(wǎng),但不是真正的符合該題的多組輸入的要求
//如果這樣寫(xiě),通過(guò)了很僥幸,因?yàn)轭}目要求多組輸入
//只能跑一組數(shù)據(jù),這個(gè)代碼只接收一組數(shù)據(jù),判斷完就就結(jié)束了
int main()
{
//輸入
int iq = 0;
scanf("%d", &iq);
//判斷
if (iq >= 140)
{
printf("Genius\n");
}
return 0;
}
2.3,我們實(shí)現(xiàn)多組輸入的思路
如何實(shí)現(xiàn)多組循環(huán)思路 多組輸入就是那多組數(shù)據(jù)去測(cè)試,不會(huì)只測(cè)試一組數(shù)據(jù),判斷完就結(jié)束 為了實(shí)現(xiàn)多組輸入,我們想讓這個(gè)代碼多組輸入,就要讓代碼循環(huán)起來(lái) 我們是不是要讓這個(gè)scanf接收一個(gè)數(shù)據(jù),判斷一下,然后在接收數(shù)據(jù),在判斷,如此循環(huán)下去。 我們寫(xiě)一個(gè)while(),在while()判斷的條件的地方放上scanf("%d", &iq) 我們都知道,while循環(huán)是先執(zhí)行判斷語(yǔ)句 while循環(huán)判斷scanf,得到一個(gè)返回值,如果返回值為真的話,while循環(huán)就進(jìn)來(lái) 正好你讀到了iq,while就判斷iq,直到我們這里讀取數(shù)據(jù)失敗,為假的時(shí)候就跳出循環(huán) 我們想要的拿scanf的返回值判斷的話,我們就要知道scanf的返回值是什么。
我們打開(kāi)一個(gè)叫https://cplusplus.com/doc/tutorial/的網(wǎng)站 回到老版,然后輸入搜索scanf,然后我們可以看到scnaf的返回類型是int 返回的整型是什么呢,我們往下翻,可以看到一個(gè)Return Value,他的意思接收返回值 是描述的scanf的返回值相關(guān)的一個(gè)意思,這一段英文描述的是什么意思呢, 如果scanf讀取了幾個(gè)數(shù)字,就返回讀取到數(shù)字的個(gè)數(shù) ?如果它返回1就是讀取正常了
2.4,第一種正確的解法
scanf 函數(shù)是輸入函數(shù) 函數(shù)的返回值是:int 如果讀取成功,返回的就是實(shí)際讀取到的數(shù)據(jù)的個(gè)數(shù) 如果函數(shù)讀取失敗,就返回EOF 非常簡(jiǎn)單的寫(xiě)法就是scanf == 1,scanf讀取到一個(gè)數(shù)字,如果返回值=1,就證明讀取正常,就進(jìn)去判斷
我們將使用代碼,注釋和運(yùn)行結(jié)果圖來(lái)理解:
int main()
{
//輸入
int iq = 0;
//scanf 函數(shù)是輸入函數(shù)
//函數(shù)的返回值是:int
// 如果讀取成功,返回的就是實(shí)際讀取到的數(shù)據(jù)的個(gè)數(shù)
// 如果函數(shù)讀取失敗,就返回EOF
//非常簡(jiǎn)單的寫(xiě)法就是scanf == 1,scanf讀取到一個(gè)數(shù)字,如果返回值=1,就證明讀取正常,就進(jìn)去判斷
//
while (scanf("%d", &iq) == 1)
{
//判斷
if (iq >= 140)
{
printf("Genius\n");
}
}
return 0;
}
2.5,第二種正確的解法
scanf 函數(shù)是輸入函數(shù) 函數(shù)的返回值是:int 如果讀取成功,返回的就是實(shí)際讀取到的數(shù)據(jù)的個(gè)數(shù) 如果函數(shù)讀取失敗,就返回EOF,EOF的值-1 非常簡(jiǎn)單的寫(xiě)法就是scanf == 1,scanf讀取到一個(gè)數(shù)字,如果返回值=1,就證明讀取正常,就進(jìn)去判斷 我們就去判斷如果scanf讀取一個(gè)整數(shù)的時(shí)候,發(fā)現(xiàn)沒(méi)有讀到,發(fā)現(xiàn)失敗了,就返回EOF
如果返回的不是EOF,就是讀取成功了。就為真,不等于EOF所以為真 ? ??
我們將使用代碼,注釋和運(yùn)行結(jié)果圖來(lái)理解:
int main()
{
//輸入
int iq = 0;
//scanf 函數(shù)是輸入函數(shù)
//函數(shù)的返回值是:int
// 如果讀取成功,返回的就是實(shí)際讀取到的數(shù)據(jù)的個(gè)數(shù)
// 如果函數(shù)讀取失敗,就返回EOF,EOF的值-1
//非常簡(jiǎn)單的寫(xiě)法就是scanf == 1,scanf讀取到一個(gè)數(shù)字,如果返回值=1,就證明讀取正常,就進(jìn)去判斷
//我們就去判斷如果scanf讀取一個(gè)整數(shù)的時(shí)候,發(fā)現(xiàn)沒(méi)有讀到,發(fā)現(xiàn)失敗了,就返回EOF
while (scanf("%d", &iq) != EOF)//如果返回的不是EOF,就是讀取成功了。就為真,不等于EOF所以為真
{
//判斷
if (iq >= 140)
{
printf("Genius\n");
}
}
return 0;
}
2.6,多組輸入的第二種輸入方法?
我們還可以這樣輸入,同樣while執(zhí)行的時(shí)候是讀取一個(gè),判斷完,在讀取下一個(gè)
我們將使用代碼,注釋和運(yùn)行結(jié)果圖來(lái)理解:?
2.7,如何停止多組輸入?
我們?cè)趺赐V惯@個(gè)代碼呢, 第一種方法就是ctrl+z就是可以停止 因?yàn)閏trl+Z可以讓scanf返回EOF 但是在vs2022上你會(huì)發(fā)現(xiàn)需要按三個(gè)ctrl+z,才能結(jié)束這個(gè)程序 這是vs的一個(gè)bug,其他的編譯器按一個(gè)ctrl+z就結(jié)束了
總結(jié)
以上就是今天要講的內(nèi)容,本文僅僅全面介紹了C語(yǔ)言的多組輸入問(wèn)題,可以讓你在c語(yǔ)言的探險(xiǎn)更加有趣,充實(shí)。
柚子快報(bào)邀請(qǐng)碼778899分享:開(kāi)發(fā)語(yǔ)言 【C語(yǔ)言】多組輸入
文章來(lái)源
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。