|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
【问题描述】
初始化一维数组a[10]={12,45,87,64,15,-47,69,16,63,36},从键盘输入并查找一个整数num,如果找到,则删除数组中的num,输出删除后的数组,否则输出“Not Found!”,并输出原数组
说明:请只提供需要补全的代码部分,不需要提供完整程序。可根据需要定义其他变量。
【输入形式】
【输出形式】
【样例输入】
27
【样例输出】
Not Found!
12 45 87 64 15 -47 69 16 63 36
#include <stdio.h>
int main()
{
int a[10]={12,45,87,64,15,-47,69,16,63,36};
int num,i,j=0,n=10,m;
scanf("%d",&num);
for(i=0;i<9;i++)
{
if(num==a[i])
{
for(j=9;j<1;j--)
a[j]=a[j+1];
m=1;
break;
}
}
if(m=-1)
printf("Not Found!\n");
for(i = 0; i<n; i++)
printf("%d ", a[i]);
return 0;
}
为什么删除不了那个整数啊
您的代码里有一些问题,我为您纠正了一下:
#include <stdio.h>
int main() {
int a[10] = {12, 45, 87, 64, 15, -47, 69, 16, 63, 36};
int num, i, j = 0, n = 10, m = -1;
scanf("%d", &num);
for (i = 0; i < n; i++) {
if (num == a[i]) {
for (j = i; j < n - 1; j++) {
a[j] = a[j + 1];
}
m = 1;
n--;
break;
}
}
if (m == -1) {
printf("Not Found!\n");
}
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}
这里是修改后的代码,以下是我修改的地方:
1. 从`for(i=0;i<9;i++)`更改为`for(i=0;i<n;i++)`,这样可以遍历整个数组。
2. 删除元素时,从`for(j=9;j<1;j--)`更改为`for(j=i;j<n-1;j++)`。因为要从找到的位置开始,将后面的元素向前移动一位,直到数组的倒数第二个元素。同时,`j--` 更改为 `j++`。
3. 修正`if(m=-1)`为`if(m==-1)`。这是一个赋值与比较的问题,应该使用 `==` 而不是 `=`。
4. 当找到并删除元素后,记得将数组的长度 `n` 减 1,`n--`。
|
|