Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何接受浮点数作为用户输入,而不使用可怕的无限循环_C_Types_Floating Point_Type Conversion - Fatal编程技术网

C 如何接受浮点数作为用户输入,而不使用可怕的无限循环

C 如何接受浮点数作为用户输入,而不使用可怕的无限循环,c,types,floating-point,type-conversion,C,Types,Floating Point,Type Conversion,好的,这是我c编程课的家庭作业。我只是想说出来。我在找复习的窍门。我想我可以通过使用isTriangle函数的开关使它更加精简。诸如此类。我还需要添加一个确定面积的函数。我现在正在做这件事。:) 然而,我的大问题是:如何允许用户输入是浮动的,而不获得无限循环?我尝试将所有相关数据类型和scanf转换类型分别更改为float和%2.2f。编译器给了我很多错误。。。表明函数原型与参数不匹配。此代码仅适用于整数。我不是要求任何人为我写这篇文章,但也许可以举一些例子说明我可能会出错的地方?此外,任何关于

好的,这是我c编程课的家庭作业。我只是想说出来。我在找复习的窍门。我想我可以通过使用isTriangle函数的开关使它更加精简。诸如此类。我还需要添加一个确定面积的函数。我现在正在做这件事。:)

然而,我的大问题是:如何允许用户输入是浮动的,而不获得无限循环?我尝试将所有相关数据类型和scanf转换类型分别更改为float和%2.2f。编译器给了我很多错误。。。表明函数原型与参数不匹配。此代码仅适用于整数。我不是要求任何人为我写这篇文章,但也许可以举一些例子说明我可能会出错的地方?此外,任何关于改进我的代码的建议都将不胜感激

我是C语言的新手,除了调整和编写bash脚本(如果符合条件的话),所以如果我的代码非常僵硬和过度,那是因为我对使用它感到非常不舒服

谢谢,伙计们

#include <stdio.h>
#include <stdlib.h>

//variable declarations


int test = 1; //global user bool 

//function delclarations

int isTriangle(int side1, int side2, int side3);
int kindOfTriangle(int side1, int side2, int side3);
int stayorGo();



//Intro and input in main
int main(){

    do{
        int side1, side2, side3;

        printf( "*********************Welcome to Triangle Wrangle!*********************\n");
        printf( "You will need to enter three integer values representing each side of your triangle.\n");
        printf( "Please enter the first side of your triangle, then hit enter.\n");
        scanf ("%d", &side1);
        printf( "Please enter the second side of your triangle, then hit enter.\n");
        scanf ("%d", &side2);
        printf( "Please enter the third side of your triangle, then hit enter.\n");
        scanf ("%d", &side3);

        isTriangle(side1, side2, side3); // is it a triangle?

    }while(test == 1);

} 



// does input pass the triangle smell test?
int isTriangle(side1, side2, side3){

//this should be written as a switch, to make code more readable/not shitty.
    if (side1 > side2 + side3  || side2 > side1 + side3 || side3 > side1 + side2 || side1 == 0 || side2 == 0 || side3 == 0){

            printf("Your triangle is not a true triangle!\n");

            stayorGo(); // start over or end program


    }else{

        kindOfTriangle(side1, side2, side3);
        printf("Lets talk about what kind of triangle this is.\n");
    }

}



int kindOfTriangle(side1, side2, side3){


    if((side1 == side2) && (side2 == side3) && (side1 == side3)){
        printf("*****This triangle is Equilateral. It is equal on all sides.*****\n");
        printf("\n");
        stayorGo();
    }else if (side1 == side2 || side2 == side3 || side1 == side3){
        printf("*****This triangle is Isosceles. It is equal on two sides.*****\n");
        printf("\n");
        stayorGo();
    }else if((side1 != side2) && (side2 != side3) && (side1 != side3)){
        printf("*****This triangle is Scalene. It has no equal sides.*****\n");
        printf("\n");
        stayorGo();
    }else{
        printf("You have managed to trick the program. It does not know what kind of triangle was input\n");
        printf("\n");
        stayorGo();
    }

}



// User prompt to end or continue
int stayorGo(){

    int keepTrying = 1;

    printf("Do you want to try again? 1 for yes, 0 for no; then hit enter!\n");
    scanf("%d", &keepTrying);

    if (keepTrying == 1){

        return 0;

    }else{

        exit(0);
    }
}
#包括
#包括
//变量声明
int检验=1//全局用户bool
//函数delclarations
int isTriangle(int side1、int side2、int side3);
int-kindOfTriangle(int-side1、int-side2、int-side3);
int stayorGo();
//主界面中的介绍和输入
int main(){
做{
内部侧1、侧2、侧3;
printf(“******************************欢迎来到三角争吵”******************************\n”);
printf(“需要输入三个整数值,表示三角形的每一侧。\n”);
printf(“请输入三角形的第一条边,然后按enter键。\n”);
scanf(“%d”和边1);
printf(“请输入三角形的第二条边,然后按enter键。\n”);
scanf(“%d”&side2);
printf(“请输入三角形的第三条边,然后按enter键。\n”);
scanf(“%d”和边3);
isTriangle(边1、边2、边3);//它是三角形吗?
}而(测试=1);
} 
//输入是否通过三角形气味测试?
内部三角形(边1、边2、边3){
//这应该作为一个开关来编写,以使代码更可读/不糟糕。
如果(side1>side2+side3 | side2>side1+side3 | side3>side1+side2 | side1==0 | | side2==0 | | side3==0){
printf(“您的三角形不是真正的三角形!\n”);
stayorGo();//重新开始或结束程序
}否则{
有点三角形(边1、边2、边3);
printf(“让我们谈谈这是什么样的三角形。\n”);
}
}
内部三角形(边1、边2、边3){
如果((side1==side2)&&(side2==side3)&&(side1==side3)){
printf(“****这个三角形是等边的。它在所有边上都相等。****\n”);
printf(“\n”);
stayorGo();
}else if(side1==side2 | | side2==side3 | | side1==side3){
printf(“****这个三角形是等腰的,两边相等。****\n”);
printf(“\n”);
stayorGo();
}else如果((side1!=side2)&&(side2!=side3)&(side1!=side3)){
printf(“****这个三角形是不等边的,没有等边。****\n”);
printf(“\n”);
stayorGo();
}否则{
printf(“您设法欺骗了程序。它不知道输入了什么样的三角形\n”);
printf(“\n”);
stayorGo();
}
}
//用户提示结束或继续
int stayorGo(){
int keepTrying=1;
printf(“是否要重试?1表示是,0表示否;然后按enter!\n”);
scanf(“%d”,&keepTrying);
if(keepTrying==1){
返回0;
}否则{
出口(0);
}
}
编辑:

下面是出错的浮点代码:

#include <stdio.h>
#include <stdlib.h>

//variable declarations

int test = 1; //global user bool 

//function delclarations

float isTriangle(float side1, float side2, float side3);
float kindOfTriangle(float side1, float side2, float side3);
int stayorGo();



//Intro and input in main
int main(){

    do{
        float side1, side2, side3;

        printf( "*********************Welcome to Triangle Wrangle!*********************\n");
        printf( "You will need to enter three integer values representing each side of your triangle.\n");
        printf( "Please enter the first side of your triangle, then hit enter.\n");
        scanf ("%2.2f", &side1);
        printf( "Please enter the second side of your triangle, then hit enter.\n");
        scanf ("%2.2f", &side2);
        printf( "Please enter the third side of your triangle, then hit enter.\n");
        scanf ("%2.2f", &side3);

        isTriangle(side1, side2, side3); // is it a triangle?

    }while(test == 1);

} 



// does input pass the triangle smell test?
float isTriangle(side1, side2, side3){

//this should be written as a switch, to make code more readable/not shitty.
    if (side1 > side2 + side3  || side2 > side1 + side3 || side3 > side1 + side2 || side1 == 0 || side2 == 0 || side3 == 0){

            printf("Your triangle is not a true triangle!\n");

            stayorGo(); // start over or end program


    }else{

        kindOfTriangle(side1, side2, side3);
        printf("Lets talk about what kind of triangle this is.\n");
    }

}



float kindOfTriangle(side1, side2, side3){


    if((side1 == side2) && (side2 == side3) && (side1 == side3)){
        printf("*****This triangle is Equilateral. It is equal on all sides.*****\n");
        printf("\n");
        stayorGo();
    }else if (side1 == side2 || side2 == side3 || side1 == side3){
        printf("*****This triangle is Isosceles. It is equal on two sides.*****\n");
        printf("\n");
        stayorGo();
    }else if((side1 != side2) && (side2 != side3) && (side1 != side3)){
        printf("*****This triangle is Scalene. It has no equal sides.*****\n");
        printf("\n");
        stayorGo();
    }else{
        printf("You have managed to trick the program. It does not know what kind of triangle was input\n");
        printf("\n");
        stayorGo();
    }

}



// User prompt to end or continue
int stayorGo(){

    int keepTrying = 1;

    printf("Do you want to try again? 1 for yes, 0 for no; then hit enter!\n");
    scanf("%d", &keepTrying);

    if (keepTrying == 1){

        return 0;

    }else{

        exit(0);
    }
}
#包括
#包括
//变量声明
int检验=1//全局用户bool
//函数delclarations
浮子为三角形(浮子侧1、浮子侧2、浮子侧3);
浮动三角形(浮动侧1、浮动侧2、浮动侧3);
int stayorGo();
//主界面中的介绍和输入
int main(){
做{
浮动侧1、侧2、侧3;
printf(“******************************欢迎来到三角争吵”******************************\n”);
printf(“需要输入三个整数值,表示三角形的每一侧。\n”);
printf(“请输入三角形的第一条边,然后按enter键。\n”);
scanf(“%2.2f”、&side1);
printf(“请输入三角形的第二条边,然后按enter键。\n”);
scanf(“%2.2f”和side2);
printf(“请输入三角形的第三条边,然后按enter键。\n”);
scanf(“%2.2f”、&side3);
isTriangle(边1、边2、边3);//它是三角形吗?
}而(测试=1);
} 
//输入是否通过三角形气味测试?
浮子呈三角形(侧1、侧2、侧3){
//这应该作为一个开关来编写,以使代码更可读/不糟糕。
如果(side1>side2+side3 | side2>side1+side3 | side3>side1+side2 | side1==0 | | side2==0 | | side3==0){
printf(“您的三角形不是真正的三角形!\n”);
stayorGo();//重新开始或结束程序
}否则{
有点三角形(边1、边2、边3);
printf(“让我们谈谈这是什么样的三角形。\n”);
}
}
浮动三角形(侧1、侧2、侧3){
如果((side1==side2)&&(side2==side3)&&(side1==side3)){
printf(“****这个三角形是等边的。它在所有边上都相等。****\n”);
printf(“\n”);
stayorGo();
}else if(side1==side2 | | side2==side3 | | side1==side3){
printf(“****这个三角形是等腰的,两边相等。****\n”);
printf(“\n”);
stayorGo();
}else如果((side1!=side2)&&(side2!=side3)&(side1!=side3)){
printf(“****这个三角形是不等边的,没有等边。****\n”);
printf(“\n”);
stayorGo();
}否则{
printf(“您设法欺骗了程序。它不知道输入了什么样的三角形\n”);
printf(“\n”);
int isTriangle(int side1, int side2, int side3);
/* .. */
int isTriangle(side1, side2, side3){
float isTriangle(float side1, float side2, float side3);
/* .. */
float isTriangle(side1, side2, side3){
void isTriangle(float side1, float side2, float side3){