#arrays #c #reverse
Вопрос:
Я пытаюсь написать программу, которая собирает массив чисел размером 10 и другое число. Программа проверит, есть ли в массиве два числа, чтобы их сумма совпадала с числом, которого нет в массиве. Если это так, программа выведет 2 числа, если нет, программа выведет нет.
Это то, что я делал до сих пор:
#include <stdio.h>
void main()
{
int array[10], number;
for (int i; i < 10; i )
{
scanf("%d", amp;array[i]);
}
scanf("%d", amp;number);
}
Я не знаю, как продолжать дальше. Кто-нибудь может помочь, пожалуйста?
Спасибо 🙂
Ответ №1:
Эта программа должна соответствовать вашим потребностям. Он не печатает пару дважды (например arr[1] arr[2]
, и arr[2] arr[1]
) и не принимает одно и то же число, умноженное на два (например arr[3] arr[3]
). Я включил в код некоторые комментарии, которые помогают это объяснить.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
/* set your own `sum` and `arr` */
int sum = 14;
int arr[] = {1, 4, 6, 3, 2, 8, 5, 7, 3, 9};
/* calculate size of `arr` */
size_t size = sizeof(arr) / sizeof(int);
for (int i = 0; i < size; i) {
/* start from `i 1` */
for (int j = i 1; j < size; j) {
/* check if the sum is right */
if (arr[i] arr[j] == sum)
printf("%d %d = %dn",
arr[i], arr[j], sum);
}
}
return EXIT_SUCCESS;
}
С учетом вышесказанного sum
и arr
вывод программы будет:
6 8 = 14
5 9 = 14
Комментарии:
1. Если этот ответ решил вашу проблему и вы ее понимаете, пожалуйста, отметьте его как принятый.