1.C 언어 명령문 구조
C 언어는 구조화된 프로그래밍 언어입니다. 여기서의 구조는 순차 구조, 선택 구조, 루프 구조를 의미합니다. C 언어는 이 세 가지 구조를 실현할 수 있습니다. 실제로 잘 분석해 보면 우리가 매일 보는 모든 것을 다음과 같이 나눌 수 있습니다. 이 세 가지 구조 또는 이 세 가지 구조의 조합입니다.
if와 switch를 사용하여 분기 구조를 구현하고 for, while 및 do while을 사용하여 루프 구조를 구현할 수 있습니다.
2.if 문
2.1 if 문의 구문 형식은 다음과 같습니다.
if (表达式)
语句
if 문은 true입니다. 표현식이 true(true)이면 명령문이 실행되고, 표현식이 true(false)가 아니면 명령문이 실행되지 않습니다.
C 언어에서 0은 false, 0이 아닌 것은 true를 뜻하는데, 즉 표현식의 결과가 0이면 문장이 실행되지 않고, 표현식의 결과가 0이 아니면 문장이 실행된다.
다음으로 예시를 작성해 보세요.
// 输⼊⼀个整数,判断是否为奇数
int main()
{
int i = 0; // 初始化
scanf("%d", &i); // 输入值
if (i % 2 == 1) // 表达式
{
printf("是奇数!"); // 语句
}
return 0;
}
결과:
흐름도:
2.2.else 문의 구문 형태는 다음과 같습니다.
if (表达式)
语句1
else
语句2
다음으로 예시를 작성해 보세요.
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
// 输入一个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印数偶数。
int main()
{
int i = 0; // 初始化
scanf("%d", &i); // 输入整数
if (i % 2 == 1) // 如果 i 模 2 等于 1的 就是奇数
{
printf("%d是奇数!", i);
}
else // 如果不是等于 1的,就是偶数
{
printf("%d 是偶数!", i);
}
return 0;
}
작업 결과:
2.3 브랜치에는 여러 개의 문장이 포함되어 있습니다
기본적으로 if 및 else에서는 다음과 같이 기본적으로 하나의 문만 제어됩니다.
# include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age >= 18)
printf("成年了!\n");
printf("可以谈恋爱了!\n");
return 0;
}
위 코드에서는 입력값이 18보다 크거나 18보다 작으면 "You can fall in love"라는 메시지가 화면에 출력되는 것을 알 수 있습니다.
이는 if 문이 printf("I'm an Adult\n");라는 하나의 문만 제어할 수 있기 때문입니다. if 문이 참이면 성인을 인쇄합니다. 문이 거짓이면 제어하지 않습니다. printf("You can fall in love\n"); n");는 독립적으로 존재하며 if 문의 조건이 참인지 거짓인지에 관계없이 실행됩니다. 그런 다음 if 문이 동시에 2개의 문을 제어하도록 하려고 합니다.
그러면 우리는 else를 사용하거나 그 뒤에 중괄호를 사용하여 코드를 묶어야 합니다. 다음과 같이:
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18) //if 后使⽤{} 控制多条语句-这个块也叫:程序块,或者复合语句
{
printf("成年了!\n");
printf("可以谈恋爱了!\n");
}
else // else 后使⽤{}控制多条语句-这个块也叫:程序块,或者复合语句
{
printf("未成年!\n");
printf("不可以早恋哦!\n");
}
return 0;
}
2.4 중첩된 경우
if else 문에서 else를 다른 if 문과 함께 사용하여 여러 판단을 내릴 수 있습니다.
예: 정수를 입력하고, 입력된 정수가 0인지, 양수인지, 음수인지 판별해야 합니다.
int main()
{
int i = 0;
scanf("%d", &i);
if (i == 0)
{
printf("%d是零\n", i);
}
else if (i > 0)
{
printf("%d是正数\n", i);
}
else
{
printf("%d是负数\n", i);
}
return 0;
}
2.5 매달려 있는 else 문제
if와 else가 여러 개 있는 경우 그러한 규칙을 기억할 수 있습니다. else는 항상 가장 가까운 if와 일치합니다.
아래 코드를 보세요:
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
이 코드는 무엇을 출력합니까?
사실 아무것도 출력되지 않습니다.초보자들이 저지르는 실수는 a가 0이고 1이 아니라고 판단한 다음 else 절을 실행하여 인쇄하는 것입니다. ㅎㅎ 그런데 실행해 보면 아무것도 없다는 것을 알 수 있습니다.
왜?
이는 else가 매달려 있는 문제이기 때문에 if와 else가 여러 개 있는 경우 else는 항상 가장 가까운 if와 일치한다는 규칙을 기억하시면 됩니다.
위의 코드 레이아웃은 else 절을 첫 번째 if 문과 정렬하므로 else가 첫 번째 if 문과 일치한다고 생각하게 됩니다. if 문이 true가 아닌 경우에는 else 절을 실행하여 인쇄하는 것이 당연하다고 생각하지만, 실제로는 ㅋㅋㅋ 위의 else 문은 두 번째 if 문과 일치하므로 다음 if...else 문이 첫 번째 if 문에 중첩됩니다. 첫 번째 if 문이 유지되지 않으면 if와 ese가 중첩될 가능성이 없습니다. , 결국 아무것도 인쇄되지 않습니다.
그럼 다음과 같이 개선해 보겠습니다.
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
}
return 0;
}
else가 첫 번째 if와 일치하도록 하려면 다음과 같이 이를 변경할 수 있습니다.
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
}
else
{
printf("haha\n");
}
return 0;
}