| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 753 人关注过本帖
标题:删除元素,求大神指点,我写的错在哪里了。。。
只看楼主 加入收藏
water95
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2015-4-10
结帖率:40%
收藏
已结贴  问题点数:10 回复次数:7 
删除元素,求大神指点,我写的错在哪里了。。。
输入一个递增有序的整型数组A有n个元素,删除下标为i的元素,使其仍保持连续有序。注意,有效下标从0开始。 定义如下两个函数分别实现删除元素操作和数组输出操作。
void del(int a[], int n, int i);  /*删除数组a中下标为i的元素*/
void PrintArr(int a[], int n); /*输出数组a的前n个元素*/
输入
输入分三行,第一行是一个整数n(n<10),第二行是n个整数,第三行是要删除元素的下标i,i>=0。
输出
输出删除下标为i的元素后的数组元素,数据之间用空格隔开。
样例输入
6
1 3 5 7 9 11
3
样例输出
1 3 5 9 11
我写的如下,是错的,有人能给我指点一下吗?谢谢
#include<stdio.h>
#define N 10;
void del(int a[], int n, int i);
void PrintArr(int a[], int n);
int main()
{
  int n,i;
  int a[N];
  scanf("%d",&n);
  for(i=0;i<n;i++)
  {
    scanf("%d ",&a[i]);
  }
  scanf("%d",&i);
 del( a,  n,  i);
 PrintArr( a,  n);
return 0;
}
void del(int a[], int n, int i)
{
    int j;
  for(j=0;i<j;j++)
  {
   
      a[j]=a[i];
  }
  for(j=i;j<n-1;j++)
  {
    a[j]=a[j+1];
  }
  
}
void PrintArr(int a[], int n)
{
   
   int j;
   for(j=0;j<n-1;j++)
       printf("%d ",a[j]);
}
搜索更多相关主题的帖子: 元素 
2015-05-19 20:29
calix
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:249
专家分:1442
注 册:2015-5-4
收藏
得分:2 
没仔细看,但你的del方法有问题,改成这样试试,最好在调用之前检查下 i<n
程序代码:
void del(int a[], int n, int i)
{
  for(;i<n-2;i++)
  {
    a[i]=a[i+1];
  }
  a[n-1] = 0;
}
2015-05-19 22:40
maqiangdemo
Rank: 2
等 级:论坛游民
帖 子:78
专家分:98
注 册:2014-2-26
收藏
得分:2 
回复 楼主 water95
#define N 10
不加分号
2015-05-20 09:20
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:2 
二楼的del函数修改如下:
void del(int a[], int n, int i) {
 for(;i<n-1;i++) {
a[i]=a[i+1];
 }
a[n-1] = 0;
 }
2015-05-20 09:31
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
c语言中define前面要加#。
2015-05-20 09:35
maqiangdemo
Rank: 2
等 级:论坛游民
帖 子:78
专家分:98
注 册:2014-2-26
收藏
得分:0 
del函数改为如下:
程序代码:
void del(int a[], int n, int i)
{
    int j;
  for(j=i;j<n-1;j++)
    a[j]=a[j+1];
}
2015-05-20 09:44
鲤鱼爱美丽
Rank: 8Rank: 8
来 自:冥界
等 级:蝙蝠侠
威 望:5
帖 子:288
专家分:843
注 册:2015-4-8
收藏
得分:2 
把#define N 10:改为 #define N 10
然后我编译运行的结果如下
6
1 3 5 7 9 11
3
1 3 5 9 11
--------------------------------
Process exited after 32.82 seconds with return value 0
请按任意键继续. . .

代码代码,带着的石头码!!!
2015-05-20 10:44
lowrie
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:81
专家分:138
注 册:2015-3-12
收藏
得分:2 
七楼的答案是对的,好像就是编写错了,另外楼主的del函数有点看不懂呀。
void del(int a[], int n, int i)
{
    int j;
  for(j=0;i<j;j++)//输入的i是3,j=0,1,2,3时 ,i<j这不是不成立吗,你的这个循环好像都不执行吧,写他没用吧,如果写成j<i下边的赋值语句     
  {               //也有问题,都赋成a【3】了,即7.
   
      a[j]=a[i];
  }
  for(j=i;j<n-1;j++)
  {
    a[j]=a[j+1];
  }
  
}
2015-05-20 11:38
快速回复:删除元素,求大神指点,我写的错在哪里了。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016150 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved