arrays - 有没有办法使用嵌套循环在 C 中插入数组?
问题描述
所以这里是代码......
#include <stdio.h>
#include <stdlib.h>
int main() {
int a[20] = { 1, 2, 4, 5, 6, 7, 8, 9, 10 };
int new_num, n, i = 0;
for (i; i < 10; i++) {
//printf("the elements in the array are:");
printf("%d\n",a[i]);
}
printf("enter the index you want to insert the element");
scanf("%d", &n); //don't forget to add &
printf("Enter the element");
scanf("%d", &new_num);
for (i = 9; i >= n; i--) {
for (int j = 10; j > n; j--) {
a[j] = a[i];
}
}
a[n] = new_num;
printf("new array is:");
for (i = 0; i < 10; i++) {
printf("%d\n", a[i]);
}
return 0;
}
谁能告诉我我做错了什么?
我想使用嵌套循环将元素移动到下一个地址,而不是使用以下语法:
for (i = 9; i >= n; i--) {
a[i + 1] = a[i];
}
但正如我在输出图像中显示的那样,输出看起来有点怪异。
解决方案
问题是这个片段:
for (i=9;i>=n;i--){
for (int j=10;j>n;j--){
a[j]=a[i];
}
}
当 时i == 4
,您将a
索引超过 4 的所有元素设置为a[4]
(即 6)的值。你可能想要更接近的东西:
for (int j = 10; j > n; j++) {
a[j] = a[j - 1];
}
a[n] = new_num;
此外,您有一个小错误,您假设a
长度为 10,但您缺少值 3,因此它只有 9 个元素。
编辑:我刚刚看到你想使用嵌套循环。这是一个硬性要求吗?嵌套循环不是去这里的正确方法。
推荐阅读
- css - mat-tab-group 宽度对 flex 中的宽度 100% 容器没有反应
- azure-active-directory - Azure B2C 启用诊断日志以与请求订阅的日志分析集成,即使租户已经喜欢订阅
- javascript - 如何将属性添加到数组中的对象?
- python - 我有什么方法可以使此代码与 elif 中的嵌套 if 一起使用?
- python - 减少广播和求和的内存使用
- android - 以下代码和 android 应用程序停止工作
- android - 在 android studio 我使用 AppCompat api28 ,如何更改 style.xml 文件中的工具栏属性,如背景颜色等?
- angular - 从多个存储库构建 Angular 6 门户
- javascript - TestCafe 使用客户端函数从 HTML 数据表中获取数据
- python - get_reduce_mean 始终为 0