我的寫法如下
要怎麼改才可以符合這題連續輸入的要求呢?
#include <iostream>
using namespace std;
int main(){
int a[5];
char b[5];
int N;
cin>>N;
for(int i=0;i<N;i++){
for(int j=0;i<N;i++){
cin>>a[0]>>a[1]>>a[2]>>a[3];
if(a[0]==0&&a[1]==1&&a[2]==0&&a[3]==1){
b[i]='A';
}else if(a[0]==0&&a[1]==1&&a[2]==1&&a[3]==1){
b[i]='B';
}else if(a[0]==0&&a[1]==0&&a[2]==1&&a[3]==0){
b[i]='C';
}else if(a[0]==1&&a[1]==1&&a[2]==0&&a[3]==1){
b[i]='D';
}else if(a[0]==1&&a[1]==0&&a[2]==0&&a[3]==0){
b[i]='E';
}else if(a[0]==1&&a[1]==1&&a[2]==0&&a[3]==0){
b[i]='F';
}
}
}
for(int i=0;i<N;i++){
cout<<b[i];
}
return 0;
}
如果您有解過 a001 這個題目的話,其「連續輸入」的要求即與此題相同,作法也是類似的。
如果沒有的話,請先行去解 a001 。並搭配本網站首頁的「使用手冊」。
在該網頁的中段應該會找到以下程式碼:
#include <iostream>
using namespace std;
int main() {
string s;
while(cin >> s) {
cout << "hello, "<< s << endl;
}
return 0;
}
其中的 while(cin >> s) 意為一直讀入「東西」直到沒有東西可讀。因為 s 的型態是 string ,因此這邊的「東西」為不包含「換行字元」的字串片段。
原理是 cin 物件在讀取成功時,會回傳形同布林值 true 的東西;讀取失敗時(如碰到 EOF (End of File,檔案尾端)或是強制中斷等),會回傳形同布林值 false 的東西。(實際發生的狀況以及回傳值請參見標準庫的文件以及您使用的編譯器之定義文件)
因此在本題,您可以將程式碼改寫為 while (cin >> N) 之類的架構。(請自行思考該放到哪裡、其他部分程式碼該如何調整)
以上。希望有幫助到您。