ACM輸入輸出技術總結

2021-10-14 20:54:47 字數 3754 閱讀 5788

第一類:輸入不說明有多少個inputblock,以eof為結束標誌。

例子:hdoj_1089(

c:

#include

intmain()

}

說明:int scanf( const char *format, … ); 返回輸入資料個數 ,沒有則返回eof(-1)。

c++:

#include

using

namespace std;

intmain()

return0;

}

:輸入一開始就會說有n個input block,下面接著是n個input block。

例子:hdoj_1090 (

c:

#include

intmain()

return0;

}

c++:

#include

using

namespace std;

intmain()

return0;

}

:輸入不說明有多少個input block,但以某個特殊輸入為結束標誌。

例子:hdoj_1091(

c:

#include

intmain()

return0;

}

注意:while(scanf("%d %d",&a,&b) &&(a!=0 && b!=0)) 由於&&運算子是短路運算,所以,如果你輸入的是

0 5,輸入正確,a!= 0為假,整個邏輯表示式的值就為假,跳出結束程式,與題目輸入規則相矛盾!

c++:

#include

using

namespace std;

intmain()

return0;

}

:以上三類的組合。

例子:hdoj_1092(

c:

#include

intmain()

printf

("%d\n"

,sum);}

return0;

}

c++:

#include

using

namespace std;

intmain()

cout << sum << endl;

}return0;

}

hdoj_1093(

c:

#include

intmain()

printf

("%d\n"

,sum);}

return0;

}

c++:

#include

using

namespace std;

intmain()

cout << sum << endl;

}return0;

}

hdoj_1094(

c:

#include

intmain()

printf

("%d\n"

,sum);}

return0;

}

c++:

#include

using

namespace std;

intmain()

cout << sum << endl;

}return0;

}

:輸入的是一整行字串

例子:hdoj_1048(

c:

#include

#include

#include

#define max 1000 + 10

char buf[max]

,fs[15]

="start"

,fe[15]

="end"

,fend[15]

="endofinput"

;int

main()

printf

("\n");

//printf("%s\n",buf);

}}

c++:

#include

#include

#include

#define max 1000 + 10

using

namespace std;

string buf;

intmain()

if(buf == fend)

break

;for

(i =

0; i < buf.

length()

; i++

) cout << buf << endl;

//getline(cin,buf);

}return0;

}

注意:如果用char [255]保持,可以使用cin.getline(char,255),上述使用了string進行儲存

一般來說,讀入一行的可以使用以上方法,如果讀入乙個字串,可以使用scanf("%s",str);或者cin << str;讀者可以根據題目自行分析,如果使用c語言中的getc(char)或者scanf("%c",chr),則會讀入空格,回車,這個的地方要注意。

練習:hdoj_1013(

hdoj_1018(

語法:c: printf("%d\n",ans);

c++:cout << ans << endl;

:乙個input block對應乙個output block,每個output block之後都有空行。

例子:hdoj_1095(

c:

#include

intmain()

return0;

}

c++:

#include

using

namespace std;

intmain()

return0;

}

:乙個input block對應乙個output block,output block之間有空行。

例子:hdoj_1096(

c:

#include

intmain()

printf

("%d\n"

,sum);if

(i != n)

printf

("\n");

}return0;

}

c++:

#include

using

namespace std;

intmain()

cout << sum << endl;

if(i != n)

cout << endl;

}return0;

}

練習:

hdoj_1016:

hdoj_1017:

hdoj:

1016-1018、1013、1061、1170、2000-2043

本文**測試均在codeblocks下測試成功,並且在hdoj能ac。

acm 輸入輸出總結

資料的輸入格式影響判斷迴圈終止的方式,迴圈判定發生在各組資料之間的輸入過程中和組內單個資料的輸入過程中,常見的資料輸入格式有三種 給出輸入規模 首先,輸入乙個整數n,n為輸入規模 然後,輸入n組資料。以特定輸入標誌結束 最後一組輸入為題目中指定的一組特定輸入,標誌輸入的結束。這組輸入一般為一組無意義...

acm 輸入輸出測試

1 巧用 scanf 當沒告訴你輸入幾個時 直接輸入一串數字,以空格分開,換行結束 int a maxn int n char c while scanf d c a n,c c n n 2 當沒告訴你有幾組資料時,只告訴你 每組資料的結束標誌,程式的結束標誌時 要採取順序結構的思想,while 判...

ACM入門之輸入輸出

include stdio.h int main 在開始做 acm時,會面臨乙個輸入輸出資料的問題,acm裡的輸入輸出資料和平時寫的程式不大一樣。下面詳解 acm有關輸入輸出的問題。一 輸入 1 只有一組測試資料,這時候是最簡單的了,請看題目 sdutoj1000。c語言 include stdio...