Управление шириной поля вывода




Полная форма записи формата:

%[ - ][w][.t] тип

где - значение выводится с левого края поля

w - общее число позиций для поля вывода

.t - количество позиций в дробной части (для %f, %e, %g)

Примеры различных форматов:

k = %d → k = 10

k = %5d → k = …10

k = %-5d → k = 10…

t = %8.3f → t = ..29.361

t = %-10.2f → t = 29.36…..

t = %.3f → t = 29.361

q = %3c → q = ..!

Ввод данных с клавиатуры

Используется стандартная функция scanf(…);

В начале программы необходимо записать директиву препроцессора

#include <stdio.h>

Форма записи:

scanf(“управляющая строка”, список адресов данных );

В управляющей строке записываются без пробелов форматы вводимых данных:

“%d%f%c”

Список адресов: &имя переменной1, …., &имя переменнойN

int m; &m → адрес m

float b; &b → адрес b

char d; &d → адрес d

scanf(“%d%f%c”, &m, &b, &d);

Для удобства работы пользователя в программе перед вводом необходимо выводить подсказку:

printf(“Введите значения m b d :\n”);

scanf(“%d%f%c”, &m, &b, &d);

 

3.5. Оператор перехода goto

Предназначен для изменения последовательности выполнения операторов в программе.

Форма записи:

goto M;

где М– метка оператора , обозначается обычным идентификатором.

Пример:

lab1: y = 2*x + 1.5;

. . . . . . . . . .

goto lab1;
. . . . . . . . . .

goto m21;

. . . . . . . . . .

m21: k++;

3.6 Условный оператор if и условная операция

Данный оператор предназначен для проверки заданного условия и выбора выполняемых действий (операторов) в зависимости от истинности (ложности) условия.

Имеется 2 формы записи условного оператора:

1. Полная форма записи:

if ( условие ) оператор 1;

else оператор 2;

Если условие имеет значение "истина" (true), то выполняется оператор 1, в противном случае во второй части оператора ( else ) - выполняется оператор 2.

2. Сокращенная форма записи:

if ( условие ) оператор 1;

Если условие имеет значение "истина" (true), то выполняется оператор 1, в противном случае - оператор 1 пропускается и выполняется следующий в программе оператор.

В языке С нет специального логического типа данных, поэтому для задания логических значений используется целый тип. Если значение некоторой целой переменной не равно 0, то это трактуется как "истина" (true), если же переменная имеет значение равное 0, то это трактуется как "ложь" (false).

Примечание: оператор 1 и оператор 2 могут быть простыми или составными

if ( условие ) { оператор 1_1;

оператор 1_2;

. . . . }

else оператор 2;

Условия в операторе if

В условном операторе можно записывать два вида условий:

1) отношения; 2) логические выражения.

Отношение – два арифметического выражения, связанных знаком отношения. Знаки отношений:

< <= > >= = = !=

       
   
 


равняется не равно

Например:

if ( a – 2*z >= 1 ) . . . при: a = 6, z = 2, получим true ; a = 5, z = 4, получим false

if ( k = = 0 ) . . .

if ( 1.5*y = = 2+z*a ) . . .

if ( p != 5 ) . . .

Логическое выражение – два отношения, связанных логической операцией (или одно отношение с указанием логической операции).

В языке С используется три логических операции:

|| - логическое сложение ( или, or )

&& - логическое умножение ( и, and )

! – логическое отрицание ( не, not )

 

Таблица истинности логических операций

A B A || B A && B !A
f f t t f t f t f t t t f f f t t t f f

Обозначения: t – true (истина), f – false (ложь)

Примеры записи логических выражений:

1. Записать условие или -3 ≤ x ≤ 5

if ( x >= -3 && x <= 5 )

2. Записать условие

if ( x < 0 || x > 3 )

3. if ( !(x > 2) && y < 4 )

Примеры записи оператора if :

a) if ( x+1 > a ) y = 2*pow(x,3);

else y = a*sin(x);

б) if ( y > 1) s+ = y;

в) if ( t < b-5 )

if ( z > 5) v = 2.5*exp(t+1);

else v = 1.3*sin(z/2);

 

Условная операция

Условная операция является упрощенной формой условного оператора.

Форма записи условной операции:

(условие)? выражение1 : выражение2

где условие – отношение или логическое выражение;

выражение1, выражение2 – арифметические выражения;

? и : - разделительные знаки.

Выполняется условная операция следующим образом. Вначале проверяется условие. Если оно имеет значение "истина", то вычисляется выражение1, в противном случае - выражение2.

Например, необходимо вычислить max – наибольшее из двух чисел a и b.

max = (a>b)? a : b ;

В тех случаях, когда надо вычислять одну и ту переменную по двум разным формулам в зависимости от условия, то целесообразно вместо условного оператора использовать условную операцию.

 

3.7. Оператор – переключатель switch

Предназначен для выбора одного из вариантов выполнения действий в программе.

Форма записи:

switch ( выражение )

{

case конст.1: оператор;

. . . . . . . .

оператор;

case конст.2: оператор;

. . . . . . . .

оператор;

. . . . . . . . . . . . . . . . . .

default: оператор;

. . . . . . . .

оператор;

}

где

выражение – называется селектор, должен иметь тип int или char;

case конст.i: – выбор i–го варианта действий, конст.i – константа типа int или char;

default: - определяет действия, когда не выбран ни один из вариантов, присутствие

необязательно

Принцип работы оператора switch:

1. Вычисляется выражение;

2. Производится сравнение выражения с конст.1, конст.2, . . . .

3. Если найдена конст.i = = выражение, то выполняются операторы за конст.i: всё до конца switch;

4. Если нет совпадения выражения ни с одной конст., то выполня­ются операторы за default, когда default: отсутствует, ничего не выполняется.

Для выполнения операторов только для выбранного варианта, необ­ходимо последним оператором для i-го case записать оператор break;

{

case конст.i: оператор;

оператор;

break;

case . . . . . . . . . . . .

}

Пример: вычислить и вывести на экран функцию f по одной из формул, которые выбирает пользователь

f=a*sinx (1)

f=a*cosx (2)

f=a*tgx (3)

выход (0)

Текст программы:

#include <stdio.h>

#include <math.h>

#include <conio.h>

void main ( )

{ float f, a, x;

int num;

clrscr ( );

printf(“input a, x\n”);

scanf(“%f%f”,&a,&x);

lab1: printf(“select variant of calculation:\n”);

printf(“ 1-a*sin(x)\n 2-a*cos(x)\n 3-a*tan(x)\ 0-exit\n”);

scanf(“%d”,&num);

switch(num)

{

case1: f=a*sin(x);

break;

case2: f=a*cos(x);

break;

case3: f=a*tan(x);

break;

case0: printf(“end of program\n”);

exit(0);

default: printf(“Error of choice\n”);

printf(“Press any key to retry\n”);

getch( );

clrscr( );

goto lab1;

}

printf(“f=%.3f\n”,f);

printf(“Press any key for selection continue \n”);

getch( );

clrscr( );

goto lab1;

}

Операторы цикла

Эти операторы предназначены для организации многократных повторений наборов действий (циклов) в программах.

Имеется 3 вида операторов цикла:

1. Цикл типа while

2. Цикл типа do…while

3. Цикл типа for

Оператор цикла типа while

Форма записи:

while (условие)

оператор;

где условие – логическое выражение;

оператор – выполняемый в цикле оператор или тело цикла.

Схема работы такого цикла: пока условие является истинным (true), выполняется оператор и снова проверяется условие и т.д. Когда условие станет ложным (false) цикл завершает работу.

Такой цикл называют циклом с предусловием.

Если в теле цикла необходимо выполнять набор операторов, тогда этот набор операторов заключают в фигурные скобки и образуют составной оператор.

while(условие)

{ оператор 1;

. . . . . . . . .

оператор М;

}

Пример: Вычислить - x2 для -2 ≤ x ≤ 2 Δx = 0,1

определить К – количество у > 0, вывести x, y, k

#include <stdio.h>

#include <math.h>

#include <conio.h>

void main ( )

{ float x = -2, y;

int k = 0;

while (x <= 2)

{ y = sqrt( fabs(x)) – x*x;

printf("x=%.1f y=%.3f\n", x, y);

if ( y>0) k ++;

x+ =0.1;

}

printf(“k=%d\n”,k);

}

Оператор цикла типа do…while

Форма записи:

do или do
оператор; оператор1;

while (условие); . . . . . . . .

оператор М;

while (условие);

Схема работы такого цикла: сначала выполняется оператор, потом проверяется условие, если условие является истинным (true), выполняется оператор и снова проверяется условие и т.д. Когда условие станет ложным (false) цикл завершает работу.

Такой цикл называют циклом с постусловием.

Пример: Условие задачи то же самое.

do

y = sqrt ( fabs (x)) – x*x;

printf (“x=%.1f y=%.3f\n”, x, y);

if ( y > 0) k ++;

x+ = 0.1;

while ( x<=2 );

printf (“k=%d\n”,k );

Оператор цикла типа for

Форма записи:

1. for ( выражение1; выражение2; выражение3 )
оператор;

или с составным оператором в теле цикла

2. for ( выражение1; выражение2; выражение3 )
{ оператор1;

. . . . . . . . .

операторМ;

}

где выражение1 – задаёт начальное значение параметру цикла, а также начальные

значения другим переменным

for ( t = -5, s=0, p=1; … ) t – параметр цикла

выражение2 – логическое выражение, которое задаёт условие работы цикла

for ( …; t<=10;… )

( …; t>=-5 && t<=10; … )

выражение3 – задаёт изменение параметру цикла, а также другим переменным

for ( …;…; t+ =0.5 )

( …;…; t+ =0.5, s+ =y, p* =y )

Схема работы такого цикла: сначала выполняется выражение1, потом проверяется выражение2, если оно истинно, то выполняются оператор и выражение3, снова проверяется выражение2 и т.д.

Пример: Условие то же самое

. . . . . . .

{ float x, y;

int k;

for ( x=-2, k=0; x<=2; x+=0.1 )

{ y=sqrt(fabs(x))-x*x;

printf (“x=. . . . “, x, y);

if ( y>0 ) k++;

}

printf (“k=. . . . “, k);

}

 





©2015-2017 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.

Обратная связь

ТОП 5 активных страниц!