나는 이것이 제대로 실행되지 않는 이유를 알아 내려고 노력하고 있습니다. 사용자로부터 4 개의 입력을 원하고 마지막에 계산을 실행합니다.
#include <stdio.h>
#include <math.h>
int main(){
double amount; /* amount on deposit */
double principal; /* what's the principal */
double rate; /* annual interest rate */
int year; /* year placeholder and no. of total years */
int yearNo;
printf("What is the principal? ");
scanf("%d", &principal);
printf("What is the rate (in decimal)? ");
scanf(" .2%d", &rate);
printf("What is the principal? ");
scanf(" %d", &principal);
printf("How many years? ");
scanf(" %d\n", yearNo);
printf("%4s%21s\n", "Year", "Amount on deposit");
/* calculate the amount on deposit for each of ten years */
for (year = 1; year <= yearNo; year++){
amount = principal * pow(1.0 + rate, year);
printf("%4d%21.2f\n", year, amount);
}
return 0;
}
원금과 요율을 적절하게 요구하지만 Principal에 대한 질문을 건너 뛰고 몇 년을 요구합니다. 그럼 그냥 거기 앉아 "유령"항목을 기다리고 있습니까?
나는 scanf()
때릴 때 약간의 공백을 추가 한다고 읽었 enter
지만 전에 공백 %d
이 그것을 고칠 것이라고 생각 했습니까?
나는 또한 당신이 do { c=getchar(); } while ( c != '\n');
각각을 추가 할 수 있다는 것을 scanf
보았지만 그것은 프로그램을 충돌시키는 것 같습니다 (저도 int c = 0;
처음에 추가 했습니다).
도움이나 아이디어에 감사드립니다!
편집하다:
잘못된 형식 지정자를 다음에서 변경할 때 :
scanf(" .2%d", &rate);
에:
scanf(" %d", &rate);
그런 다음 내 값을 입력 한 후 충돌이 발생합니다.
.2%d
유효한 형식 문자열 이 아닙니다 .
시작하려면 %
먼저해야합니다. 또한 부동 소수점 값 뒤에있는 d
경우 올바른 문자가 아닙니다 . 이는 정수 값입니다.
다음과 같은 것을 사용해야합니다 %f
(너비 나 정밀도 수정자가 필요하지 않음).
또한 호출 중 하나에 포인터 를 사용하지 않는 사소한 실수를 저질렀습니다 scanf
.
scanf(" %d\n", yearNo);
이로 인해 충돌이 발생할 수 있으며 다음과 같이 변경해야합니다.
scanf(" %d\n", &yearNo);
그리고, 최종 제안, 그것은 이전에 공백 (또는 줄 바꿈 후)를 사용하는 완전히 불필요 %d
하거나 %f
형식 지정자의 가족. 스캐너는 둘 다 앞에있는 공백을 자동으로 건너 뜁니다.
따라서이 프로그램에서 필요한 유일한 두 가지 scanf
형식 문자열 은 및 ( 는 부동 소수점, 복식 용)입니다."%d"
"%lf"
f
lf
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다