나는 회로의 반경을 입력 한 다음 계산하고자하는 것을 선택하도록 요청하는이 프로그램에 노력하고 있습니다 : 면적, 둘레 또는 실린더의 볼륨 ..'계산 영역과 회로의 둘레'프로그램의 이상한 출력
#include <stdio.h>
int main(void)
{
float radius=0.0,height=0.0;
char choice,quit;
const float pi=3.1415658;
do
{
printf("Enter radius : \n");
scanf("%f",&radius);
printf("\n\nWhat do you want to calc.?\nArea of circuit --> press A\n"
"Circumference of circuit --> press C\nVolume of cylinder --> press V\nQuit --> Q\n");
scanf("%c",&choice);
switch (choice)
{
case 'A':
printf("Area = %.5f\n",radius*radius*pi);
break;
case 'C':
printf("Circumference = %.5f\n",2*radius*pi);
break;
case 'V':
printf("Enter Hight : \n");
scanf("%f",&height);
printf("Volume of cylinder = %.5f\n",radius*radius*pi*height);
break;
case 'Q':
quit='y';
break;
default:
printf("default!!\n");
break;
}
}while(quit != 'y');
return 0;
}
하지만 사용자의 선택을 읽고 기본에 직접 뛰어 건너 뛰는 이유는
Enter radius : 3 What do you want to calc.? Area of circuit --> press A Circumference of circuit --> press C Volume of cylinder --> press V Quit --> Q /*here before I choose anything the next line appears, skipping reading the choice*/ default!! Enter radius :
그래서 프로그램을 실행하면? 무엇이 문제입니까 ??
를 제외하고 오류를'scanf'을 사용하여, 당신은'quit'를 초기화해야합니다. –
이 문제를 디버그하는 올바른 방법은 디버거에서 프로그램을 단계별로 실행하고 문제가있는 각 단계에서 관련 값을 검사하거나 실행 중에 값을 인쇄하여 실행중인 작업을 표시하는 것입니다. 당신을 위해 그것을 디버깅하도록 다른 사람들에게 부탁하는 것은 부적절합니다. –