| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 788 人关注过本帖
标题:C语言的数组值比对删除后显示的问题
只看楼主 加入收藏
jomwang
Rank: 2
等 级:论坛游民
帖 子:12
专家分:16
注 册:2010-1-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
C语言的数组值比对删除后显示的问题
实现的目的;输入一个数,和已知数组里的值比对,删除相同的,显示剩下的。可以多次删除,甚至删空。(删除一次,回显一次)
现在是当删除一个值之后,回显一个数组里的值。但是第二次比对删除的数组还是起初的那个没有被删除的那个数组!请高手帮帮忙是哪个地方出的错。谢谢!
int    main()
{
    int    array[10]={1,2,3,5,8,15,20,30,100,200};
    int i,num,j;


    for(j=10;j>=0;j--)
    {
    scanf("%d",&num);
    if(num==11) return 11;
    for(i=j;i>=0;i--)
    {
        if(array[i]==num)
        {
            array[i]=array[i--];

        }

        printf("%d\n",array[i]);

    }
    }
    return    0;
}
搜索更多相关主题的帖子: 删除 C语言 
2010-01-28 15:30
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
收藏
得分:10 
首先下标错了应该是j=9
第二if(num==11) return 11;我觉得这个没意义可以删去
第三你这个算法比较麻烦
如果是最后一个数值和输入数字相同则要将长度减一
不是最后要从这一位开始将i位数用i+1位数来代替同时还要长度减去相应的个数
要是学过二分查找法用他查找相同数值删去再将数组长度减一
2010-01-28 15:53
韦春敢
Rank: 3Rank: 3
来 自:广西
等 级:论坛游侠
帖 子:91
专家分:142
注 册:2010-1-25
收藏
得分:10 
来这里个吧朋友!!!
#include<stdio.h>
void  main()
{
    int    array[10]={1,2,3,5,8,15,20,30,100,200};

    int i,num,j;
     printf("Enter 0 to exit.\nThe beginning numbers are:\n");
for(i=0;i<10;i++)
printf("%d  ",array[i]);
 
    for(j=10;j>=0;)
    {printf("\nEnter the number you like:");
    scanf("%d",&num);
    for(i=0;i<=j;i++)
    {
        if(array[i]==num)
        {   j--;
            for(;i<j;i++)
            array[i]=array[i+1];
        }
    }
  for(i=0;i<j;i++)

        printf("%d  ",array[i]);
           if(num==0) j=-1;
   
    }
   
}

哈哈
2010-01-29 04:50
jomwang
Rank: 2
等 级:论坛游民
帖 子:12
专家分:16
注 册:2010-1-28
收藏
得分:0 
谢谢
学习了
以前(N年前)学习过C语言的
现在从头再看
哈哈
以后有问题就多多求教你们了
2010-01-29 09:39
韦春敢
Rank: 3Rank: 3
来 自:广西
等 级:论坛游侠
帖 子:91
专家分:142
注 册:2010-1-25
收藏
得分:0 
N年前学,现在学这个干什么??
要用啊!!!!

哈哈
2010-01-29 10:20
Devon_Ye
Rank: 4
来 自:广东
等 级:业余侠客
帖 子:124
专家分:282
注 册:2010-1-7
收藏
得分:0 
以下是引用韦春敢在2010-1-29 04:50:53的发言:

来这里个吧朋友!!!
#include<stdio.h>
void  main()
{
    int    array[10]={1,2,3,5,8,15,20,30,100,200};

    int i,num,j;
     printf("Enter 0 to exit.\nThe beginning numbers are:\n");
for(i=0;i<10;i++) ...
缩进有点乱
2010-01-29 14:00
快速回复:C语言的数组值比对删除后显示的问题
数据加载中...
 
   



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

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