网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
02月09日漏签0天
c语言吧 关注:801,857贴子:4,376,041
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 4回复贴,共1页
<<返回c语言吧
>0< 加载中...

哪位高手帮忙看下哪错了

  • 只看楼主
  • 收藏

  • 回复
  • 0路过0
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
题目:请编一个函数fun,其中n所指存储单元中存放了数组中元素的个数。函数的功能是:删除所有值为y的元素。数组元素中的值和y的值由主函数通过键盘输入。

void fun(int bb[],int *n,int y)
{int i;
 for(i=0;i<*n;i++)
 if(bb[i]==y)
 {for( ;i+1<*n;i++) bb[i]=bb[i+1];
  (*n)--;}
}


用TC试了一下 好象相同的数字只能删除一个 比如:112233  输入2 就会变成11233   求大侠指点


  • 58.218.82.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
bb[i]=bb[i+1];
后面用个goto到前面,因为112233输入2后 变为11233 这个时候计数器已经指向了第一个3。给你个我以前写的链表程序,也不是很好,但能解决你的问题。 
#include <stdlib.h>
#define null 0
struct list
{int data;
 struct list *next;
};
main()
{struct list *head,*p,*q,*r;
 int n=0,m,flag=0;
 char a;
 clrscr();
 p=q=(struct list *)malloc(sizeof(struct list));
 printf("please input a data:");
 scanf("%d",&p->data);
 head=null;
 while(p->data!=0)
 {n=n+1;
 if(n==1)
 head=p;
 else
 q->next=p;
 q=p;
 p=(struct list *)malloc(sizeof(struct list));
 printf("please input a number:");
 scanf("%d",&p->data);
 }
 q->next=null;
 p=head;
 do
 {printf("%d\t",p->data);
 p=p->next;
 }while(p!=null);
 


 {printf("while data?");
 scanf("%d",&m);
 l:p=head;
 if(head==null)
 printf("error!\n");
 else
 while(m!=p->data&&p->next!=null)
 {q=p;
 p=p->next;
 }
 if(m==(p->data))
 {if(p==head)
 head=p->next;
 else
 q->next=p->next;
 goto l;
 }
 p=head;
 do
 {printf("%d\t",p->data);
 p=p->next;
 }
 while(p!=null);
 }
 printf("\n");


2026-02-09 17:24:57
广告
不感兴趣
开通SVIP免广告
  • 58.218.82.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
最后少了个
getch();
}
楼主自己加上后运行看看吧


  • 0路过0
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
谢谢 我试一


  • 202.105.106.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
晕.
你的程序执行这行后:for( ;i+1<*n;i++) bb[i]=bb[i+1]; 
i就为*n了,你再转到for(i=0;i<*n;i++),当然就跳出FOR,结束了.
建议修改为:
void fun(int bb[],int *n,int y) 
{int i,j;
 for(i=0;i<*n;i++) 
 if(bb[i]==y) 
 {for(j=i;j+1<*n;j++) bb[j]=bb[j+1]; 
 (*n)--;} 
}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 4回复贴,共1页
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示