Решения (задачи 160-179)
Задача 164.
// Проверяет, является ли матрица "магическим" квадратом #include <stdio.h> #include <conio.h> #define SZ 5 // максимальный размер матрицы [void main () int a[SZ] [SZ]; // матрица int n; // размер проверяемой матрицы int ok; // матрица – "магический" квадрат int i,j; // индексы массива int sum; // сумма эл-тов главной диагонали int temp; // сумма элементов текущей строки, // столбца или второй диагонали матрицы printf("*** МАГИЧЕСКИЙ КВАДРАТ ***\п"); printf("Хп Введите размер матрицы (3..%i) › ", SZ); scanf("%i", &n); printf("Введите строки матрицьДп"); printf("После ввода строки, %i целых чисел, ", п); printf("нажимайте Enter\n"); for (i =0; i < n; i++) printf(" › "); for (j =0; j < n; j++) scanf("%i", &a[i][j]); ok = 1; // пусть матрица – "магический" квадрат // вычислим сумму элементов главной диагонали sum = 0; for (i = 0; i < n; i++) sum += a[i][i]; // вычисляем суммы по строкам i = 0; do { temp =0; // сумма эл-тов текущей строки for (j = 0; j < n; j++) temp += a[i] [j]; (temp!= sum) ok = 0; } while (ok && i < n); if (ok)// здесь сумма элементов каждой строки // равна сумме элементов главной диагонали // вычисляем суммы по столбцам j = 0; do { temp =0; // сумма эл-тов текущего столбца for (i = 0; i < n; i++) temp += a[i][j]; if (temp!= sum) ok = 0;} while (ok && i < n); if (ok,) { // здесь сумма элементов каждой строки // равна сумме элементов каждого столбца и // сумме элементов главной диагонали. // Вычислим сумму элементов второй // главной диагонали temp = 0; i = n -1; for (j = 0; j < n; j++) temp += a[i- ] [j]; if (temp!= sum) ok = 0; } printf("Введенная матрица "); if (!ok) printf("не "); printf("является \"магическим\"квадратом.\n"); printf("Хп Для завершения нажмите Enter"); getch();
Задача 165.
// Приветствие #include <stdio.h> #include <conio.h> void main() { char name[15]; // имя char fam[20]; // фамилия printf("Как Вас зовут?\п"); printf("Введите свое имя и фамилию,"); printf("затем нажмите Enter"); printf(" › "); scanf("%s", &name); scanf("%s", sfam); // функция scanf читает из буфера клавиатуры символы //до разделителя – пробела printf("Здравствуйте, Is %s!\n", name, f am); printf("\п Для завершения нажмите Enter"); getch();
Задача 166.
// Приветствие (посимвольный ввод строки) #include <stdio.h> #include <conio.h> void main() char name[40]; // имя и отчество пользователя char ch; int i; printf("Как Вас зовут?\п"); printf("(введите свое имя, отчество и нажмите Enter"); printf(" › "); i = 0; while ((ch=getch())!= 13 && i < 40) // пока не нажата клавиша Enter h); name[i++] -ch; } namefi] = '\0'; printf("ХпЗдравствуйте, %s!\n", name); printf("\Для завершения нажмите Enter"); getch();