C语言中的循环问题,程序在没有输入的情况下执行
我正在用C写一个简单的程序,但我有一个问题。正如您从下面的代码中看到的,我只有一个while循环,但是程序在某些选择之后执行,而不进行选择C语言中的循环问题,程序在没有输入的情况下执行,c,loops,while-loop,C,Loops,While Loop,我正在用C写一个简单的程序,但我有一个问题。正如您从下面的代码中看到的,我只有一个while循环,但是程序在某些选择之后执行,而不进行选择 #include <stdio.h> #include <stdlib.h> #include <math.h> #include <windows.h> double area_of_triangle(double, double, double); int main(){ SetConsole
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
double area_of_triangle(double, double, double);
int main(){
SetConsoleTitle("Calculate Triangle Area");
char pilihan;
double a, b, c, area2;
while(1)
{
printf("\n\n\t1. Triangle Area\n");
printf("\t2. Out");
printf("\n\nSelect your choice:");
scanf("%c", &pilihan);
switch(pilihan){
case '1':
printf("\t\t\tFind The Area Of A Triangle\n");
printf("\tArea Of A Triangle:\n\n");
printf("\tFirst:");
scanf("%lf", &a);
printf("\tSecond:");
scanf("%lf", &b);
printf("\tThird:");
scanf("%lf", &c);
area2 = area_of_triangle(a, b, c);
printf("\n\n\tTriangle Area = %.2lf\n\n", area2);
break;
case '2':
exit(0);
break;
default:
printf("\n\n\t\t\tINVALID!!! 1 OR 2 ONLY\n");
break;
}
}
return 0;
}
double area_of_triangle(double a, double b, double c){
double s, area2;
s = (a+b+c)/2;
area2 = sqrt(s*(s-a)*(s-b)*(s-c));
return area2;
}
如您所见,程序执行并选择默认值本身,无效!!!仅1或2个
,无需任何输入,然后按enter键。如果你能帮我解决这个问题,我将不胜感激。谢谢您……当您使用scanf()
读取字符时,它会将换行符保留在缓冲区中,因此下次遇到scanf()
时,它会使用换行符并将得到的无效结果留给您
为了避免此问题,可以格式化scanf()
以使用换行符,如下所示:
printf("\n\nSelect your choice:");
scanf("%c\n", &pilihan);
当您使用scanf()
读取字符时,它会将换行符保留在缓冲区中,因此下次遇到scanf()
时,它会使用换行符并将得到的无效结果留给您
为了避免此问题,可以格式化scanf()
以使用换行符,如下所示:
printf("\n\nSelect your choice:");
scanf("%c\n", &pilihan);