ACODE:
#include<iostream>
#include<cstring>
using namespace std;
char A[20][10], B[20][10], C[20][10], Ans[20][10];
int a, b, c, ans;
int main() {
ans = 0;
while (cin >> a >> b >> c) {
ans = 0;
for (int i = 0; i < a; i++)
cin >> A[i];
for (int i = 0; i < b; i++)
cin >> B[i];
for (int i = 0; i < c; i++)
cin >> C[i];
int i, j, k;
bool flag;
for (i = 0; i < b; i++) {
flag = false;
for (j = 0; j < a; j++)
if (strcmp(B[i], A[j]) == 0) {
for (k = 0; k < c; k++) {
if (strcmp(C[k], B[i]) == 0)flag = true;
}
if (!flag) {
strcpy(Ans[ans], B[i]);
ans++;
}
}
}
if (ans == 0)cout << "No enemy spy";
else {
cout << Ans[0];
for (int i = 1; i < ans; i++)
cout << ' ' << Ans[i];
}
cout << endl;
}
return 0;
}
time limited:
#include<stdio.h>
#include<string.h>
char A[30][30];
char B[30][30];
char C[30][30];
char D[30][30];
int a,b,c,t;
int main()
{
while(scanf("%d%d%d",&a,&b,&c)!=0){
t=0;
for (int j = 0; j < a; ++j) {
scanf("%s",A[j]);
}
for (int j = 0; j < b; ++j) {
scanf("%s",B[j]);
}
for (int j = 0; j < c; ++j) {
scanf("%s",C[j]);
}
int flag;
for (int j = 0; j < b; ++j) {
flag=0;
for (int i = 0; i < a; ++i) {
if (!strcmp(B[j], A[i])) {
for (int k = 0; k < c; k++) {
if (!strcmp(C[k], B[j]))
flag = 1;
}
if (!flag) {
strcpy(D[t], B[j]);
t++;
}
}
}
}
if (!t)
printf("No enemy spy");
else{
printf("%s",D[0]);
for (int j = 1; j < t; ++j) {
printf(" %s",D[j]);
}
}
printf("\n");
}
return 0;
}
must c++?
scanf return:
1.输入流结尾:EOF=-1 ;按位取反=0,用于0时结束循环
2.0:第一参数输入格式错误,其它参数也错误,返回0;
- scanf() 函数有返回值且类型 int 型,当发生错误时立刻返回 EOF。
- scanf() 函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。