问题 : Dinner


题目描述

Little A is one member of ACM team. He had just won the gold in World Final. To celebrate, he decided to invite all to have one meal. As bowl, knife and other tableware is not enough in the kitchen, Little A goes to take backup tableware in warehouse. There are many boxes in warehouse, one box contains only one thing, and each box is marked by the name of things inside it. For example, if "basketball" is written on the box, which means the box contains only basketball. With these marks, Little A wants to find out the tableware easily. So, the problem for you is to help him, find out all the tableware from all boxes in the warehouse.

输入

There are many test cases. Each case contains one line, and one integer N at the first, N indicates that there are N boxes in the warehouse. Then N strings follow, each string is one name written on the box.

输出

For each test of the input, output all the name of tableware.

样例输入

3 basketball fork chopsticks

2 bowl letter

样例输出

fork chopsticks

bowl

提示

 

The tableware only contains: bowl, knife, fork and chopsticks.

题意描述:

输入n找出n个单词中是否含有‘bowl’‘ knife’ ‘fork’ ‘ chopsticks’;

输出符合条件的所有单词;

解题思路:

定义两个字符类型的二维数组,将四个单词存入到四个数组中,将输入的字符串每行存入一个单词再将这个单词与符合条件的四个单词利用函数strcmp比较,若相同利用函数strcpy存入到第二个二维数组中。

程序代码:

#include<stdio.h>

#include<string.h>

char x[1000][1000],y[1000][1000];

char a[100]="bowl",b[100]="knife",c[100]="fork",d[100]="chopsticks";

int main()

{

    int n,i,j,p;

    while(scanf("%d",&n)!=EOF)

    {

        j=1;

        p=0;

        for(i=1;i<=n;i++)

        {

            scanf("%s",x[i]);

            if(strcmp(x[i],a)==0||strcmp(x[i],b)==0||strcmp(x[i],c)==0||strcmp(x[i],d)==0)

            {

                strcpy(y[j],x[i]);

                j++;

                p++;

            }

        }

        for(i=1;i<=p;i++)

        {

            for(j=0;y[i][j]!='\0';j++)

                printf("%c",y[i][j]);

            printf(" ");

        }

        printf("\n");

    }

    return 0;

}