Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие С(часть1-3).doc
Скачиваний:
23
Добавлен:
12.02.2015
Размер:
854.02 Кб
Скачать

Задание 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();

}

  1. Найти все натуральные числа в диапазоне между m и n (m<n), делящиеся на каждую из своих цифр.

  2. Найти все натуральные числа, в диапазоне между m и n (m<n), десятичная запись которых есть строго возрастающая последовательность цифр. Подсчитать количество таких чисел.

  3. Найти все натуральные числа в диапазоне между m и n (m<n), в записи которых нет двух одинаковых цифр. Подсчитать количество таких чисел.

  4. Натуральное число из m цифр называется числом Амстронга, если сумма его цифр, возведенная в степень m, равна самому числу. Распечатать все числа Амстронга, не превосходящие заданного n, и подсчитать количество таких чисел.

  5. Дано натуральное число n. Подсчитать количество различных цифр, встречающихся в k старших разрядах его записи.

  6. Распечатать все различные тройки последовательных элементов одномерного массива цифр. Например, в массиве 318731873 различные тройки – это 318, 187, 873, 731.

  7. Сколько чисел между n и m (n<m) состоит только из нечетных цифр. Выведите на экран эти числа.

  8. Заданное натуральное число представить в виде суммы квадратов двух натуральных чисел или выдать сообщение, что это невозможно.

  9. Указать индексы и напечатать те элементы целочисленного массива X, сумма цифр которых равна заданному числу M (если такие элементы есть).

  10. Для натуральных a и b определим операцию ab=ab+a%b. Найти все пары a,b, не превосходящие заданного n, для которых ab= bа.

  11. Определить, сколько чисел между n и m (n<m) состоит только из четных цифр. Выведите на экран эти числа.

  12. Найти максимальное из чисел, встречающихся в заданном целочисленном массиве более одного раза.

Задание 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

  1. Сгенерировать случайным образом квадратную матрицу размерности K<20. Найти сумму ее элементов, находящихся на диагонали, «ортогональной» главной.

  2. Дана прямоугольная матрица A (N, M) (M, 15). Найти произведение элементов каждой строки матрицы. Сформировать массивB из найденных произведений.

  3. Дана прямоугольная матрица A (N, M) (M, 15). Найти максимальный элемент в каждой строке. Сформировать массивB из найденных элементов.

  4. Дана прямоугольная матрица A (N, M) (M, 15). Преобразовать матрицу таким образом, чтобы на месте первой строки находилась вторая, на месте второй – третья, и т.д., а на месте последней – первая.

  5. Дана прямоугольная матрица A (N, M) (M, 15) и искомое число k. Найти все имеющиеся в матрице числа k и их позиции. Если таких элементов нет, то выдать соответствующее сообщение.

  6. Сформировать и распечатать квадратную матрицу А(10,10) следующего вида:

  1. Сформировать и распечатать прямоугольную матрицу A(10,20) следующего вида:

  1. Сформировать и распечатать квадратную матрицу A(12,12) следующего вида:

  1. Сформировать и распечатать квадратную матрицу A(15,15) следующего вида:

  1. Сформировать и распечатать квадратную матрицу A(15,15) следующего вида:

  1. Сформировать и распечатать квадратную матрицу размерности M<20 следующего вида:

  1. Сформировать и распечатать квадратную матрицу A(15,15) следующего вида: