Опубликован: 14.12.2010 | Доступ: свободный | Студентов: 3080 / 691 | Оценка: 4.53 / 4.12 | Длительность: 26:28:00
Лекция 4:

Организация циклов в языке С

< Лекция 3 || Лекция 4: 123 || Лекция 5 >

Задание 5

  1. Подсчитайте число итераций цикла для подсчета суммы ряда.
  2. Напишите программу с нулевой инициализацией переменной k.
  3. Напишите условие "загрубения" результата подсчета суммы ряда.
  4. В программе примените тип float вместо типа double. Проанализируйте результат.
  5. Вместо оператора цикла do–while примените иной оператор цикла.

Пример 6. Произведите реверс цифр заданного целого числа, вводимого с клавиатуры пользователем.

Задача заключается в том, чтобы, например, число 123 переписать как 321.

Программный код решения примера:

#include <stdio.h>
#include <conio.h>

int main(void)
 {
	long int x, r;

	printf("\n Enter an integer: ");
	scanf_s("%ld", &x);

	printf("\n Reverse-digit number %ld:\n\n\t", x);

	do {
	r = x % 10;
	printf(" %ld", r);
	x = x / 10;
	} while ( x != 0);

	printf("\n\n Press any key: ");
	_getch();
	return 0;
}

В программе применена операция арифметическая операция деления по модулю, которая имеет символ процента, т.е. "%". Любой остаток, получающийся в результате деления целых чисел, будет отброшен [3.2]. В шкале старшинства оператор деления по модулю имеет приоритет, равный приоритету операторов умножения и деления. Переменные, используемые в программе, объявлены как длинные числа, поэтому применен тип long int (или long ). В некоторых компиляторах имеются отличия между типами int и long int в смысле максимально поддерживаемого значения числа.

Результат выполнения программы показан на рис. 3.6.

Результат программы по реверсу числа

Рис. 3.6. Результат программы по реверсу числа

Задание 6

  1. Предусмотрите подсчет итераций заданного цикла.
  2. Напишите программу по реверсу числа с оператором цикла while. Протестируйте обе программы, в том числе по вводу числа 0.
  3. Определите максимальное число вида 123...987..., для которого еще можно применить тип long int.

Пример 7. На основе только оператора цикла for напишите программу по выводу "горки" заглавных букв, симметрично убывающих к букве, введенной пользователем. Также на основе оператора цикла for предусмотрите защиту от неправильного ввода.

Программный код решения примера:

#include <stdio.h>
#include <conio.h>

int main (void) {
	int p = 0;
     char ch = 'A'; 
     char i, j, k, ch2, kk, chA;
     chA = ch;

printf("\n   Enter a capital letter between \"A\" and \"S\": ");
scanf_s("%c", &ch2, sizeof(char));

for(chA -= 1; chA >= ch2; chA-- )
 {
	printf("\n   Error! Press any key: ");
	_getch();
	return -1;
 }

for (kk = 'S'+1; kk  <= ch2; kk++) 
{
printf("\n   Error! Press any key: ");
	_getch();
     return -1;
}

k = ch2;
for ( kk = ch; kk <=  k; kk++)
 {
		printf("\n ");

for (ch2 = ch; ch2 <= k-p ; ch2++) 		
			printf("  ");	

for (j = ch; j <= kk ; j++)  
		printf(" %c", j);	
	for (i = kk; i > ch; i-- )
			printf(" %c", i-1);
	p++;
		
}
    printf("\n\n Press any key: ");
	_getch();
	return 0;
}

Пример выполнения программы показан на рис. 3.7.

Пример горки букв

Рис. 3.7. Пример горки букв

Задание 7

  1. Напишите программу на основе только оператора цикла for по выводу перевернутой горки букв, а также "левой" и "правой" горки.
  2. Напишите программу на основе только оператора цикла for по выводу "ромба" букв, относительно введенной буквы.
  3. Напишите программу по выводу горки букв только на основе оператора цикла while.

Контрольные вопросы

  1. Как организуются составные операторы циклов в языке С?
  2. Как организуются вложенные циклы в языке С?
  3. В каких случаях может произойти зацикливание при использовании оператора цикла с предусловием?
  4. В каких случаях может произойти зацикливание при использовании оператора цикла с постусловием?
  5. Сколько условий требуется для работы оператора цикла с параметром?
  6. Чем отличаются префиксное и постфиксное инкрементирование и декрементирование?
  7. Какое различие в операторах цикла между префиксным и постфиксным инкрементированием?
  8. Сколько операторов отношения в языке С? Перечислите их.
  9. Как реализуется взаимозаменяемость операторов цикла while и for?
  10. В чем сходство и различие между циклами с предусловием и с постусловием?
< Лекция 3 || Лекция 4: 123 || Лекция 5 >
Мухаммадюсуф Курбонов
Мухаммадюсуф Курбонов