每个人都可以帮我解决我的代码有什么问题,或者我的代码中缺少什么... 我们有这个活动,我们必须使用另一个函数找到最高的数字。
#include <stdio.h>
#include <stdlib.h>
#define p printf
#define s scanf
int high (int n1);
int main(int argc, char *argv[])
{
int i, num[10];
p("Input 10 numbers\n");
for (i=0; i<10; i++)
{
p("Enter Number: ");
s("%d",&num[i]);
}
p("Highest Number: %d",high(num[i]));
getch();
}
int high (int n1)
{
int l;
for (l=0; l<n1; l++)
{
if (n1 > l)
return n1;
}
}
当我输入任何数字时,我总是得到37 ..
答案 0 :(得分:1)
int high (int n1);
应该是
int high (int *arr, int sz); /* You need to pass an array */
p("Highest Number: %d",high(num[i]));
应该是
p("Highest Number: %d",high(num, 10)); /* Passing array now, not one element */
int high()
应该重写为:
int high (int *arr, int sz)
{
int l, mx = INT_MIN;
for (l=0; l<sz; l++)
{
if (mx < arr[l])
{
/* Left as an excercise */
}
}
return mx;
}
由于标记为c++,我建议使用available C++ to find max in a range:
const int max = *std::max_element(&num[0], &num[10]); // #include <algorithm>
答案 1 :(得分:0)
好吧,我不知道你是否还需要答案,但我更正了你的代码。以下是我发现的错误
int high (int n1)
{
int l;
for (l=0; l<n1; l++)
{
if (n1 > l)
return n1;
}
}
在这个for循环中,有条件l<n1
并且在for循环中你有if(n1 > l)
语句,由于l<n1
,它永远不会被获得。你说你每次都得到37分,但我得到了10分。这表明它是未定义的行为,因为没有返回实际值。 (这个代码部分真的没有任何意义,因为这个函数甚至没有尝试找到最大的数字。)
我发现的另一个问题是您使用了getch()
而未包含<conio.h>
(同时指出<conio.h>
在C ++中不是标准的)
好吧,即使这个问题被标记为C ++,由于代码完全是c,我在c中制作了一个固定的代码。我已删除代码中的getch()
。所以这是代码
#include<limits.h>
#include <stdio.h>
#include <stdlib.h>
#define p printf
#define s scanf
int high (int *n1,int lar); // now I have used *n1 to get the address of the array.
int main(int argc, char *argv[])
{
int i, num[10],lar=INT_MIN; // the variable lar is given the minimum value that can be held by an int
p("Input 10 numbers\n");
for (i=0; i<10; i++)
{
p("Enter Number: ");
s("%d",&num[i]);
}
p("Highest Number: %d",high(num,lar)); // sending the entire array to the function by sending its address
}
int high (int *n1,int lar)
{
int l;
for (l=0; l<10; l++) // since the size you have taken for your array is 10, I have used 10 here. But if you don't know the size beforehand, pass the size as an argument to the function
{
if (n1[l] >lar ) // Well, this is the simple part
lar=n1[l]; // Simply assigning the largest value to lar
}
return lar; // Finally returning the value lar.
}
嗯,希望这可以帮到你。