鱼C论坛

 找回密码
 立即注册
查看: 1858|回复: 2

[已解决]帮帮我吧

[复制链接]
发表于 2020-12-30 20:45:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,就是对于重复出现的数字,只保留第一次出现的位置,其它的都删除。输出不重复的序列。

函数接口定义:
在这里描述函数接口。
int deleteNode(int *p, int n);
在这里解释接口参数。例如:其中 p 指向的一维数组中有 n 个元素。

保留不重复的元素,将最后的不重复元素的数量,作为函数值返回

裁判测试程序样例:
#include <stdio.h>
#define N 20 //数组容量最大20

//p所指向的一维数组原有n个元素,保留不重复的元素。
//将最后的不重复元素的数量,作为函数值返回
int deleteNode(int *p, int n);

int  main()
{
    int i,n; //用户从键盘输入的一个整数n,位于1到20之间。
    int a[N];
    int iLenAfter; //去重复后,还剩下的元素数量

    scanf("%d"  ,&n);
    for(i=0; i<n; i++) scanf("%d" ,&a[i]);

    iLenAfter = deleteNode(a,n);
    for(i=0;i<iLenAfter;i++)
        printf("%d ",a[i]); //每个元素后有一个空格
}


/* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:

6
6 1 0 5 0 0
输出样例:
6 1 0 5
最佳答案
2020-12-30 22:14:20
本帖最后由 jackz007 于 2020-12-31 01:07 编辑
  1. #include <stdio.h>

  2. #define N 20 //数组容量最大20

  3. int deleteNode(int * p , int n)
  4. {
  5.         int i , j , k                                                         ;
  6.         for(i = 0 ; i < n  - 1 ; i ++) {
  7.                 for(j = n - 1 ; j > i ; j --) {
  8.                         if(p[j] == p[i]) {
  9.                                 for(k = j ; k < n - 1 ; k ++) p[k] = p[k + 1] ;
  10.                                 n --                                          ;
  11.                         }
  12.                 }
  13.         }        
  14.         return n                                                              ;
  15. }

  16. int  main()
  17. {
  18.     int i,n; //用户从键盘输入的一个整数n,位于1到20之间。
  19.     int a[N];
  20.     int iLenAfter; //去重复后,还剩下的元素数量

  21.     scanf("%d"  ,&n);
  22.     for(i=0; i<n; i++) scanf("%d" , & a[i]) ;

  23.     iLenAfter = deleteNode(a , n)           ;
  24.     for(i=0;i<iLenAfter;i++)
  25.         printf("%d ",a[i]); //每个元素后有一个空格
  26. }
复制代码

        编译、运行实况
  1. D:\00.Excise\C>g++ -o x x.c

  2. D:\00.Excise\C>x
  3. 6
  4. 6 1 0 5 0 0
  5. 6 1 0 5
  6. D:\00.Excise\C>

  7. D:\00.Excise\C>x
  8. 20
  9. 1 9 3 7 5 4 3 9 6 5 2 8 7 0 9 2 3 5 7 9 8 1 0 1 2 3 5 0 9 2
  10. 1 9 3 7 5 4 6 2 8 0
  11. D:\00.Excise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-30 20:48:17 | 显示全部楼层
好家伙,和我们期末考试题差不多,不过我们那个是在求并集里面包含去重操作的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-30 22:14:20 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-12-31 01:07 编辑
  1. #include <stdio.h>

  2. #define N 20 //数组容量最大20

  3. int deleteNode(int * p , int n)
  4. {
  5.         int i , j , k                                                         ;
  6.         for(i = 0 ; i < n  - 1 ; i ++) {
  7.                 for(j = n - 1 ; j > i ; j --) {
  8.                         if(p[j] == p[i]) {
  9.                                 for(k = j ; k < n - 1 ; k ++) p[k] = p[k + 1] ;
  10.                                 n --                                          ;
  11.                         }
  12.                 }
  13.         }        
  14.         return n                                                              ;
  15. }

  16. int  main()
  17. {
  18.     int i,n; //用户从键盘输入的一个整数n,位于1到20之间。
  19.     int a[N];
  20.     int iLenAfter; //去重复后,还剩下的元素数量

  21.     scanf("%d"  ,&n);
  22.     for(i=0; i<n; i++) scanf("%d" , & a[i]) ;

  23.     iLenAfter = deleteNode(a , n)           ;
  24.     for(i=0;i<iLenAfter;i++)
  25.         printf("%d ",a[i]); //每个元素后有一个空格
  26. }
复制代码

        编译、运行实况
  1. D:\00.Excise\C>g++ -o x x.c

  2. D:\00.Excise\C>x
  3. 6
  4. 6 1 0 5 0 0
  5. 6 1 0 5
  6. D:\00.Excise\C>

  7. D:\00.Excise\C>x
  8. 20
  9. 1 9 3 7 5 4 3 9 6 5 2 8 7 0 9 2 3 5 7 9 8 1 0 1 2 3 5 0 9 2
  10. 1 9 3 7 5 4 6 2 8 0
  11. D:\00.Excise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-26 14:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表