БИЛЕТ 16.
1) Оператор-выражение: синтаксис, выполнение, примеры использования.
Синтаксис: выражение;
При выполнении оператора-выражения, выражение вычисляется в соответствии с правилами, приведенными в Главе "Выражения и присвоения".
В языке С присвоения являются выражениями. Значением выражения в этом случае будет присваиваемое значение (иногда называемое "правым значением").
Вызовы функций также считаются выражениями. В этом случае значением выражения будет возвращаемая функцией величина, если она имеется. Если функция возвращает значение, то оператор-выражение обычно содержит присвоение для записи возвращаемого значения при вызове функции. Возвращаемое функцией значение обычно используется в качестве операнда в другом выражении. Если значение будет использовано несколько раз, его можно присвоить другой переменной. Если значение не будет использовано в качестве операнда и не будет присвоено, то функция вызывается, а возвращаемое значение, если оно есть, не используется.
Пример 1 В данном примере x присваивается значение y+3.
x=(y+3);
Пример 2 В данном примере увеличивается значение x.
x++;
Пример 3 В данном примере показано выражение вызова функции. Значение выражения, которое включает в себя любую возвращаемую функцией величину, будет присвоено переменной z.
z=f(x)+3;
2) Области видимости объектов
вне области, она может сохранять свое значение, но обращение к ней невозможно, по сути можно считать, что переменной вне области видимости не существует.
Есть несколько видов области видимости:
1) Публичная. Когда переменная видна в любой части исходного кода программы.
2) Локальная блочная. Переменная видна только в пределах блока, в котором она была определена.
2)Локальная функциональная. Переменная видна только в пределах функции в которой была определена. При этом в функциях, вызванных из функции, где определена переменная, переменная не видна.
З) Приватная область. Переменная видна в функции, где была определена и во всех функциях, вызванных из функции.
Отдельный вид переменных это статические переменные. Они всегда локальные, бывают функциональными и блочными. Основное отличие таких переменных в том что они всегда хранят своё значение и при этом они инициализируется один раз.
*************************************16 - 3
Проверить, является ли заданный двумерный массив магическим квадратом. (Суммы элементов всех строк, всех столбцов и обеих диагоналей в таком массиве одинаковы )
#include<conio.h>
#include<stdio.h>
const n=2;
int c[n][n]={{4,4},{4,4}};
int sum[n*2+2];
int i,j,m;
void main()
{
clrscr();
m=0;
for (j=0;j<n;j++,m++)
for (i=0;i<n;i++)
sum[m] += c[i][j];
for (j=0;j<n;j++,m++)
for (i=0;i<n;i++)
sum[m] += c[j][i];
for (j=0,i=0;j<n;j++,i++)
sum[m] += c[j][i];
m++;
for (j=n-1,i=n-1;j>=0;j--,i--)
sum[m] += c[j][i];
for (i=0;i<m;)
{
if (sum[i] != sum[i+1])
{
printf("No");
break;
}
else
i++;
}
if (i==m)
printf ("Yes");
getch();
}
*************************************16 - 4
Выдать на экран монитора битовое содержание заданной переменной типа float.
#include<conio.h>
#include<stdio.h>
void preds(unsigned char*b)
{
for(int i=7;i>=0;i--)
printf("%d",(*b >> i) & 1);
printf(" ");
}
void main()
{
int i;
float ch=123.5123421;
unsigned char*b;
clrscr();
printf("\n\nF l o a t %f\n", ch);
b = (unsigned char*) & ch;
for(i=0; i<sizeof(float); i++)
preds(b++);
getch();
}