У меня есть задание, в котором я должен ввести количество имен, которые я хочу сравнить. Затем я должен проверить, повторяется ли первое имя в именах, которые я напечатал. Например, если я ставлю в 5 Рейгана, Буша, Рейгана, Буша, Клинтона, он напечатает «Первое имя повторилось», но если я поставлю Дэвиса для любого из рейганов, это скажет «нет». Я попытался создать цикл for и if, но я не могу найти правильный вывод. Я использую Dev C++, и вот что я до сих пор.Строки: поиск повторения первого слова с использованием strcmp
#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;
}
Эта строка кажется подозрительной 'if (i == 0) {', поскольку это будет означать, что сравнение выполняется только для введенного имени. – miltonb
Добро пожаловать в переполнение стека. Вскоре прочитайте страницу [О программе]. Вы отметили этот вопрос с помощью C++, но код, который вы показываете, не использует каких-либо отличительных особенностей C++ вообще и вполне может быть помечен как C. На первый взгляд, похоже, что ваш код не будет компилироваться; это всегда серьезная проблема. _However_, он компилируется, но ваше размещение близких брекетов очень сбивает с толку. Тот, который после последнего 'printf()' фактически завершает цикл 'for'. Пожалуйста, изучите стандартный макет - стиль Allman или OTBS (один True Brace Style). Вы можете найти их достаточно легко. –
@kaitlyn - Я отредактировал ваш макет, надеюсь, вы увидите, что Джонатан указывает на макет. Лучшая компоновка позволяет избежать логических проблем. – miltonb