我正在尝试创建一个填充数组的东西,其中包含1到100之间的100个随机数。当它在main函数中时工作正常,但是当我把它放在int函数中时没有输出;因为我刚刚开始,我必须遗漏一些简单的东西。我该怎么做才能解决这个问题?
#include "stdafx.h"
#include <time.h>
#include <math.h>
#include <iostream>
int arrayer(int ar[101], int i);
int main()
{
srand(time(0));
int ar[101];
for (int i = 1; i < 101; ++i)
{
int arrayer(int ar[101], int i);
}
return 0;
}
int arrayer(int ar[101], int i) {
ar[i] = rand() % 100 + 1;
if (ar[i] < 10) {
std::cout << i << ": " << "0" << ar[i] << std::endl;
}
else {
std::cout << i << ": " << ar[i] << std::endl;
}
return ar[i];
}
答案 0 :(得分:1)
您正在调用并正确声明该功能。这应该是它的样子:
#include "stdafx.h"
#include <time.h>
#include <math.h>
#include <iostream>
int arrayer(int ar[101], int i);
int main() {
srand(time(0));
int ar[101];
for (int i = 1; i < 101; ++i)
{
arrayer(ar, i);
}
return 0;
}
int arrayer(int* ar, int i) {
ar[i] = rand() % 100 + 1;
if (ar[i] < 10) {
std::cout << i << ": " << "0" << ar[i] << std::endl;
}
else {
std::cout << i << ": " << ar[i] << std::endl;
}
return ar[i];
}
另请注意,您没有使用返回值,因此如果不会使用它,您可以省略它。
编辑:您实际上可以用以下内容替换if-else以打印值:
std::cout << i << ": " << setw(2) << setfill('0') << ar[i] << std::endl;
您需要包含&lt; iomanip&gt;这样做。
答案 1 :(得分:0)
您以非常错误的方式传递参数,调用函数的方式与声明或定义函数的方式更不同。您需要将函数调用为:
arrayer(ar, i);
只需传递数组地址ar
,然后传递变量i
。
此外,最好让函数arrayer
返回void
而不是int
,因为数组在传递给函数时会被修改,并且值会在函数本身中打印出来,所以你不需要退货。
答案 2 :(得分:0)
输出中没有任何内容,因为您从未调用 arrayer
函数!
在你的循环中,你只需再次声明该函数。由于新声明与前一个声明兼容,编译器会毫无错误地接受它。
为了实际调用该函数,您需要一个函数调用表达式:
for (int i = 1; i < 101; ++i)
{
arrayer(ar, i);
}