【发布时间】:2021-07-06 17:34:12
【问题描述】:
这段代码有什么问题,问题出在哪里? 我多次运行此代码,但它显示代码正在运行,但我没有得到任何输出。 你能告诉我错在哪里吗?
#include <stdio.h>
int print_arr(int *arr, int n)
{ for(int i=0; i<=n; i++)
{
printf("%d ",arr[i]);
}
return 0;
}
int insert_ele(int *arr_a, int *arr_b, int n, int Key)
{
int i,j;
for(i=0, j=0; i<n; i++, j++)
{
if(arr_a[i]>Key)
{
arr_b[j] = Key;
arr_b[j+1] = arr_a[i];
j++;
}
else
{
arr_b[j] = arr_a[i];
}
}
return 0;
}
int main()
{
//code
int arr_a[] = {12, 16, 20, 40, 50, 70};
int arr_b[10];
int Key = 26;
int n = sizeof(arr_a)/sizeof(arr_a[0]);
int indx = insert_ele(arr_a, arr_b, n, Key);
print_arr(arr, n);
return 0;
}
【问题讨论】:
-
请详细说明代码应该做什么。
-
进行基本调试。使用调试器。如果您逐行浏览代码,您肯定会发现比您已经描述的要多得多。 How to debug small programs.
-
提问时,请发布可编译代码。那 sn-p 甚至没有编译。
print_arr中的arr是什么? -
一个问题是缓冲区溢出:
for(int i=0; i<=n; i++)->for(int i=0; i<n; i++) -
问题是一旦你遇到插入
Key的条件,你就不想为下一个元素再次插入Key。您可以通过使用布尔变量检查是否已插入Key来防止它,否则您可以将 Key 值设置为(unsigned int)-1这是整数的最大值以防止再次进入。
标签: arrays c insert function-definition