Алгоритмы (C): различия между версиями
Перейти к навигации
Перейти к поиску
(Новая страница: «== Алгоритмы == * [http://pascalabc.net/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D1%81%D1%82%D1%83...») |
|||
(не показаны 34 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
− | == | + | {{TOCRight}} |
− | + | == Код программ == | |
+ | === Сумма вводимых целых чисел === | ||
+ | <syntaxhighlight lang="c" line> | ||
+ | #include <stdio.h> | ||
+ | #include <Windows.h> | ||
+ | |||
+ | int main() { | ||
+ | SetConsoleCP(1251); | ||
+ | SetConsoleOutputCP(1251); | ||
+ | int n, x; | ||
+ | |||
+ | printf("Введите число слагаемых:"); | ||
+ | scanf_s("%d", &n); | ||
+ | |||
+ | int s = 0; | ||
+ | for(int i = 1; i <= n; i++) { | ||
+ | printf("Введите слагаемое №%d:", i); | ||
+ | scanf_s("%d", &x); | ||
+ | s += x; | ||
+ | } | ||
+ | |||
+ | printf("Сумма равна %d", s); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Произведение целых чисел === | ||
+ | <syntaxhighlight lang="c" line> | ||
+ | #include <stdio.h> | ||
+ | #include <Windows.h> | ||
+ | |||
+ | int main() { | ||
+ | SetConsoleCP(1251); | ||
+ | SetConsoleOutputCP(1251); | ||
+ | int n, x; | ||
+ | |||
+ | printf("Введите число множителей:"); | ||
+ | scanf_s("%d", &n); | ||
+ | |||
+ | int p = 1; | ||
+ | for(int i = 1; i <= n; i++) { | ||
+ | printf("Введите множитель №%d:", i); | ||
+ | scanf_s("%d", &x); | ||
+ | p *= x; | ||
+ | } | ||
+ | |||
+ | printf("Произведение равно %d", p); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Сколько нечетных среди n введенных === | ||
+ | <syntaxhighlight lang="c" line> | ||
+ | #include <stdio.h> | ||
+ | #include <Windows.h> | ||
+ | |||
+ | int main() { | ||
+ | SetConsoleCP(1251); | ||
+ | SetConsoleOutputCP(1251); | ||
+ | int n, x; | ||
+ | |||
+ | printf("Введите n:"); | ||
+ | scanf_s("%d", &n); | ||
+ | |||
+ | int count = 0; | ||
+ | for(int i = 1; i <= n; i++) { | ||
+ | printf("Введите целое число:"); | ||
+ | scanf_s("%d", &x); | ||
+ | if (x % 2 != 0) { | ||
+ | count++; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | printf("Количество нечетных равно %d", count); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Защита от неверного ввода === | ||
+ | <syntaxhighlight lang="c" line> | ||
+ | #include <stdio.h> | ||
+ | #include <Windows.h> | ||
+ | |||
+ | int main() { | ||
+ | SetConsoleCP(1251); | ||
+ | SetConsoleOutputCP(1251); | ||
+ | float x; | ||
+ | |||
+ | do { | ||
+ | printf("Введите x>0:"); | ||
+ | scanf_s("%f", &x); | ||
+ | if (x <= 0) { | ||
+ | printf("Неверный ввод\n"); | ||
+ | } | ||
+ | } while (x <= 0); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Вывод 10 первых степеней двойки === | ||
+ | <syntaxhighlight lang="c" line> | ||
+ | #include <stdio.h> | ||
+ | #include <Windows.h> | ||
+ | |||
+ | int main() { | ||
+ | SetConsoleCP(1251); | ||
+ | SetConsoleOutputCP(1251); | ||
+ | int x = 2; | ||
+ | |||
+ | for (int i = 1; i <= 10; i++) { | ||
+ | printf("%3d %5d\n", i, x); | ||
+ | x *= 2; | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Вывод всех двухзначных чисел, кратных 5 === | ||
+ | <syntaxhighlight lang="c" line> | ||
+ | #include <stdio.h> | ||
+ | #include <Windows.h> | ||
+ | |||
+ | int main() { | ||
+ | SetConsoleCP(1251); | ||
+ | SetConsoleOutputCP(1251); | ||
+ | int x = 10; | ||
+ | |||
+ | while (x < 100) { | ||
+ | printf("%3d\n", x); | ||
+ | x += 5; | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Вывод n первых чисел Фибоначчи === | ||
+ | <syntaxhighlight lang="c" line> | ||
+ | #include <stdio.h> | ||
+ | #include <Windows.h> | ||
+ | |||
+ | int main() { | ||
+ | SetConsoleCP(1251); | ||
+ | SetConsoleOutputCP(1251); | ||
+ | int n, a, b; | ||
+ | |||
+ | printf("Введите целое число n (n > 1):"); | ||
+ | scanf_s("%d", &n); | ||
+ | |||
+ | a = 0; b = 1; | ||
+ | printf("%d %d ", a, b); | ||
+ | for (int i = 1; i <= n - 2; ++i) { | ||
+ | int tmp = a; | ||
+ | a = b; | ||
+ | b += tmp; | ||
+ | printf("%d ", b); | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Найти НОД(A,B), используя алгоритм Евклида: === | ||
+ | <syntaxhighlight lang="c" line> | ||
+ | #include <stdio.h> | ||
+ | #include <Windows.h> | ||
+ | |||
+ | int main() { | ||
+ | SetConsoleCP(1251); | ||
+ | SetConsoleOutputCP(1251); | ||
+ | int a, b; | ||
+ | |||
+ | printf("Введите целое число a:"); | ||
+ | scanf_s("%d", &a); | ||
+ | printf("Введите целое число b:"); | ||
+ | scanf_s("%d", &b); | ||
+ | |||
+ | while (b != 0) { | ||
+ | int tmp = a; | ||
+ | a = b; | ||
+ | b = tmp % b; | ||
+ | } | ||
+ | |||
+ | printf("НОД(A, B) = %d", a); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Найти сумму цифр целого числа m === | ||
+ | <syntaxhighlight lang="c" line> | ||
+ | #include <stdio.h> | ||
+ | #include <Windows.h> | ||
+ | |||
+ | int main() { | ||
+ | SetConsoleCP(1251); | ||
+ | SetConsoleOutputCP(1251); | ||
+ | int m; | ||
+ | |||
+ | printf("Введите целое число m:"); | ||
+ | scanf_s("%d", &m); | ||
+ | |||
+ | int sum = 0; | ||
+ | int m1 = abs(m); | ||
+ | |||
+ | while (m1 > 0) { | ||
+ | sum += m1 % 10; | ||
+ | m1 /= 10; | ||
+ | } | ||
+ | |||
+ | printf("Сумма цифр числа %d равна %d", m, sum); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Найти max из введенных чисел === | ||
+ | <syntaxhighlight lang="c" line> | ||
+ | #include <stdio.h> | ||
+ | #include <Windows.h> | ||
+ | |||
+ | int main() { | ||
+ | SetConsoleCP(1251); | ||
+ | SetConsoleOutputCP(1251); | ||
+ | int n, x; | ||
+ | |||
+ | printf("Введите количество чисел:"); | ||
+ | scanf_s("%d", &n); | ||
+ | |||
+ | printf("Введите число 1:"); | ||
+ | scanf_s("%d", &x); | ||
+ | int max = x; | ||
+ | |||
+ | for (int i = 2; i <= n; i++) { | ||
+ | printf("Введите число %d:", i); | ||
+ | scanf_s("%d", &x); | ||
+ | if (x > max) { | ||
+ | max = x; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | printf("Максимальное из введенных чисел: %d", max); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Найти min, удовлетворяющее условию p(x) === | ||
+ | <syntaxhighlight lang="c" line> | ||
+ | #include <stdio.h> | ||
+ | #include <Windows.h> | ||
+ | #include <stdbool.h> | ||
+ | #include <float.h> | ||
+ | |||
+ | bool p(double x) { | ||
+ | return x > 0; | ||
+ | } | ||
+ | |||
+ | int main() { | ||
+ | SetConsoleCP(1251); | ||
+ | SetConsoleOutputCP(1251); | ||
+ | int n, x; | ||
+ | |||
+ | printf("Введите целое число n (n > 0):"); | ||
+ | scanf_s("%d", &n); | ||
+ | |||
+ | bool exists = false; | ||
+ | double min = DBL_MAX; | ||
+ | for (int i = 0; i < n; ++i) { | ||
+ | printf("Введите %d число:", i+1); | ||
+ | scanf_s("%d", &x); | ||
+ | if ((x < min) && p(x)) { | ||
+ | min = x; | ||
+ | exists = true; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if (exists) { | ||
+ | printf("Минимальное из введенных чисел, удовлетворяющих условию: %f", min); | ||
+ | } else { | ||
+ | printf("Нет чисел, удовлетворяющих условию"); | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Есть ли среди введенных число k? === | ||
+ | <syntaxhighlight lang="c" line> | ||
+ | #include <stdio.h> | ||
+ | #include <Windows.h> | ||
+ | #include <stdbool.h> | ||
+ | |||
+ | int main() { | ||
+ | SetConsoleCP(1251); | ||
+ | SetConsoleOutputCP(1251); | ||
+ | int x, n, k; | ||
+ | |||
+ | printf("Введите целое число n (n > 0):"); | ||
+ | scanf_s("%d", &n); | ||
+ | |||
+ | printf("Введите целое число k:"); | ||
+ | scanf_s("%d", &k); | ||
+ | |||
+ | bool exists = false; | ||
+ | for (int i = 0; i < n; i++) { | ||
+ | printf("Введите %d число:", i+1); | ||
+ | scanf_s("%d", &x); | ||
+ | if (x == k) { | ||
+ | exists = true; | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if (exists) { | ||
+ | printf("Число %d было введено", k); | ||
+ | } else { | ||
+ | printf("Число %d не было введено", k); | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Является ли число N>1 простым? === | ||
+ | <syntaxhighlight lang="c" line> | ||
+ | #include <stdio.h> | ||
+ | #include <Windows.h> | ||
+ | #include <stdbool.h> | ||
+ | #include <math.h> | ||
+ | |||
+ | int main() { | ||
+ | SetConsoleCP(1251); | ||
+ | SetConsoleOutputCP(1251); | ||
+ | int n; | ||
+ | |||
+ | printf("Введите целое число n (n > 1):"); | ||
+ | scanf_s("%d", &n); | ||
+ | |||
+ | bool isPrime = true; | ||
+ | for (int i = 2; i <= round(sqrt(n)); i++) { | ||
+ | if (n % i == 0) { | ||
+ | isPrime = false; | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if (isPrime) { | ||
+ | printf("Число %d является простым", n); | ||
+ | } else { | ||
+ | printf("Число %d является составным", n); | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Разложение числа на простые множители === | ||
+ | <syntaxhighlight lang="c" line> | ||
+ | #include <stdio.h> | ||
+ | #include <Windows.h> | ||
+ | |||
+ | int main() { | ||
+ | SetConsoleCP(1251); | ||
+ | SetConsoleOutputCP(1251); | ||
+ | int x; | ||
+ | |||
+ | printf("Введите целое число x (x > 1):"); | ||
+ | scanf_s("%d", &x); | ||
+ | |||
+ | int i = 2; | ||
+ | printf("%d = 1", x); | ||
+ | do { | ||
+ | if (x % i == 0) { | ||
+ | printf(" * %d", i); | ||
+ | x = x / i; | ||
+ | } else { | ||
+ | i++; | ||
+ | } | ||
+ | } while (x != 1); | ||
+ | } | ||
+ | </syntaxhighlight> |
Текущая версия на 15:42, 20 июня 2022
Код программ
Сумма вводимых целых чисел
1 #include <stdio.h>
2 #include <Windows.h>
3
4 int main() {
5 SetConsoleCP(1251);
6 SetConsoleOutputCP(1251);
7 int n, x;
8
9 printf("Введите число слагаемых:");
10 scanf_s("%d", &n);
11
12 int s = 0;
13 for(int i = 1; i <= n; i++) {
14 printf("Введите слагаемое №%d:", i);
15 scanf_s("%d", &x);
16 s += x;
17 }
18
19 printf("Сумма равна %d", s);
20 }
Произведение целых чисел
1 #include <stdio.h>
2 #include <Windows.h>
3
4 int main() {
5 SetConsoleCP(1251);
6 SetConsoleOutputCP(1251);
7 int n, x;
8
9 printf("Введите число множителей:");
10 scanf_s("%d", &n);
11
12 int p = 1;
13 for(int i = 1; i <= n; i++) {
14 printf("Введите множитель №%d:", i);
15 scanf_s("%d", &x);
16 p *= x;
17 }
18
19 printf("Произведение равно %d", p);
20 }
Сколько нечетных среди n введенных
1 #include <stdio.h>
2 #include <Windows.h>
3
4 int main() {
5 SetConsoleCP(1251);
6 SetConsoleOutputCP(1251);
7 int n, x;
8
9 printf("Введите n:");
10 scanf_s("%d", &n);
11
12 int count = 0;
13 for(int i = 1; i <= n; i++) {
14 printf("Введите целое число:");
15 scanf_s("%d", &x);
16 if (x % 2 != 0) {
17 count++;
18 }
19 }
20
21 printf("Количество нечетных равно %d", count);
22 }
Защита от неверного ввода
1 #include <stdio.h>
2 #include <Windows.h>
3
4 int main() {
5 SetConsoleCP(1251);
6 SetConsoleOutputCP(1251);
7 float x;
8
9 do {
10 printf("Введите x>0:");
11 scanf_s("%f", &x);
12 if (x <= 0) {
13 printf("Неверный ввод\n");
14 }
15 } while (x <= 0);
16 }
Вывод 10 первых степеней двойки
1 #include <stdio.h>
2 #include <Windows.h>
3
4 int main() {
5 SetConsoleCP(1251);
6 SetConsoleOutputCP(1251);
7 int x = 2;
8
9 for (int i = 1; i <= 10; i++) {
10 printf("%3d %5d\n", i, x);
11 x *= 2;
12 }
13 }
Вывод всех двухзначных чисел, кратных 5
1 #include <stdio.h>
2 #include <Windows.h>
3
4 int main() {
5 SetConsoleCP(1251);
6 SetConsoleOutputCP(1251);
7 int x = 10;
8
9 while (x < 100) {
10 printf("%3d\n", x);
11 x += 5;
12 }
13 }
Вывод n первых чисел Фибоначчи
1 #include <stdio.h>
2 #include <Windows.h>
3
4 int main() {
5 SetConsoleCP(1251);
6 SetConsoleOutputCP(1251);
7 int n, a, b;
8
9 printf("Введите целое число n (n > 1):");
10 scanf_s("%d", &n);
11
12 a = 0; b = 1;
13 printf("%d %d ", a, b);
14 for (int i = 1; i <= n - 2; ++i) {
15 int tmp = a;
16 a = b;
17 b += tmp;
18 printf("%d ", b);
19 }
20 }
Найти НОД(A,B), используя алгоритм Евклида:
1 #include <stdio.h>
2 #include <Windows.h>
3
4 int main() {
5 SetConsoleCP(1251);
6 SetConsoleOutputCP(1251);
7 int a, b;
8
9 printf("Введите целое число a:");
10 scanf_s("%d", &a);
11 printf("Введите целое число b:");
12 scanf_s("%d", &b);
13
14 while (b != 0) {
15 int tmp = a;
16 a = b;
17 b = tmp % b;
18 }
19
20 printf("НОД(A, B) = %d", a);
21 }
Найти сумму цифр целого числа m
1 #include <stdio.h>
2 #include <Windows.h>
3
4 int main() {
5 SetConsoleCP(1251);
6 SetConsoleOutputCP(1251);
7 int m;
8
9 printf("Введите целое число m:");
10 scanf_s("%d", &m);
11
12 int sum = 0;
13 int m1 = abs(m);
14
15 while (m1 > 0) {
16 sum += m1 % 10;
17 m1 /= 10;
18 }
19
20 printf("Сумма цифр числа %d равна %d", m, sum);
21 }
Найти max из введенных чисел
1 #include <stdio.h>
2 #include <Windows.h>
3
4 int main() {
5 SetConsoleCP(1251);
6 SetConsoleOutputCP(1251);
7 int n, x;
8
9 printf("Введите количество чисел:");
10 scanf_s("%d", &n);
11
12 printf("Введите число 1:");
13 scanf_s("%d", &x);
14 int max = x;
15
16 for (int i = 2; i <= n; i++) {
17 printf("Введите число %d:", i);
18 scanf_s("%d", &x);
19 if (x > max) {
20 max = x;
21 }
22 }
23
24 printf("Максимальное из введенных чисел: %d", max);
25 }
Найти min, удовлетворяющее условию p(x)
1 #include <stdio.h>
2 #include <Windows.h>
3 #include <stdbool.h>
4 #include <float.h>
5
6 bool p(double x) {
7 return x > 0;
8 }
9
10 int main() {
11 SetConsoleCP(1251);
12 SetConsoleOutputCP(1251);
13 int n, x;
14
15 printf("Введите целое число n (n > 0):");
16 scanf_s("%d", &n);
17
18 bool exists = false;
19 double min = DBL_MAX;
20 for (int i = 0; i < n; ++i) {
21 printf("Введите %d число:", i+1);
22 scanf_s("%d", &x);
23 if ((x < min) && p(x)) {
24 min = x;
25 exists = true;
26 }
27 }
28
29 if (exists) {
30 printf("Минимальное из введенных чисел, удовлетворяющих условию: %f", min);
31 } else {
32 printf("Нет чисел, удовлетворяющих условию");
33 }
34 }
Есть ли среди введенных число k?
1 #include <stdio.h>
2 #include <Windows.h>
3 #include <stdbool.h>
4
5 int main() {
6 SetConsoleCP(1251);
7 SetConsoleOutputCP(1251);
8 int x, n, k;
9
10 printf("Введите целое число n (n > 0):");
11 scanf_s("%d", &n);
12
13 printf("Введите целое число k:");
14 scanf_s("%d", &k);
15
16 bool exists = false;
17 for (int i = 0; i < n; i++) {
18 printf("Введите %d число:", i+1);
19 scanf_s("%d", &x);
20 if (x == k) {
21 exists = true;
22 break;
23 }
24 }
25
26 if (exists) {
27 printf("Число %d было введено", k);
28 } else {
29 printf("Число %d не было введено", k);
30 }
31 }
Является ли число N>1 простым?
1 #include <stdio.h>
2 #include <Windows.h>
3 #include <stdbool.h>
4 #include <math.h>
5
6 int main() {
7 SetConsoleCP(1251);
8 SetConsoleOutputCP(1251);
9 int n;
10
11 printf("Введите целое число n (n > 1):");
12 scanf_s("%d", &n);
13
14 bool isPrime = true;
15 for (int i = 2; i <= round(sqrt(n)); i++) {
16 if (n % i == 0) {
17 isPrime = false;
18 break;
19 }
20 }
21
22 if (isPrime) {
23 printf("Число %d является простым", n);
24 } else {
25 printf("Число %d является составным", n);
26 }
27 }
Разложение числа на простые множители
1 #include <stdio.h>
2 #include <Windows.h>
3
4 int main() {
5 SetConsoleCP(1251);
6 SetConsoleOutputCP(1251);
7 int x;
8
9 printf("Введите целое число x (x > 1):");
10 scanf_s("%d", &x);
11
12 int i = 2;
13 printf("%d = 1", x);
14 do {
15 if (x % i == 0) {
16 printf(" * %d", i);
17 x = x / i;
18 } else {
19 i++;
20 }
21 } while (x != 1);
22 }