"알고리즘 노트"섹션 2.3-C / C ++ 빠른 시작-> 구조 코드 분석 선택

"알고리즘 노트"의 섹션 2.3-C / C ++ 빠른 시작-> 구조 선택

첫 번째 질문 : 한 변수에서 이차 방정식의 근을 찾는 예제 4-1

제목 설명
2 차 방정식의 근을 구합니다 ax2 + bx + c = 0. 세 개의 계수 a, b, c는 키보드로 입력되며 a는 0 일 수 없지만 b2-4ac> 0은 보장되지 않습니다.
프로그램에 포함 된 변수는 double 유형입니다.
입력
한 소자의 차 방정식의 계수 셋은 공백으로 배정도 이중 형 분리
출력을
두 뿌리이다. 의해 출력 은 다음과 같이 (끝에 개행 참고) 지점 :
R1 = 제 루트
R2 = 제 루트
결과가 출력되고, 폭은 소수점 2 자리를 포함한 7 자리 숫자.
방정식에 실수 근이 없으면 다음과 같은 정보 줄을 출력합니다 (끝에 줄 바꿈 참고).
실제 근이 없습니다!
샘플 입력 복사
1 2 3
샘플 출력 복사
실제 근이 없습니다!

#include <stdio.h>
#include <math.h>

int main() {
    
    
    double a, b, c, r1, r2;
    scanf("%lf%lf%lf", &a, &b, &c);
    double discriminant;
    discriminant = b * b - 4 * a * c;
    if (a) {
    
    
        if (discriminant >= 0) {
    
    
            r1 = (-b + sqrt(discriminant)) / (2 * a);
            r2 = (-b - sqrt(discriminant)) / (2 * a);
            printf("r1=%7.2f\nr2=%7.2f", r1, r2);
        } else {
    
    
            printf("No real roots!");
        }
    }
    return 0;
}

질문 2 : 예제 4-2 실제 값 비교 및 ​​교환

제목 설명
키보드에서 두 개의 실수를 입력하고 대수 값의 내림차순으로 두 숫자를 출력합니다. 공백으로 구분 된 두 개의 실수를
입력하십시오
.
출력
이 두 실수는 앞쪽에 십진수와 뒤쪽에 큰 숫자를 사용하여 공백으로 구분하여 작은 것에서 큰 것으로 출력 됩니다.
소수점 이하 2 자리를 유지합니다.
개행 문자가 끝에 출력됩니다.
샘플 입력 복사
3.6 -2.3
샘플 출력 복사
-2.30 3.60
세 눈이 왕입니다

#include <stdio.h>

int main() {
    
    
    double a, b;
    scanf("%lf%lf", &a, &b);
    a > b ? printf("%.2f %.2f\n", b, a) : printf("%.2f %.2f\n", a, b);
    return 0;
}

이해하기 쉬운

#include <stdio.h>
int main()
{
    
    
    double a,b;
    scanf("%lf%lf",&a,&b);
    if(a>b)
    {
    
    
        printf("%.2f %.2f\n",b,a);
    }
    else
    {
    
    
        printf("%.2f %.2f\n",a,b);
    }
    return 0;
}

세 번째 질문 : 예제 4-3 3 개의 실수 값을 비교 및 ​​교환하고 순서대로 출력

제목 설명
키보드에서 실수 a, b, c 3 개를 입력하고 최소값은 변수 a에, 최대 값은 변수 c에, 중간 값은 비교와 교환을 통해 가장 작은 것부터 큰 것 순으로 저장합니다. 이 세 숫자 a, b, c를 출력하십시오.
줄 바꿈은 끝에 출력됩니다.
입력
3 개의 실수
출력
의 오름차순으로 세 개의 실수 출력 의 공백으로 구분 된 입력 , 공백 중간, 최소 앞, 최대 값으로 구분됩니다. 소수점 이하 2 자리를 유지합니다.
끝에있는 줄 바꿈에 유의하십시오.
샘플 입력 복사
3 7 1
샘플 출력 복사
1.00 3.00 7.00

#include <stdio.h>

int main() {
    
    
    double a, b, c;
    scanf("%lf%lf%lf", &a, &b, &c);
    if (a > b) {
    
    
        if (b > c) {
    
    
            printf("%.2f %.2f %.2f", c, b, a);
        } else {
    
    
            if (a > c) {
    
    
                printf("%.2f %.2f %.2f", b, c, a);
            } else {
    
    
                printf("%.2f %.2f %.2f", b, a, c);
            }
        }
    } else {
    
    
        if (c > b) {
    
    
            printf("%.2f %.2f %.2f", a, b, c);
        } else {
    
    
            if (a > c) {
    
    
                printf("%.2f %.2f %.2f", c, a, b);
            } else {
    
    
                printf("%.2f %.2f %.2f", a, c, b);
            }
        }
    }
    return 0;
}

네 번째 문제 : 연습 4-4 세 정수의 최대 값 찾기

제목 설명
키보드로 입력되는 정수 a, b, c가 있으며 가장 큰 숫자를 출력합니다. 공백으로 구분 된 세 개의 정수를
입력하십시오
. 끝에 새 줄을 추가하여 세 숫자 중 최대 값을
출력
합니다.
샘플 입력 복사
1 3 2
샘플 출력 복사
3은
또 다른 귀여운 삼 안경입니다

#include <stdio.h>

int main() {
    
    
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    a > b ? (a > c ? printf("%d", a) : printf("%d", c)) : (b > c ? printf("%d", b) : printf("%d", c));
    return 0;
}

이해하기 쉬운

#include <stdio.h>

int main() {
    
    
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    if (a > b) {
    
    
        if (b > c) {
    
    
            printf("%d\n", a);
        } else {
    
    
            if (a > c)
                printf("%d\n", a);
            else
                printf("%d\n", c);
        }
    } else {
    
    
        if (b > c) {
    
    
            if (a > c)
                printf("%d\n", b);
            else
                printf("%d\n", b);
        } else {
    
    
            printf("%d\n", c);
        }
    }
    return 0;
}

다섯 번째 질문 : 연습 4-10-1 보너스 계산

주제 설명
회사에서 발행하는 보너스는 수익 수수료를 기준으로합니다. 이익 I이 100,000보다 작거나 같으면 보너스를 10 % 증가시킬 수 있습니다. 이익이 10 만 위안을 초과하고 이익이 200,000 위안 (100000 <I <= 200000) 미만인 경우 10 만 위안 미만의 부분은 여전히 ​​10 % 수수료가 적용됩니다. 부분 수수료율 7.5 %, 200000 <I <= 400000 일 때, 20 만 위안 이하의 부분은 위의 방법 (아래와 동일)에 따라 수수료를 받고, 20 만 위안 이상 부분은 5 %, 400000 <I <= 600000 인민폐 인 경우 40 만 위안을 초과하는 부분은 3 % 수수료, 600000 <I <= 1000000 인 경우 60 만 위안을 초과하는 부분은 1.5 %, I> 1000000 위안 인 경우 100 만 위안을 초과하는 부분은 1 % 수수료가 부과됩니다.
키보드에서 이번 달의 수익 I을 출력하고 발행해야 할 보너스 수를 찾으면 보너스가 포인트까지 정확합니다.
if 문으로 구현해야합니다.
입력
기업 이익, 진수는, 배정 밀도 double 형의
출력
, 보너스의 수는 끝에서 발행 2 소수 자릿수를 유지하고, 랩합니다.
샘플 입력 복사
1050
샘플 출력 복사
105.00

#include <stdio.h>

int main() {
    
    
    double profit, bonus;
    scanf("%lf", &profit);
    if (profit <= 100000)
        bonus = profit * 0.1;
    else if (profit <= 200000)
        bonus = (profit - 100000) * 0.075 + 10000;
    else if (profit <= 400000)
        bonus = (profit - 200000) * 0.05 + 7500 + 10000;
    else if (profit <= 600000)
        bonus = (profit - 400000) * 0.03 + 10000 + 7500 + 10000;
    else if (profit <= 1000000)
        bonus = (profit - 600000) * 0.015 + 6000 + 10000 + 7500 + 10000;
    else
        bonus = (profit - 1000000) * 0.01 + 3000 + 6000 + 10000 + 7500 + 10000;
    printf("%.2f", bonus);
    return 0;
}

여기에 사진 설명 삽입

추천

출처blog.csdn.net/DoMoreSpeakLess/article/details/107722998