| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 467 人关注过本帖
标题:请教高手 详细解释
只看楼主 加入收藏
独孤求败1989
Rank: 2
等 级:论坛游民
帖 子:41
专家分:36
注 册:2009-11-8
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:5 
请教高手 详细解释
#include <stdio.h>
#define  N 20
fun(int  *a, int  n, int  x)
{
    int  p = 0, i;
    a[n] = x;
    while (x != a[p])
        p = p+1;
    if (p == n)
    {
        return -1;
    }
    else
    {
        /********found********/
        for (i=p; i<n; i++)
            a[i+1] = a[i];
        return n-1;
    }
}
main()
{
    int  w[N] = {-3, 0, 1, 5, 7, 99, 10, 15, 30, 90}, x, n, i;
    n = 10;
    printf("The original data:\n");
    for (i=0; i<n; i++)
        printf("%5d", w[i]);
    printf("\nInput x (to delete):");
    scanf("%d", &x);
    printf("Delete :%d\n", x);
    n = fun(w, n, x);
    if (n == -1)
    {
        printf("***Not be found!***\n\n");
    }
    else
    {
        printf("The data after delete :\n");
        for (i=0; i<n; i++)
            printf("%5d", w[i]);
        printf("\n\n");
    }
}
搜索更多相关主题的帖子: 解释 
2010-03-23 21:18
when159357
Rank: 2
等 级:论坛游民
帖 子:50
专家分:71
注 册:2009-11-11
收藏
得分:4 
你得指出哪不明白吧
2010-03-23 21:21
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:4 
#include <stdio.h>
#define  N 20
fun(int  *a, int  n, int  x)
{
    int  p = 0, i;  
    a[n] = x;  //在数组元素尾部添加我们要查找的值
    while (x != a[p])  //查找数组中第一个与要被删除的值
        p = p+1;  //如果不等于要查找的值,自加到下一个元素,再对比,直到相等
    if (p == n) //如果p == n 即在最后面找到了我们要删除的值,但是它是我们添加上去的,因此原始数据里没有找到我们要删除的值,因此返回 -1
    {
        return -1;
    }
    else  //如果 p != n ,说明在原始数组中找到了要删除的数据
    {
        /********found********/
        for (i=p; i<n; i++)
           a[i+1] = a[i]; //移位覆盖,删掉数据,这里我觉得应该是a[i] = a[i+1]
        return n-1; //返回剩余数据的个数
    }
}
main()
{
    int  w[N] = {-3, 0, 1, 5, 7, 99, 10, 15, 30, 90}, x, n, i;
    n = 10;
    printf("The original data:\n"); //输出原始数据
    for (i=0; i<n; i++)
        printf("%5d", w[i]);
    printf("\nInput x (to delete):");
    scanf("%d", &x);                      //输入你要查找的数据
    printf("Delete :%d\n", x);
    n = fun(w, n, x);    //查找处理要删除的数据
    if (n == -1)  //如果fun返回 -1 ,就是没有找到相应的数据x
    {
        printf("***Not be found!***\n\n");
    }
    else  //找到了,并打印出删除后的数据
    {
        printf("The data after delete :\n");
        for (i=0; i<n; i++)
            printf("%5d", w[i]);
        printf("\n\n");
    }
}
怎么两个贴子一样的啦,是不是重发了呀!!!
2010-03-23 21:47
weipeng_appl
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2010-1-21
收藏
得分:4 
“a[i+1] = a[i]; //移位覆盖,删掉数据,这里我觉得应该是a[i] = a[i+1]”,支持!
2010-03-24 10:35
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:4 
接分.

想象力征服世界
2010-03-28 21:24
dream4903
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2010-3-28
收藏
得分:4 
不明白
2010-03-28 21:44
快速回复:请教高手 详细解释
数据加载中...
 
   



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

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