c - C - 将 2 for 循环重写为 1 for 循环以复制数组。
问题描述
我遇到了以下问题:
“在函数 main 中声明一个array
名为 num1 的具有 30 个元素的整数,并声明一个array
名为 num2 的具有 21 个元素的第二个整数。为 num1 的每个元素分配一个 1 到 50 之间的随机数;打印这些数字。
在 afor loop
中,将前 21 个数字从 num1 复制到 num2。
在另一个for loop
打印中,来自 num2 的元素值,每行七个值。找到一种算法,可以从一个循环而不是 3 个循环打印它们。"
我已经能够将范围缩小到 2 个 for 循环,但是我很难尝试将所有内容都放入一个 for 循环中。如果我不使用第二个 for 循环,我只是不确定如何将数组从 num1 复制到 num2。
这是我到目前为止所做的工作。它可以正确打印所有内容,但它在 2 个 for 循环中,而不是 1 个。
for (j = 0; j < 30; j++) // getting random numbers for num1
{
num1[j] = 1 + rand() % (50 + 1 - 1);
printf("%d ", num1[j]);
}
printf("\nThis is num2:\n");
for (j = 0; j < 21; j++) // copying num1 array into num2 array, and only taking the first 21 numbers
{
num2[j] = num1[j];
printf("%d ", num2[j]);
if (x % 7 == 0) // this will print num2 with 3 rows each with 7 values
{
printf("\n");
}
x++;
}
解决方案
格式不会是最漂亮的,但这应该是您需要的。诀窍是等到您填充它并从当前索引中减去以获得旧值。
int main(void) {
int num1[30];
int num2[21];
for (int i = 0; i < 30; i++) {
num1[i] = 1 + rand() % (50);
printf("%d \n", num1[i]);
if (i<21)
num2[i] = num1[i];
if (!(i%7))
printf("%d %d %d %d %d %d %d\n", num2[i-6], num2[i-5], num2[i-4], num2[i-3], num2[i-2], num2[i-1], num2[i-0]);
}
return 0;
}
推荐阅读
- java - 无法解析符号'StackPane' Intelij IDEA
- java - Spring Boot 2.5.0、Spring Cloud 2020.0.2 和 Hibernate 5.4.31 - H2 数据库多行插入失败
- php - 在 PHP 中使用 CURL 发送文件和参数
- php - 仅为特定的重力形式运行函数
- java - 使用 ddl-auto 从 PostreSQL 获取图像时,@Transactional 不起作用:更新
- linux - NGINX 读取文件夹中新文件的自动权限
- flask - 烧瓶类型错误:“NoneType”不可下标
- python - Python 3.8:为什么即使 if 语句为 false,new_list 也会被更新?
- python - 如何在 pandas groupby 操作中计算 lambda 函数并同时添加一个 size 列?
- django - 找不到 Django 管理员和 wagtail 静态文件