1

比較したい名前の数を入力しなければならない課題があります。次に、印刷された最初の名前が印刷された名前で繰り返されているかどうかを確認する必要があります。たとえば、レーガン、ブッシュ、レーガン、ブッシュ、クリントンの 5 人を入力すると、「最初の名前が繰り返されました」と出力されますが、レーガンのいずれかの代わりにデイビスを入力すると、ノーと表示されます。for ループと if ステートメントを試みましたが、正しい出力が見つからないようです。私はDev C++を使用しています。これが私がこれまでに持っているものです。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main () {
    char curname[30], firstname[30];
    int num, i, freq = 1;


    printf("How many names do you want to enter?\n");
    scanf("%d", &num);
    printf("What is the first name?");
    scanf("%s", firstname); 
    printf("Enter each of their names.\n");
    for (i=0; i<num; i++) {

        scanf("%s", curname);

        if (i==0) {
          strcmp(curname, firstname) != 0;
          printf("The first name in the list was repeated.\n"); 
        }
        else if (strcmp(curname, firstname) == 1)
          printf("The first name in the list was not repeated.\n"); 
    }
    system("pause");
    return 0;
}
4

4 に答える 4

0

strcmp戻り値は 0 より大きいか 0 より小さい可能性があるため、次のようになります。

strcmp(curname, firstname) == 1

への変更:

strcmp(curname, firstname) != 0

その他: 名前をリストに記録していないため、繰り返さないと名前を見つけることができません。

于 2013-09-23T01:49:01.787 に答える