C++;if/else if语句不起作用 我对C++是相当新的,我必须用C++来制作一个程序,它可以使用3个数字(最小的最大值)。在函数中使用if语句之前,一切都正常。我试过做很多调试,似乎每当我使用“
时,您对C++;if/else if语句不起作用 我对C++是相当新的,我必须用C++来制作一个程序,它可以使用3个数字(最小的最大值)。在函数中使用if语句之前,一切都正常。我试过做很多调试,似乎每当我使用“,c++,if-statement,pass-by-reference,C++,If Statement,Pass By Reference,时,您对scanf()使用了错误的格式说明符。 使用%lf(指向双精度的指针)代替%d(表示指向整数的指针)。 或者,将代码中的double更改为int 请注意,您的printf()语句也有类似的问题,应该使用%f、%g或%e三个不同的数字有6种可能的顺序(排列) 您的代码似乎只检查其中的3个,即,按顺序 n3
scanf()
使用了错误的格式说明符。
使用%lf
(指向双精度的指针)代替%d
(表示指向整数的指针)。
或者,将代码中的double
更改为int
请注意,您的printf()
语句也有类似的问题,应该使用%f
、%g
或%e
三个不同的数字有6种可能的顺序(排列)
您的代码似乎只检查其中的3个,即,按顺序
n3
及
n3
及
n1
在其他3种情况下,您只需返回0即可
从我上面的系统列表中,你能猜出其他三个案例有什么共同点,它们有什么相似之处吗
<>顺便说一下,不要问,但是你可以通过使用C++ <代码> CIN < /C>和代码> CUT<代码>来代替你自己的麻烦,而不是低级C函数<代码> SCAFF 和 PROTFF .< /P>你需要查看和手册<代码> SCANF >代码> SCANF(“%LD”,NUMX)有6种方法可以重排3个数字,而你的函数只有3个可能的输出。SCANF和PrimTf不是C++。它们是继承的C-ISM,它们不是类型化的。我建议你不要使用它们。
#include <cstdlib>
#include <iostream>
#include <stdio.h>
using namespace std;
int sortNum(double &n1, double &n2, double &n3);
int main(int argc, char *argv[]) {
double num1, num2, num3;
printf("Welcome to Taylor's Sorting Program \n");
printf("Enter 3 numbers and the program will sort them \n");
printf("Number 1: \n");
scanf("%d", &num1);
printf("Number 2: \n");
scanf("%d", &num2);
printf("Number 3: \n");
scanf("%d", &num3);
sortNum(num1, num2, num3);
printf("Sorted Values \n");
printf("Number 1: %d ", num1);
printf("\t Number 2: %d ", num2);
printf("\t Number 3: %d \n", num3);
system("PAUSE");
return EXIT_SUCCESS;
}
int sortNum(double &num1, double &num2, double &num3) {
double n1, n2, n3;
n1 = num1;
n2 = num2;
n3 = num3;
if (n1 < n2 && n1 > n3) {
num1 = n2;
num2 = n1;
num3 = n3;
} else if (n2 < n1 && n2 > n3) {
num1 = n3;
num2 = n2;
num3 = n1;
} else if (n3 < n2 && n3 > n1) {
num1 = n2;
num2 = n3;
num3 = n1;
}
return 0;
}