C++조건문 과 조건 연산 자의 사용 방법 설명

5527 단어 C++if
if 문장의 3 가지 형식
1)if(표현 식)문.
예 를 들 면:

 if(x>y) cout<<x<<endl;
이 if 문장의 실행 과정 은 다음 그림 을 보십시오.
2)if(표현 식)문 1 else 문 2
예 를 들 면:

 if (x>y) cout<<x;
 else cout<<y;
그림 을 보다.

3)

if(   1)   1
 else if(   2)   2
 else if(   3)   3
 …
 else if(   m)   m
 else   n
예 를 들 면:

if (number>500) cost=0.15;
else if(number>300) cost=0.10;
else if(number>100) cost=0.075;
else if(number>50) cost=0.05;
else cost=0;
흐름 도

설명:
그림 3.5 와 그림 3.6 을 통 해 알 수 있 듯 이 3 가지 형식의 if 문 구 는 모두 하나의 입구 에서 들 어 오고'표현 식'에 대한 판단 을 거 쳐 해당 하 는 문 구 를 각각 집행 하고 마지막 에 하나의 공 통 된 출구 로 돌아간다.이런 형식의 프로그램 구 조 를 선택 구조 라 고 한다.C++에서 if 문 구 는 선택 구 조 를 실현 하 는 주요 한 문구 입 니 다.
3 가지 형식의 if 문 구 는 if 뒤에 괄호 로 묶 은 표현 식 이 있 습 니 다.프로그램 작성 자가 프로그램 에 판단 을 요구 하 는'조건'입 니 다.일반적으로 논리 적 표현 식 이나 관계 식 입 니 다.
두 번 째,세 번 째 형식의 if 문 구 는 각각 else 앞 에 1 점 번호 가 있 고 전체 문장의 끝 에 1 점 번호 가 있다.
if 와 else 뒤에 있 는 조작 문(예 를 들 어 상례)만 포함 할 수 있 고 여러 개의 조작 문 구 를 포함 할 수 있 습 니 다.이 때 괄호'{}'로 몇 개의 문 구 를 묶 어서 하나의 복합 문 구 를 만 들 수 있 습 니 다.
삼각형 의 면적 을 구하 다.

#include <iostream>
#include <cmath> //             cmath
#include <iomanip> //  I/O          iomanip
using namespace std;
int main( )
{
 double a,b,c;
 cout<<"please enter a,b,c:";
 cin>>a>>b>>c;
 if (a+b>c && b+c>a && c+a>b)
 { //      
  double s,area;//          
  s=(a+b+c)/2;
  area=sqrt(s*(s-a)*(s-b)*(s-c));
  cout<<setiosflags(ios::fixed)<<setprecision(4); //        4   
  cout<<"area="<<area<<endl; //              
 } //      
 else cout<<"it is not a trilateral!"<<endl;
 return 0;
}
운행 상황 은 다음 과 같다.

please enter a, b, c:2.45 3.67 4.89L
area=4.3565
변수 s 와 area 는 복합 문 에서 만 사용 할 수 있 기 때문에 복합 문 에서 정의 합 니 다.그 역할 범 위 는 정의 변수 부터 복합 문 으로 끝 납 니 다.복합 문 밖에서 s 와 area 를 사용 하면 컴 파일 할 때 오류 가 발생 합 니 다.시스템 은 이 두 변 수 를 정의 하지 않 았 다 고 생각 합 니 다.일부 변 수 를 특정한 범위 에 국한 시 켜 외부 와 격 리 시 키 면 다른 곳 에서 오 호출 되 는 것 을 피 할 수 있다.
if 문장의 끼 워 넣 기
if 문장 에 하나 이상 의 if 문장 을 if 문장 이 라 고 부 르 는 플러그 인 을 포함 합 니 다.일반적인 형식 은 다음 과 같다.

 if( )
  if( )  1
  else   2
 else
  if( )  3
  else   4
if 와 else 의 짝 짓 기 관 계 를 주의해 야 합 니 다.else 는 항상 위 에 있 는 가장 가 깝 고 짝 이 맞지 않 는 if 와 짝 을 짓 는 다.다음 과 같이 쓰 면:

 if( )
  if( )  1
 else
  if( )  2
  else   3
프로그램 작성 자 는 첫 번 째 else 를 첫 번 째 if(외층 if)와 같은 열 에 쓰 고 else 가 첫 번 째 if 와 대응 하 기 를 바 랍 니 다.그러나 실제 else 는 두 번 째 if 와 짝 을 이 루 었 습 니 다.가장 가 깝 고 두 번 째 if 는 그 어떠한 else 와 짝 을 이 루 지 않 았 기 때 문 입 니 다.오용 을 피하 기 위해 서 는 각 층 에 설 치 된 if 문 구 를 else 자구(예 를 들 어 이 절 에서 시작 하 는 형식)를 포함 시 키 는 것 이 좋 습 니 다.이렇게 if 의 수 는 else 의 수 와 같 고 내부 에서 바깥쪽 까지 일일이 대응 하 며 오류 가 발생 하지 않 습 니 다.
만약 if 와 else 의 수량 이 다르다 면 프로그램 디자이너 의 시 도 를 실현 하기 위해 괄호 를 넣 어 짝 짓 기 관 계 를 확정 할 수 있다.예 를 들 면:

 if( )
 {
  if ( )   1
 } //        if     if
 else   2//      if  
이 때{}은 if 문 구 를 내장 하 는 범 위 를 제한 합 니 다.{}밖의 else 는{}안의 if 와 짝 을 이 루 지 않 습 니 다.관계 가 분명 하여 실수 하기 가 쉽 지 않다.
C++조건 연산 자(?:)
if 구문 에서 판 별 된 표현 식 의 값 이'진짜'또는'가짜'일 때 하나의 할당 문 구 를 실행 하고 같은 변수 에 값 을 부여 할 때 간단 한 조건 연산 자 를 사용 하여 처리 할 수 있 습 니 다.예 를 들 어 다음 if 문구 가 있 으 면:

 if (a>b) max=a;
 else max=b;
조건 부 연산 자 사용 가능(?:)처리 하기:

 max=(a>b)?a:b;
그 중"(a>b)?a:b 는'조건 식'입 니 다.이것 은 이렇게 실 행 됩 니 다.(a>b)조건 이 진실 이 라면 조건 식 의 값 은"?"뒤의 값,즉 조건 식 의 값 은 a 입 니 다.그렇지 않 으 면 조건 식 의 값 은":"뒤의 값,즉 b 입 니 다.
조건 연산 자 는 세 개의 조작 대상 을 요구 하 며,세 개의 연산 자 라 고 부 릅 니 다.이것 은 C++의 유일한 세 개의 연산 자 입 니 다.조건 식 의 일반적인 형식 은:

    1 ?    2 :    3;
조건 연산 자의 실행 순 서 는 표현 식 1 을 먼저 풀 고 0(진)이 아니면 표현 식 2 를 풀 고 이 때 표현 식 2 의 값 은 전체 조건 식 의 값 으로 합 니 다.표현 식 1 의 값 이 0(가짜)이면 표현 식 3,표현 식 3 의 값 이 전체 조건 식 의 값 입 니 다."max=(a>b)?a:b"의 실행 결 과 는 조건 식 의 값 을 max 에 부여 하 는 것 입 니 다.즉,a 와 b 의 큰 자 를 max 에 부여 하 는 것 이다.조건 연산 자 는 할당 연산 자 보다 우선 하기 때문에 위의 할당 표현 식 의 풀이 과정 은 조건 식 을 먼저 풀 고 그 값 을 max 에 부여 하 는 것 입 니 다.
조건 식 에서 표현 식 1 의 유형 은 표현 식 2 와 표현 식 3 의 유형 과 다 를 수 있 습 니 다....와 같다

 x ? 'a': 'b';
x 를 정형 변수 로 정의 했다 면 x=0 이면 조건 식 의 값 은 문자'b'의 ASCII 코드 입 니 다.표현 식 2 와 표현 식 3 의 유형 도 다 를 수 있 습 니 다.이 때 조건 식 의 값 유형 은 양자 중 비교적 높 은 유형 입 니 다.조건 부 표현 식 x>y 가 있 으 면?1:1.5,만약 x≤y 라면 조건 식 의 값 은 1.5 이 고,만약 x>y 라면 값 은 1 이 어야 한다.C++는 1.5 를 쌍 정밀도 수 에 따라 처리 하기 때문에 쌍 정밀도 의 유형 이 정형 보다 높 기 때문에 1 을 쌍 정밀도 수로 변환 하여 표현 식 의 값 으로 한다.
【예】한 문 자 를 입력 하여 대문자 인지 아 닌 지 를 판단 하고 만약 그렇다면 소문 자로 변환 합 니 다.그렇지 않 으 면 바 꾸 지 않 는 다.마지막 으로 받 은 문 자 를 출력 합 니 다.

#include <iostream>
using namespace std;
int main( )
{
 char ch;
 cin>>ch;
 ch=(ch>='A' && ch<='Z')?(ch+32):ch; //  ch      ,    
 cout<<ch<<endl;
 return 0;
}


좋은 웹페이지 즐겨찾기