【发布时间】:2020-11-16 18:36:43
【问题描述】:
int main() {
int tab1[20], tab2[20], a, b, i, x;
scanf("%d %d", &a, &b);
srand(time(NULL));
for(i=0;i<20;i++){
x=rand()%(b+1-a)+a;
while(x%3!=0){
x=rand()%(b+1-a)+a;
}
tab1[i]=x;
if(tab1[i]%2!=0){
tab2[i]=tab1[i];
}
}
for(i=0;i<20;i++){
printf("%d ", tab1[i]);
}
printf("\n");
for(i=0;i<20;i++){
printf("%d ", tab2[i]);
}
return 0;
}
完整的任务是:创建一个由 20 个元素组成的数组,这些元素由在给定范围 (a,b) 内可被 3 整除的随机数构成。制作第二个数组,因为第一个元素是奇数,然后是偶数。 抱歉,如果这几乎没有意义,我是从波兰语翻译过来的。
这是我想出的,它不起作用,因为如果tab1[i]%2==0 那么它会生成垃圾。如果不使用复杂的排序功能,我不知道如何解决它。我们有 15 分钟的时间来做这件事,如果可能的话,只用一个 for 循环。
这是给定 array1[3] 的样子: {3,6,6,3} 那么 array2 应该如下所示: {3,3,6,6} 希望你现在明白了。
【问题讨论】:
-
tab1[i]%==0对我来说是个谜。除其他原因外,因为我没有在代码中看到它。 -
你的问题在哪里?您似乎试图在给定范围内生成一个充满随机数的数组,这些随机数也可以被 3 整除? (这似乎不是标题中描述的实际目标。)或者实际上对数组进行排序?请专注于您需要帮助的地方。
-
问题未完全指定。是程序负责生成Array1吗?
array2的元素是否应该与array1相同,重新排序? “奇数然后偶数”是指所有奇数元素后跟所有偶数元素,还是意味着奇数和偶数之间交替?数组大小是作为问题的一部分指定的,还是您只是发明的?重要的是输出还是程序源中出现的数据结构? -
关于
while循环:如果你想要一个能被3整除的随机数,选择一个随机数并乘以3。 -
抱歉没有具体说明,这是我的第一个问题。我已经编辑了我的帖子。