"알고리즘 노트"의 섹션 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;
}