| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 446 人关注过本帖
标题:请教各位前辈一个问题
只看楼主 加入收藏
a24596319
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-10-29
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
请教各位前辈一个问题
若一维整形数组a中的数据已经按由小打大的顺序存放,请编写程序把a中每组相同的数据删得只剩一个(例如,a原为2,2,2,3,3,5,删除后变为2,3,5),然后按每行3个数据的格式输出数据a小弟是干网络的,对编程一窍不通,但由于需要考试,所以请各位前辈大哥大姐帮帮忙,这是一道简答题。
搜索更多相关主题的帖子: 前辈 
2010-10-29 10:21
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
收藏
得分:6 
给你说下算法思路
既然已经有序了。相同的元素只能是相邻的。这样,只需要两两比较。跟冒泡排序的算法差不多,一旦有相邻的两个元素相同,
就设置一个标记,例如置零。最后,在从后面遍历数组,遇到零就前移,覆盖掉。
这样来说用数组效率较高。

编程的道路上何其孤独!
2010-10-29 10:40
a24596319
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-10-29
收藏
得分:0 
能不能给个代码啊
2010-10-29 12:03
NoSoul
Rank: 9Rank: 9Rank: 9
来 自:沈阳化工大学
等 级:蜘蛛侠
帖 子:283
专家分:1010
注 册:2009-6-6
收藏
得分:6 
#include <stdio.h>
#define  N 6
int main()
{
    int i,j,num;
    int A[N],B[N];
    for(i=0; i<N; i++)
        scanf("%d",&A[i]);
    num=A[0];
    for(i=1,j=0; i<N; i++)
        if(A[i]!=num)
            B[j++]=num,num=A[i];
    B[j++]=num;
    for(i=0; i<j-1; i++)
        printf("%d ",B[i]);
    printf("%d\n",B[j-1]);
    return 0;
}

我想伸手拉近點,竟觸不到那邊,就欠一點點,但這一點點...卻好遠
2010-10-29 12:49
小白来学习
Rank: 2
等 级:论坛游民
帖 子:20
专家分:33
注 册:2010-7-28
收藏
得分:6 
#include <stdio.h>

/*************************************************/
/* 函数名: main()                                 */
/* 功能:    擦出一个数组中重复的元素             */
/*************************************************/
main()
{
    char data_ram, number_tab[100];
    unsigned char number_counter=0, counter1=0, counter2=0, cal_ram=0;
    unsigned char counter3=0;

    printf("Please input your number(-1 to end)\n");
    scanf("%d", &data_ram);

    while ( data_ram!=-1 )
    {
        number_tab[number_counter] = data_ram;   
        ++number_counter;
        scanf("%d", &data_ram);        
    }                                                            /*输入要处理的正整数数组*/

    --number_counter;

    printf("The number you input is:\n");
    for ( counter1=0; counter1<=number_counter; ++counter1)
    {
        printf("%d\t", number_tab[counter1]);            
    }
    printf("\n");                                                /*打印用户输入的正整数数组*/

    for ( counter1=0; counter1<number_counter; ++counter1)
    {
        for ( counter2=counter1+1; counter2<=number_counter; ++counter2 )
        {
            if ( number_tab[counter1]==number_tab[counter2] )
            {
                for ( counter3=counter2; counter3<number_counter; ++counter3 )
                {
                    number_tab[counter3]=number_tab[counter3+1];        
                }
                --counter2;
                --number_counter;
            }
        }   
    }        
                                                                /*擦除数组中重复的元素*/
    printf("Processed number is:\n");

    for ( counter1=0; counter1<=number_counter; )
    {
        for ( counter2=0; counter2<3; ++counter2)
        {
            printf("%d\t", number_tab[counter1]);
            
            if ( ++counter1>number_counter )
            {
                break;
            }
        }               

        printf("\n");        
    }                                                            /*打印处理后的数据*/
}
以测试完毕。 用户可以随意输入一个正整数数组 运行结果擦出数组中的重复元素




[ 本帖最后由 小白来学习 于 2010-10-30 09:38 编辑 ]
2010-10-30 09:32
小白来学习
Rank: 2
等 级:论坛游民
帖 子:20
专家分:33
注 册:2010-7-28
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 小白来学习 于 2010-10-30 09:36 编辑 ]
2010-10-30 09:33
快速回复:请教各位前辈一个问题
数据加载中...
 
   



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

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