0

我如何通过争论并在我的程序中打印出这么多的数字?到目前为止,我发现如果我将 count 更改为低于 argc 的数字,数字的数量就会增加。但是,我希望它在我在命令行中键入的任何内容上打印 x 数量的数字,例如 10。谢谢

int random( int limi, int lims);

int main (int argc, char *argv[])
{
 int count;
srand(time(NULL));
int p;
int input;
int i = 0;


if (argc > 1)
{
  for ( count = 1; count < argc; count++)
{

 p = random(-10000,10000);

  printf(" %d\n",p );


}
}
else
  {
    printf("The command had no other arguments.\n");
  }

return 0;
}

int random( int limi, int lims )
{
          return ( rand() % (lims - limi) - lims);
 }
4

2 回答 2

1

应用程序的参数作为 argv[] 中的字符串数组传入。要将第一个参数转换为整数,请使用 atoi()、strtol() 或 sscanf() 对其进行解析:

if (argc > 1)
{
    int amount = atoi(argv[1]);
    for ( count = 1; count < amount; count++)
    {
         p = random(-10000,10000);

         printf(" %d\n",p );

    }
}

参数从 argv[1] 开始。argv[0] 将是您的程序的名称。

于 2015-03-11T01:09:06.557 回答
0

random()函数有两个错误

return ( rand() % (lims - limi) - lims);

首先% (lims - limi)会产生一个太短的范围1。并且在模数运算之后,你应该加上下限,而不是减去上限。在您的问题中,限制是 -10000 和 10000,因此没有区别,但是如果您将其称为例如,random(10,20)您会看到错误。

main()函数中,argc给出参数的数量。第一个 ( argv[0]) 通常是可执行文件的名称,因此您需要检查是否有多个参数,然后将字符串转换为数字。

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

int random( int limi, int lims )
{
    return ( rand() % (lims - limi + 1) + limi);
    //return ( rand() % (lims - limi) - lims);
}

int main( int argc, char *argv[] )
{
    int count, p, input;
    srand((unsigned)time(NULL));
    if (argc > 1)                                   // if argument supplied
    {
        if (sscanf(argv[1], "%d", &input) == 1)     // check valid input
        {
            for (count=0; count<input; count++)
            {
                p = random (-10000, 10000);
                printf("%d\n", p);
            }
        }
    }
    return 0;
}
于 2015-03-11T08:41:17.197 回答