Примеры выполнения задания по теме №3

Распечатать на экране монитора таблицу символов, используя только циклы (без использования массивов и строк)

A C E G I
I A C E G
G I A C E
E G I A C
C E G I A

Используя замеченные закономерности можно предложить следующий алгоритм решения:

§ надо организовать счет по строкам от первой до пятой (цикл по счетчику i), при каждом повторении этого цикла, т.е. внутри него будет выполняться три действия, объединенные в составном операторе:

I) распечатка строки символов (сначала A C E G I, а потом и других),

II) переход на следующую строку,

III) вычисление значения первого символа в следующей строке;

§ в каждой строке необходимо организовать счет (переменная j) по символам (с 1-ого до 5-ого); при каждом повторении цикла будет выполняться три действия (опять нужен составной оператор):

1) будет проверяться значение печатаемого символа (переменная C), и если окажется, что оно больше ‘I’, тогда переменной C присваивается значение ‘A’,

2) значение переменной C выводится на экран монитора,

3) переменной C присваивается новое значение (следующее за следующим, т.е. символы следуют через один).

Как при описании алгоритма, так и по тексту программы, действия внешнего цикла обозначены римскими цифрами, а внутреннего – арабскими. Решение записано в двух вариантах: подробном и сокращенном для демонстрации возможностей цикла for.

#include <conio.h>

#include <stdio.h>

int main() // ПОДРОБНЫЙ ВАРИАНТ ЗАПИСИ ПРОГРАММЫ

{

int i,j; /* Счетчики */

char c='A'; /* Переменная для хранения значения первого символа

в строке */

// Цикл по строкам

for (i=1; i<=5; i++)

{ /* Начало действий внутри цикла по строкам */

/**** I) Печать строки символов */

for (j=1; j<=5; j++)

{ /* Начало тела цикла печати строки */

if (c>'I') c='A'; /*** 1) Проверка значения символа */

printf ("%2c",c); /*** 2) Вывод символа на экран */

c++; c++; /*** 3) Новое значение символа */

} /* Конец тела цикла печати строки */

/**** II) Переход на следующую строку */

printf ("\n");

/**** III) Подготовка первого символа следующей строки */

c--;

c--;

} /* Конец действий внутри цикла по строкам */

getch();

return 0;

}

После подробно описанного алгоритма работы, особенностей, на которые можно было бы обратить внимание в первой программе, совсем немного. Это инициализация переменной C во время объявления и изменение значения литерной переменной C оператором декремента («минус-минус»), хотя С – переменная литерного типа.

Вторая программа (сокращенный вариант записи программы) также содержит особенности свойственные языку Си:

1) переменные i и j - литерного типа, но потом будут использованы как целочисленные;

2) в циклах for использован оператор запятая, позволяющий сделать программу более компактной.

Несмотря на перечисленные особенности, нетрудно заметить, что алгоритм решения задачи и в первом и во втором случае один и тот же.

#include <conio.h>

#include <stdio.h>

int main() // СОКРАЩЕННЫЙ ВАРИАНТ ЗАПИСИ ПРОГРАММЫ

{

char i, j, c;

for (i=1,c='A'; i<=5; printf ("\n"),c-=2,i++)

{

for (j=1; j<=5; c+=2,j++)

{

if (c>'I') c='A';

printf ("%2c",c);

}

}

return 0;

}


Блок-схема к программе

Вторая программа рисует ту же таблицу, но используется цикл while и другой алгоритм:

#include <stdio.h>

#include <conio.h>

char First; /* Первый символ в строке */

char C; /* Текущий символ в строке */

int main()

{

First='K'; /* Первый символ в первой строке */

while (First>='C')

{

/* Печать первой части строки символов */

C=First;

while (C<='I')

{

printf("%2c",C); // Печать очередного символа

C+=2; // Вычисление следующего значения

}

/* Печать второй части строки символов */

C='A';

while (C<First)

{

printf("%2c",C); // Печать символа

C+=2; // Вычисление следующего значения

}

/* Переход на другую строку */

printf("\n");

/* Вычисление значения первого символа */

First-=2;

}

getch();

return 0;

}


Варианты заданий

1.         2.         3.           4.            
                                                     
A D G J M   A B C D E   A B C D E F   A              
M D G J M   B C D E     B C D E F G   B C            
M J G J M   C D E       C D E F G H   D E F          
M J G J M   D E         D E F G H I   - - - -        
M J G D M   E           E F G H I J   F E D          
M J G D A               F G H I J K   C B            
                                      A              
                                                     
5.                 6.         7.         8.      
                                                     
A B C D E F G H I   A B C D E   A E D C B   A B C D E
  B C D E F G H     E A C D E     B E D C   A A B C D
    C D E F G       E D A D E       C E D   B A A B C
      D E F         E D C A E         D E   C B A A B
        E           E D C B A           E   D C B A A
                                            E D C B A
                                                     
9.         10.             11.         12.          
                                                     
I                 A         + + O + +   F            
I G             B A B       + O O O +   E F          
I G E         C B A B C     O O O O O   D E F        
I G E C     D C B A B C D   + O O O +   C D E F      
I G E C A     C B A B C     + + O + +   B C D E F    
                B A B                   A B C D E F  
                  A                                  
                                                     
13.         14.         15.         16.              
                                                     
A           A D B E C   A E D C B   A C E G I        
B C         C A D B E   B A E D C   B D F H J        
D E F       E C A D B   C B A E D   C E G I K        
G H I J     B E C A D   D C B A E   D F H J L        
K L M N O   D B E C A   E D C B A   E G I K M        
                                                     
17.         18.         19.         20.                
                                                       
A B C D E   A D G J M   E           A B C D E F        
Z B C D E   B E H K N   D E         B C D E F          
Y Z C D E   C F I L O   C D E       C D E F            
X Y Z D E   D G J M P   B C D E     D E F              
W X Y Z E   E H K N Q   A B C D E   E F                
                                    F                  
                                                       
21.         22.         23.         24.                
                                                       
I H G F E   N M L K J         A           A            
H G F E     M L K J         B C         A * B          
G F E       L K J         D E F       A * B * C        
F E         K J         G H I J     A * B * C * D      
E           J         K L M N O   A * B * C * D * E    
                                                       

Контрольные вопросы к теме № 3

1. Как использовать цикл for в языке Си?

2. Что означают операторы «++», «– –», «+=» и т.д.?

3. Назначение оператора break в языке Си?

4. К какому типу относится цикл for (с пред- или пост- условием)?

5. Как использовать цикл while?

6. Как использовать цикл do…while?

7. Чем отличаются циклы с пред-и пост-условиями?



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: