C Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char input[1000];
while(gets(input)!=0){
int len = strlen(input);
int i=0,j;
char tmp[5];
int fc=0;
while(i<len){
if(input[i]=='0'||input[i]=='1'){
for(j=i;j<i+5;j++)printf("%c",input[j]);
if(fc==0)
for(j=i;j<i+5;j++)tmp[j-i]=input[j];
else if(fc==1)
for(j=i;j<i+5;j++)
if(tmp[j-i]=='1'&&input[j]=='1')tmp[j-i]='1';
else tmp[j-i]='0';
else if(fc==2)
for(j=i;j<i+5;j++)
if((tmp[j-i]=='1')||(input[j]=='1'))tmp[j-i]='1';
else tmp[j-i]='0';
i+=6;
}
else if(input[i]=='a'){
printf("&&");
fc = 1;
i+=4;
}
else if(input[i]=='o'){
printf("||");
fc = 2;
i+=3;
}
else
break;
}
printf(" = %s\n",tmp);
}
return 0;
}
第 1 測資點(0%): WA (line:1)
您的答案為: 00011||01100 = 01111�e\�� ...略 正確答案為: 00011||01100 = 01111
您的答案為: 10001||10000&&11101&&01001 = 00001�5k�� ...略 正確答案為: 10001||10000&&11101&&01001 = 00001
您的答案為: 01110&&01110||00100||00111 = 01111�j�� ...略 正確答案為: 01110&&01110||00100||00111 = 01111
您的答案為: 00100||01110||00010&&10100&&11110&&11111||01100 = 01100��c�� ...略 正確答案為: 00100||01110||00010&&10100&&11110&&11111||01100 = 01100
答案結尾輸出了不明的資料,覺得是輸出了不在規劃的記憶體內容,
可是自己的測試完全沒有這個狀況,試了幾個可能想到的問題都失敗,
因此想來請教下有沒有人知道這是如何發生的?
已解決了,去練其他題目才想到字元陣列做字串用時要以'\0'來做字串結尾