【问题标题】:Why am I still getting these errors?为什么我仍然收到这些错误?
【发布时间】:2015-03-23 03:58:57
【问题描述】:

所以这是一个实验室,我们应该在其中创建一个随机数生成器,以在 int 数组中生成至少 100 个整数。我相信我的代码中可能有一些错误,但我的编译器有 57 个错误,我只是没有看到那么多。下面的代码有什么问题?

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

int min, max, lowest = 0, highest = 0;
float average;
int randoms [100];

int main()
{       
    printf("Enter a minimun value.\n");
    scanf("%d",&min);
    printf("Enter a maximum value.\n");
    scanf("%d",&max);
    srand(10);
    for(int i = 0; i < 100; i++)
    {
        randoms[i] = (rand() % ((max-min)+1) + min); 
    }
    output();
    lowest();
    highest();
    average();
}

void output()
{
    for(int i = 0; i<101; i++)
    {
        if(i % 10 == 0)
        {
            printf(randoms[i]);
            printf("\n");
        }
        else
        {
            printf(randoms[i]);
        }
    }
}

int lowest()
{
    for(int i = 0; i > 101; i++)
    {
        if(randoms [i] < min) //finds the lowest value of array
        {
            min = randoms[i];
        }
    }
    printf("The lowest value is: %d", %min);
    return min;
}

int highest()
{
    for(int i = 0; i > 100; i++)
    {
        if(randoms[i] > max)
        {
            max = randoms[i];
        }
    }
    printf("The highest value is: %d", &max);
    return max;
 }

float average()
{
    int sum = 0;
    int count = 0;
    for(int i = 0; i > 100; i++)
    {
        count++;
        sum += randoms[i];
    }
    average = sum/count;
    printf("The average value is: %d", &average);
    return average;
}

【问题讨论】:

  • 首先,您显然不了解printf() 的工作原理。阅读文档。 printf(randoms[i]); 当然不符合要求。此外,除非您打算进行整数除法,否则average = sum/count; 不太可能按照您的想法进行。并停止将您的函数命名为全局变量的名称。您需要使用一个函数prototype。有件事告诉我for(int i = 0; i &gt; 101; i++) 也没什么用。
  • 有这么多错误,很难说从哪里开始。我的建议:在创建程序时采取一些小步骤,并确保每一步都能正常工作。
  • 也许你可以问一个让你困惑的错误问题,然后我们可以讨论它......
  • @sharon 编译器在这里并不重要,实际上。

标签: c arrays function generator


【解决方案1】:

首先是函数应该在使用前声明。我看到您尝试这样做,但是您将它们声明为变量,这是错误的。第二个:学习如何使用printf函数,错误太多了。这里:

printf("The highest value is: %i", &max);

您正在尝试打印变量的地址而不是变量本身。

另外,由于你是用 C 而不是 C++ 编程的,你不能在函数中间的某个地方声明变量,所以你应该声明 i 开头的循环中使用的.

您还在函数average() 中使用了一个与函数同名的变量,因此发生了冲突。我在函数体中重新声明了它,例如 float ret

你的代码应该是这样编译的(但请注意,我没有检查逻辑错误,只是让它编译)

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

int min, max;
int randoms [100];

void output();
int lowest();
int highest();
float average();

int main()
{
    int i=0;
    printf("Enter a minimun value.\n");
    scanf("%d",&min);
    printf("Enter a maximum value.\n");
    scanf("%d",&max);
    srand(10);
    for(; i < 100; i++)
    {
        randoms[i] = (rand() % ((max-min)+1) + min);
    }
    output();
    lowest();
    highest();
    average();
    return 0;
}

void output()
{
    int i=0;
    for(; i<101; i++)
    {
        if(i % 10 == 0)
        {
            printf("%i\n", randoms[i]);
        }
        else
        {
            printf("%i\n", randoms[i]);
        }
    }
}

int lowest()
{
    int i=0;
    for(; i > 101; i++)
    {
        if(randoms [i] < min) //finds the lowest value of array
        {
            min = randoms[i];
        }
    }
    printf("The lowest value is: %i", min);
    return min;
}

int highest()
{
    int i=0;
    for(; i > 100; i++)
    {
        if(randoms[i] > max)
        {
            max = randoms[i];
        }
    }
    printf("The highest value is: %i", max);
    return max;
}

float average()
{
    int sum = 0;
    int count = 0;
    float ret;
    int i=0;
    for(; i > 100; i++)
    {
        count++;
        sum += randoms[i];
    }
    ret = sum/count;
    printf("The average value is: %f", ret);
    return ret;
}

【讨论】:

  • 非常感谢,在看到这个并回顾我的代码后,我摆脱了所有的错误。现在我有一个合乎逻辑的问题,我如何允许人们在数组中搜索整数?
  • @Sosa 如果它解决了您的问题,请接受答案。根据您的评论:好吧,如果我理解正确,您首先从用户那里获得一个整数。接下来,由于你得到的实际上是一个文本,你必须convert it to an integer。现在你得到了一个数字,接下来简单地循环在数组中寻找这个数字。
  • @Sosa 啊,对了,你可以像以前一样使用scanf,然后你得到一个数字而无需转换。然后对一个数组做一个循环,然后寻找这个数字。
  • @Sosa 类似int i = 0; for (;i &lt; sizeof(randoms); ++i){ if (randoms[i] == theNumISeek) printf("Hurray");}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
  • 2021-03-15
相关资源
最近更新 更多