首页 新闻 会员 周边 捐助

c语言基础提问

0
悬赏园豆:10 [已解决问题] 解决于 2014-12-15 20:26

这是书上一个数组删除的问题,代码如下:

 1 #include <stdio.h>
 2 #define SIZE 5
 3 void print(int a[],int n);
 4 int delarray(int a[],int n,int x);
 5 int main()
 6 {
 7     int array[SIZE]={89,95,96,97,94};
 8     int x;
 9     print(array,SIZE);
10     printf("Please intput x be deleted:\n");
11     scanf("%d",&x);
12     if(delarray(array,SIZE,x))
13         print(array,SIZE-1);
14     else 
15         printf("Not be found!\n");
16     return 0;
17 }
18 void print(int a[],int n)
19 {
20     int i;
21     printf("The array is:\n");
22     for(i=0;i<n;i++)
23         printf("%4d",a[i]);
24     printf("\n");
25 }
26 int delarray(int a[],int n,int x)
27 {
28     int i,j;
29     int flag=1;
30     for(i=0;i<n&&a[i]!=x;i++);
31     if(i==0)
32         flag=0;
33     else
34     {
35         for(j=i;j<n-1;j++)
36             a[j]=a[j+1];
37     }
38     return flag;
39 }

可运行之后发现第一个元素无法删除,这是为什么??

stupidBB的主页 stupidBB | 初学一级 | 园豆:193
提问于:2014-12-15 11:44
< >
分享
最佳答案
0
 int delarray(int a[],int n,int x)
 {
     int i,j;
     for(i = 0; i < n; i++)
     {
         if(a[i] == x)
         {
             for(j = i; j < n; j++)
             {
                 a[j] = a[j+1];
             }
             return 1;
         }
     }
     return 0;
 }

我改写了一下delarray()的代码,你看下

收获园豆:7
飞鸟_Asuka | 菜鸟二级 |园豆:393 | 2014-12-15 20:20

嗯,没有问题了,谢谢你

stupidBB | 园豆:193 (初学一级) | 2014-12-15 20:26
其他回答(1)
0

if(i==0)flag=0;    else { for(j=i;j<n-1;j++)  a[j]=a[j+1];  }

改成 

 for(j=i;j<n-1;j++)  a[j]=a[j+1]; 

收获园豆:3
玉树临枫 | 园豆:51 (初学一级) | 2014-12-15 17:34

改了之后即使不存在的元素也会被当做最后一个元素删除的。

支持(0) 反对(0) stupidBB | 园豆:193 (初学一级) | 2014-12-15 17:58

依旧感谢

支持(0) 反对(0) stupidBB | 园豆:193 (初学一级) | 2014-12-15 20:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册