arrays - Array1 由可被 3 整除的数字组成。创建一个 array2,其中第一个元素是奇数,然后是偶数
问题描述
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} 希望你现在明白了。
解决方案
我只是改变这部分和初始化变量,你不需要这么多。
if(tab1[i]%2!=0){
tab2[i]=tab1[i];
}
所以除此之外,你想要一个变量,它告诉你你已经得到了多少奇数。让我们称之为oddsCount
。每次你有奇数时,你都会增加它。
同样在第 i 步中,您将获得i-oddsCount
偶数。
所以让我们把它放到代码中
if(tab1[i]%2!=0){
tab2[oddsCount]=tab1[i];
++oddsCount;
} else {
// 19 is last index of the array size
tab2[19-(i-oddsCount)] = tab1[i]
}
推荐阅读
- javascript - 如何使用 for 循环将 Json 对象推送到 Json 数组?
- reactjs - 我在 componentDidUpdate 中的 prevProps 和 current props 是一样的,而我正在更新状态
- sql - 如何获取在开始和停止日期时间(SQL)(t-SQL)期间发生的活动状态
- java - 使用 JFrame 作为自定义输入框
- angular - Angular 5 如何创建 PDF URL?
- android - 如何暂停和恢复旋转动画android?
- c# - 使用实体模型在 Razor 中的表更新中模型值为空
- mysql - 在mysql中创建程序
- php - 在 PHP 中为通知设置 FCM 通道 ID
- excel - 选择排序在 Excel 上无法按预期工作