我开始进行C编程,我的英语不是最好的,所以我会尽力向自己解释一下......
我试图做一个生成随机数,对和奇数的程序,并将这些数字保存到两个不同的向量中......
所以看起来像这样
#include <stdio.h>
#include <stdlib.h>
#define ARRAYSIZE 6
void main()
{
int randomNumber, position, pairVector[ARRAYSIZE], oddVector[ARRAYSIZE];
srand(time(NULL));
for (position = 0; position < ARRAYSIZE; position++)
{
randomNumber = rand() % 49 + 0;
if (randomNumber % 2 == 0)
pairVector[position] = randomNumber;
else
oddVector[position] = randomNumber;
}
// Loop to print all the pair random numbers
for (position = 0; position < ARRAYSIZE; position++)
{
if(pairVector[position] >= 0)
printf("%d ", pairVector[position]);
}
// Separation of the pair and odd numbers
printf("\n\n\n");
// Loop to print all the odd random numbers
for (position = 0; position < ARRAYSIZE; position++)
{
if (oddVector[position] >= 0)
printf("%d ", oddVector[position]);
}
}
正如你所看到的,我有2个循环来打印对和奇数,这个数字印有2个循环,所以这里是我的问题......
在循环内的向量中没有条件&gt; = 0,我打印了一些内存方向(因为如果我的大小为6个整数但只有3个数字(对或奇数),则其他3个方向也被打印)...如果没有条件,我该怎么做才能从打印的矢量中删除这些方向?也许指针?
感谢您的建议并抱歉我的英语不好。
答案 0 :(得分:1)
您可以将两个数组元素设置为0
for(position = 0; position < ARRAYSIZE; position++)
pairVector[position] = 0;
为两个数组执行此操作,您的数组将填充0(零),然后使用rand数字填充数组,因此您将拥有类似
的内容示例:24,22,58,0,0,0
当你想要打印输出数组时,只需要像
那样for(position = 0; position < ARRAYSIZE; position++)
{
if(pairVector[position] != 0)
printf("%d ", pairVector[position]);
}
答案 1 :(得分:0)
由于你不知道阵列什么时候会被完全填满,我建议你做一个while循环直到两个阵列都被填满。
void main()
{
int randomNumber, position, pairVector[ARRAYSIZE], oddVector[ARRAYSIZE];
srand(time(NULL));
int pairIndex, oddIndex;
pairIndex = oddIndex = 0; // you will increment them once you find a number for regarding array
while ((pairIndex < ARRAYSIZE) || (oddIndex < ARRAYSIZE) )
{
randomNumber = rand() % 49 + 0;
if (randomNumber % 2 == 0){
if (pairIndex<ARRAYSIZE)
pairVector[pairIndex++] = randomNumber;
}
else{
if (oddIndex<ARRAYSIZE)
oddVector[oddIndex++] = randomNumber;
}
}
// Loop to print all the pair random numbers
for (position = 0; position < ARRAYSIZE; position++)
{
if(pairVector[position] >= 0)
printf("%d ", pairVector[position]);
}
// Separation of the pair and odd numbers
printf("\n\n\n");
// Loop to print all the odd random numbers
for (position = 0; position < ARRAYSIZE; position++)
{
if (oddVector[position] >= 0)
printf("%d ", oddVector[position]);
}
}
在你的方法中,循环只经历了6次,并且肯定一个或两个数组可能不完整。在上面的解决方案中,您将填充两个阵列,然后打印它们。