Проверь себя (условные операторы Си switch и if)

В этом разделе на закрепление материала разбираются примеры программ с использованием условных конструкций языка Си switch и if; даются решенные задачи

if-1: Даны три целых числа. Найти количество положительных чисел в исходном наборе

* Из задачника М. Э. Абрамян (If4)

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
main()
{
   int a1, a2, a3;
   printf("a1:");
   scanf ("%i", &a1);
   printf("a2:");
   scanf ("%i", &a2);
   printf("a3:");
   scanf ("%i", &a3);
 
  if (a1>0) a1=1;
  else a1=0;
 
  if (a2>0) a2=1;
  else a2=0;
 
  if (a3>0) a3=1;
  else a3=0;
 
  printf("%i\n",a1+a2+a3);
}
Показать аналог в Pascal:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
  N1, N2, N3, Res : Integer;
begin
  Write('Введите перовое целое число: ');
  Readln(N1);
  Write('Введите второе целое число: ');
  Readln(N2);
  Write('Введите третье целое число: ');
  Readln(N3);
  Res:=0;
  if N1>0 then Inc(Res);
  if N2>0 then Inc(Res);
  if N3>0 then Inc(Res);
  writeln(Res);
end.
if-2: Даны координаты точки, не лежащей на координатных осях OX и OY. Определить номер координатной четверти, в которой находится данная точка.

* Из задачника М. Э. Абрамян (If22)

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main(void)
{
   float x, y;
   printf("x:");
   scanf ("%f", &x);
   printf("y:");
   scanf ("%f", &y);
 
   if ((x>0) & (y>0)) printf("I\n");
   if ((x<0) & (y>0)) printf("II\n");
   if ((x<0) & (y<0)) printf("III\n");
   if ((x>0) & (y<0)) printf("IV\n");
 
   return 0;
}
Показать аналог в Pascal:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
  X,Y: Real;
begin
  Writeln('Введите координаты точки: ');
  Write('Введите координату X: ');
  Readln (X);
  Write('Введите координату Y: ');
  Readln (Y);
 
  if (X>0) and (Y>0) then Writeln('Точка лежит в I координатной четверти');
  if (X<0) and (Y>0) then Writeln('Точка лежит во II координатной четверти');
  if (X<0) and (Y<0) then Writeln('Точка лежит в III координатной четверти');
  if (X>0) and (Y<0) then Writeln('Точка лежит в IV координатной четверти');
end.
if-3: Дано целое число. Вывести его строку-описание вида «отрицательное четное число», «нулевое число», «положительное нечетное число» и т. д.
Решить на Си, используя в качестве подсказки решенный вариант на Паскале

* Из задачника М. Э. Абрамян (If29)

Показать аналог в Pascal:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
  X: Integer;
begin
 Write('Введите число ');
 Readln(X);
 if x =0 then Write('Нулевое ')
 else
  begin
    if x>0 then Write('Положительное ')
    else Write('Отрицательное ');
    if (x mod 2) = 0 then Write('чётное ')
    else Write('нечётное ');
  end;
 Writeln('число.');
end.
Си switch 1: Дано целое число K. Вывести строку-описание оценки, соответствующей числу K (1 — «плохо», 2 — «неудовлетворительно», 3 — «удовлетворительно», 4 — «хорошо», 5 — «отлично»). Если K не лежит в диапазоне 1–5, то вывести строку «ошибка».

* Из задачника М. Э. Абрамян (Case2)

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
 
int main(void)
{
   int k;
   printf("K:") ;
   scanf ("%i", &k);
 
   switch (k) {
   case 1:
       printf("плохо\n") ;
       break;
   case 2:
       printf("неудовлетворительно\n") ;
       break;
   case 3:
       printf("удовлетворительно\n") ;
       break;
   case 4:
       printf("хорошо\n") ;
       break;
   case 5:
       printf("отлично\n") ;
       break;
   default:
       printf("ошибка\n") ;
       break;
   }
   return 0;
}
Показать аналог в Pascal:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program Case2;
var
  K:Integer;
begin
  Write('Введите число оценки: ');
  Readln(K);
  Case K of
   1:   Writeln('плохо');
   2:   Writeln('неудовлетворительно');
   3:   Writeln('удовлетворительно');
   4:   Writeln('хорошо');
   5:   Writeln('отлично');
   else Writeln('ошибка');
  end;
end.