mo_on 发表于 2023-4-23 18:29:00

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;
}
为什么删除不了那个整数啊

isdkz 发表于 2023-4-23 18:30:38

您的代码里有一些问题,我为您纠正了一下:

#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]
查看完整版本: C语言求助