- •Т.Э. Шульга основы программирования на языке с
- •Введение
- •1. Структура программы на языке с
- •Void main()
- •Задание 1. Вывод строки на экран с использованием esp-последовательности
- •2. Переменные. Основные типы данных
- •Задание 2. Описание переменных и преобразование типов
- •3. Ввод – вывод значений переменных
- •Void main()
- •Void main()
- •Задание 3. Форматирование вывода
- •4. Основные операции языка с
- •Void main ()
- •Заданиe 4. Простейшие вычисления
- •5. Конструкции выбора
- •Void main()
- •Void main()
- •Void main()
- •Задание 5. Обработка введенного символа
- •Задание 6. Вычисление значения функции
- •Задание 7. Применение разветвляющихся алгоритмов при решении простейших задач
- •Задание 8. Mультиветвление
- •6. Конструкции цикла и передачи управления
- •Int *t; // неинициализированный указатель на объект типа int,
- •Void main()
- •Int a2[3][2]; // массив из 3 массивов, содержащих по 2 целых элемента.
- •Задание 9. Детерминированные циклы. Простейшие задачи
- •Void main()
- •Задание 10. Итерационные циклы. Простейшие задачи
- •Void main()
- •Int last;
- •Задание 11. Одномерные массивы
- •Void main()
- •Задание 12. Вложенные циклы
- •Void main ()
- •Задание 13. Двумерные массивы
- •Void main ()
- •Задание 14. Посимвольная обработка строк
- •Void main ()
- •Задание 15. Сортировка массива
- •Void main ()
- •7.Функции
- •Int max (int n, int m ) // определение функции нахождения максимума
- •Void main()
- •Int strcmp(const char *str1, const char* str2);
- •Void main()
- •Int fclose (file * stream);
- •Int feof(file *stream);
- •Int fseek ( file* stream, long offset, int origin);
- •Void main ()
- •Задание 16. Определение и вызов функций
- •Задание 17. Рекурсивные функции
- •Задание 18. Использование библиотечных функций string.H
- •Задание 19. Использование библиотечных функций stdio.H
Задание 12. Вложенные циклы
Пример. Введите месяц и день своего рождения. В массиве целых чисел, генерируемом случайным образом, найдите первое счастливое для Вас число. Число называется счастливым, если сумма его цифр равна сумме цифр месяца и дня Вашего рождения.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
Void main ()
{
const int n=20;
int a[n];
int m,d,sum1;
printf("\nВведите день и месяц рождения ");
scanf("%d%d",&d,&m);
sum1=d%10+d/10+m%10+m/10;// считаем сумму цифр месяца и
//дня рождения
printf("\nСумма цифр даты рождения: %d",sum1);
printf("\nСгенерирован массив");
for (int i=0;i<n;i++)
{
a[i]=rand()%100;//генерируем элемент массива случайным образом
printf("\n a[%d%s%d",i,"]=",a[i]);
}
int sum2,i,k;
for(i=0;i<n;i++)
{
sum2=0;
k=a[i];//сохраняем значения a[i]
while (k>0)// ищем сумму цифр числа a[i]
{
sum2+=k%10;
k/=10;
}
printf("\n%d",sum1);
if (sum1==sum2)//нашли счастливое число
{
printf("\nСчастилове число a[%d%s%d",i,"]=",a[i]);
break;//прекратили просмотр массива (выход из цикла)
}
}
if (i==n) printf("\n В массиве нет счастливого числа %d");
getch();
}
Найти все натуральные числа в диапазоне между m и n (m<n), делящиеся на каждую из своих цифр.
Найти все натуральные числа, в диапазоне между m и n (m<n), десятичная запись которых есть строго возрастающая последовательность цифр. Подсчитать количество таких чисел.
Найти все натуральные числа в диапазоне между m и n (m<n), в записи которых нет двух одинаковых цифр. Подсчитать количество таких чисел.
Натуральное число из m цифр называется числом Амстронга, если сумма его цифр, возведенная в степень m, равна самому числу. Распечатать все числа Амстронга, не превосходящие заданного n, и подсчитать количество таких чисел.
Дано натуральное число n. Подсчитать количество различных цифр, встречающихся в k старших разрядах его записи.
Распечатать все различные тройки последовательных элементов одномерного массива цифр. Например, в массиве 318731873 различные тройки – это 318, 187, 873, 731.
Сколько чисел между n и m (n<m) состоит только из нечетных цифр. Выведите на экран эти числа.
Заданное натуральное число представить в виде суммы квадратов двух натуральных чисел или выдать сообщение, что это невозможно.
Указать индексы и напечатать те элементы целочисленного массива X, сумма цифр которых равна заданному числу M (если такие элементы есть).
Для натуральных a и b определим операцию ab=a–b+a%b. Найти все пары a,b, не превосходящие заданного n, для которых ab= bа.
Определить, сколько чисел между n и m (n<m) состоит только из четных цифр. Выведите на экран эти числа.
Найти максимальное из чисел, встречающихся в заданном целочисленном массиве более одного раза.
Задание 13. Двумерные массивы
Пример. Сформировать матрицу A(10,10) следующего вида
#include <stdio.h>
#include <conio.h>
Void main ()
{ const int N=10;
static int a[N][N]; //статический массив инициализируется
//нулями
for (int i=0; i<N; i++)
for (int j=0; j<N; j++)
if (i>=j) a[i][j]=i-j+1; //условие попадания под главную диагональ
for (int i=0; i<N; i++) // печать матрицы
{
for (int j=0; j<N; j++) printf("%2d", a[i][j]);
printf("\n");
}
getch();
}
Можно уменьшить количество повторений в цикле и избавиться от проверок в операторе IF, если фрагмент заполнения матрицы записать следующим образом:
for (i=0; i<N; i++)
for (j=0; j<i; j++)
a[i][j]=i–j+1
Сгенерировать случайным образом квадратную матрицу размерности K<20. Найти сумму ее элементов, находящихся на диагонали, «ортогональной» главной.
Дана прямоугольная матрица A (N, M) (N M, M 15). Найти произведение элементов каждой строки матрицы. Сформировать массивB из найденных произведений.
Дана прямоугольная матрица A (N, M) (N M, M 15). Найти максимальный элемент в каждой строке. Сформировать массивB из найденных элементов.
Дана прямоугольная матрица A (N, M) (N M, M 15). Преобразовать матрицу таким образом, чтобы на месте первой строки находилась вторая, на месте второй – третья, и т.д., а на месте последней – первая.
Дана прямоугольная матрица A (N, M) (N M, M 15) и искомое число k. Найти все имеющиеся в матрице числа k и их позиции. Если таких элементов нет, то выдать соответствующее сообщение.
Сформировать и распечатать квадратную матрицу А(10,10) следующего вида:
Сформировать и распечатать прямоугольную матрицу A(10,20) следующего вида:
Сформировать и распечатать квадратную матрицу A(12,12) следующего вида:
Сформировать и распечатать квадратную матрицу A(15,15) следующего вида:
Сформировать и распечатать квадратную матрицу A(15,15) следующего вида:
Сформировать и распечатать квадратную матрицу размерности M<20 следующего вида:
Сформировать и распечатать квадратную матрицу A(15,15) следующего вида: