Все лекции программирование
.pdfВложенные условные операторы if
Оператор if является вложенным, если он находится внутри другого оператора if или else. Во вложенном условном операторе фраза else всегда ассоциирована с ближайшим if в том же блоке, если этот if не ассоциирован с другой фразой else. Например:
if(i)
{
if(j) statement 1;
if(k) statement 2; /* этот if */
else statement 3; /* ассоциирован с этим else */
}
else statement 4; /* ассоциирован с if(i) */
Пример
#include <stdio.h>
int main()
{
int A,B,C,D;
int ip,net,mask;
int mA,mB,mC,mD;
printf("IP address:\n"); scanf("%d.%d.%d.%d", &A,&B,&C,&D); fflush(stdin);
if(A<=255)
{
if(A>=0)
{
printf("The first octet is correct!\n");
} else printf("The first octet is less than 0!\n");
}
else printf("The first octet is more than 255!\n"); return 0;
}
C:\First.exe IP address:
-5.10.10.10
The first octet is less than 0!
C:\First.exe IP address: 300.10.10.10
The first octet is more than 255!
Лестница if-else-if
if (выражение) оператор;
else if (выражение) оператор;
else if (выражение) оператор;
.
.
.
else
оператор;
Пример
#include <stdio.h>
int main()
{
int A,B,C,D;
int ip,net,mask;
int mA,mB,mC,mD;
printf("IP address:\n"); scanf("%d.%d.%d.%d", &A,&B,&C,&D); fflush(stdin);
if(A>255||A<0)
{printf("The first octet is incorrect!\n");} else if (B>255||B<0)
{printf("The second octet is incorrect!\n");} else if (C>255||C<0)
{printf("The third octet is incorrect!\n");} else if (D>255||D<0)
{printf("The fourth octet is incorrect!\n");} else printf("Everything is ok!\n");
return 0;
}
C:\First.exe IP address: 300.10.10.10
The first octet is incorrect! C:\First.exe
IP address: 10.300.10.10
The second octet is incorrect! C:\First.exe
IP address: 10.10.-5.10
The third octet is incorrect! C:\First.exe
IP address: 10.10.10.-5
The fourth octet is incorrect! C:\First.exe
IP address: 10.10.10.10 Everything is ok!
Оператор ?
Оператор ? можно использовать вместо оператора if-else, записанного в форме
if (условие) выражение; else выражение;
Оператор ? является тернарным, потому что он имеет три операнда. Его общая форма следующая:
Условие ? Выражение2 : Выражение3;
Обратите внимание на использование и расположение двоеточия.
Пример
#include <stdio.h>
int main()
{
int A;
printf(“Input your number:\n"); scanf("%d", &A); fflush(stdin);
A>10 ? printf("Your number is more than 10.\n") : printf("Your number is less than 10 or equal 10.\n"); return 0;
}
C:\First.exe
Input your number: 50
Your number is more than 10. C:\First.exe
Input your number: 5
Your number is less than 10 or equal 10.
Пример
#include <stdio.h>
int main()
{
int A,B;
printf(“Input your number:\n"); scanf("%d", &A); fflush(stdin);
B= A>10 ? 100 : 1; printf("B is %d\n",B); return 0;
}
C:\First.exe
Input your number:
50
B is 100
C:\First.exe
Input your number:
5
B is 1
Хороший стиль
Избегайте двойных проверок в условиях
Хорошо:
if(b) printf("%d\n", a/b);
else printf("Division by zero!!!\n");
Плохо:
if(b != 0) printf("%d\n", a/b);
Оператор выбора - switch
Оператор выбора switch предназначен для выбора ветви вычислительного процесса
исходя из значения управляющего выражения. Общая форма оператора switch следующая:
switch (выражение) { case постоянная1:
последовательность операторов break;
case постоянная2: последовательность операторов break;
case постоянная3: последовательность операторов break;
default:
последовательность операторов;
}
Пример
#include <stdio.h>
int main()
{
int flag;
printf("Input your number:\n"); scanf("%d",&flag);
switch(flag) {
case 1: printf("One\n"); break; case 2: printf("Two\n"); break; case 3: printf("Three\n"); break; case 4: printf("Four\n"); break; case 5: printf("Five\n"); break; default:
printf("Your number is more than 5 or less than 1.\n",flag);
}
return 0;
C:\First.exe
Input your number: 3
Three
C:\First.exe
Input your number: 3
Three
Four
Five
Your number is more than 5 or less than 1.
}