C语言求助
【问题描述】初始化一维数组a={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>
intmain()
{
int a={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)
{
for(j=9;j<1;j--)
a=a;
m=1;
break;
}
}
if(m=-1)
printf("Not Found!\n");
for(i=0;i<n;i++)
printf("%d",a);
return0;
}
为什么删除不了那个整数啊 您的代码里有一些问题,我为您纠正了一下:
#include <stdio.h>
int main() {
int a = {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) {
for (j = i; j < n - 1; j++) {
a = a;
}
m = 1;
n--;
break;
}
}
if (m == -1) {
printf("Not Found!\n");
}
for (i = 0; i < n; i++) {
printf("%d", a);
}
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--`。
页:
[1]