В этом разделе на закрепление материала разбираются решенные задачи с использованием циклических конструкций языка Си While, For, Do while
Содержание:
Цикл языка Си while
си while 1: Дано целое число N>0. Если оно является степенью числа 3, то вывести True, если не является — вывести False.
* Из задачника М. Э. Абрамян (While4)
Проверить:
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h> int main(void) { int a; printf("A:"); scanf ("%i", &a); while (a>0) a -=3; printf("%s\n",a==0?"True":"False"); return 0; } |
Показать аналог в Pascal:
1 2 3 4 5 6 7 8 9 10 | var A,temp:Integer; begin Write('Введите A: '); Readln(A); temp:=A; while temp<A do //ищем максимальное 3 в степени temp:=temp*3; //которое не больше А Write(temp=A); end. |
си while 2: Дано целое число N>0, являющееся некоторой степенью числа 2: N=2K. Найти целое число K — показатель этой степени.
* Из задачника М. Э. Абрамян (While5)
Проверить:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int main(void) { int n; printf("N:"); scanf ("%i", &n); int k=0; while (n>=2){ ++k; n/=2; } printf("K: %i\n",k); return 0; } |
Показать аналог в Pascal:
1 2 3 4 5 6 7 8 9 10 11 12 13 | var N, K :Integer; begin Write('Введите N: '); Readln(N); K:=0; while n>1 do begin n:= n div 2; inc(K); end; Writeln('Результат деления на цело: ',K); end. |
Цикл языка Си for
си for 1: Даны два целых числа A и B (A). Вывести в порядке убывания все целые числа, расположенные между A и B (не включая числа A и B), а также количество N этих чисел.
* Из задачника М. Э. Абрамян (For3)
Проверить:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <stdio.h> int main(void) { int a, b; printf("A:"); scanf ("%i", &a); printf("B:"); scanf ("%i", &b); int i; for (i = b-1; i>a; --i) printf("%i\n",i); printf("N: %i\n", b-a-1); return 0; } |
Показать аналог в Pascal:
1 2 3 4 5 6 7 8 9 10 11 | var A,B, i:Integer; begin Write('Введите A: '); Readln(A); Write('Введите B: '); Readln(B); For i:=B-1 downto A+1 do Writeln(i); Writeln(' ',B-A-1); readln; end. |
си for 2: Дано целое число N>0. Найти произведение 1.1∗1.2∗1.3∗… (N сомножителей)
* Из задачника М. Э. Абрамян (For12)
Проверить:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> int main(void) { int n; printf("N:"); scanf ("%i", &n); float result=1; int i; for (i =0; i<=n; ++i) result *= 1.0+(float)i/10; printf("resul t= %f \n ", result); return 0; } |
Показать аналог в Pascal:
1 2 3 4 5 6 7 8 9 10 11 | var n, i :Integer; result:Real; begin Write('Введите n: '); Readln(n); result:=1; For i:=1 to n do result:=result*(1+0.1*i); Writeln(result); end. |