Даны три слова. Напечатать те буквы слов, которые есть в одном из слов - C (СИ)
Формулировка задачи:
Условие:
Даны три слова. Напечатать только те буквы слов, которые есть только в одном из слов.*Повторяющиеся буквы каждого слова рассматриваются*
#include <stdio.h>
#include <ctype.h>
void main(void)
{
const char str1[]={0};
const char str2[]={0};
int i,j;
printf("Enter 1: ");
scanf("%s",str1);
printf("Enter 2: ");
scanf("%s",str2);
//для 1-ого слова
printf("# 1: ");
for(i=0;i<strlen(str1);i++){
for(j=0;j<strlen(str2);j++){
if(str1[i]!=str2[j]) printf("%c",str1[i]);
}
}
//для 2-ого слова
printf("\r\n# 2: ");
for(i=0;i<strlen(str2);i++){
for(j=0;j<strlen(str1);j++){
if(str2[i]!=str1[j]) printf("%c",str2[i]);
}
}
}Решение задачи: «Даны три слова. Напечатать те буквы слов, которые есть в одном из слов»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#define N 3
#define M 30
int main()
{
char str[N][M];
int i, j, k, q, flag = 0;
for(i = 0; i < N; i++){
printf("Enter word %d\n", i + 1);
fgets(str[i], M, stdin);
}
for(i = 0; i < N; i++){
for(j = 0; str[i][j]; j++, flag = 0){
for(k = 0; k < N; k++){
if(k != i)
for(q = 0; str[k][q]; q++){
if(str[i][j] == str[k][q]){
flag = 1;
break;
}
}
}
if(!flag)
putchar(str[i][j]);
}
}
return 0;
}
Объяснение кода листинга программы
В этом коде пользователь вводит три слова, затем программа ищет буквы, которые есть хотя бы в одном из слов, и выводит их на экран. Вот список элементов кода с их номерами:
- #include
- подключает файл стандартного ввода/вывода - #include
- подключает файл стандартных библиотек - #define N 3 - определяет количество слов
- #define M 30 - определяет максимальную длину слов
- int main() - определяет основную функцию программы
- char str[N][M]; - объявляет массив строк для хранения слов
- int i, j, k, q, flag = 0; - объявляет переменные для циклов и флаг
- for(i = 0; i < N; i++){ - цикл по словам
- printf(
Enter word %d\n, i + 1); - вывод приглашения для ввода слова - fgets(str[i], M, stdin); - считывание слова из стандартного ввода
- for(i = 0; i < N; i++){ - цикл по словам
- for(j = 0; str[i][j]; j++, flag = 0){ - цикл по буквам слова
- for(k = 0; k < N; k++){ - цикл по словам
- if(k != i) - условие для проверки только не текущего слова
- for(q = 0; str[k][q]; q++){ - цикл по буквам слова
- if(str[i][j] == str[k][q]){ - условие для проверки совпадения букв
- flag = 1; - установка флага при совпадении
- break; - выход из внутреннего цикла при совпадении
- } - закрывает условие внутреннего цикла
- if(!flag) - условие для проверки флага
- putchar(str[i][j]); - вывод буквы на экран
- } - закрывает условие внешнего цикла
- return 0; - завершение программы