C언어 학습 3일차 : 분기문(if - else if - else)

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;
}

        적절한 중괄호를 가져오는 한 코드의 논리가 더 명확해 지므로 코드를 더 읽기 쉽게 만들기 위해 나중에 코드를 작성할 때 중괄호 사용에 주의해야 합니다.

        참고: 코드를 작성할 때 형식화는 매우 중요합니다. 나중에 이해하기 쉽고, 회사에 입사하는 데에도 도움이 됩니다. 동료가 코드를 읽으러 올 때 원활하게 진행됩니다. 그리고 자신만의 코딩 스타일을 개발해야 합니다.

Supongo que te gusta

Origin blog.csdn.net/m0_58724783/article/details/132027121
Recomendado
Clasificación