ljy5011 发表于 2021-12-17 20:23:12

c语言数组问题

关于c语言数组去重的问题...



打印的是
1238570999

我想要的结果是12385709
怎么修改代码?渴求大佬

jackz007 发表于 2021-12-17 20:45:51

本帖最后由 jackz007 于 2021-12-17 20:47 编辑

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
      int arr = {1 , 2 , 3 , 8 , 5 , 8 , 7 , 0 , 0 , 9} , i , k , s , t = 10      ;
      for(s = 0 ; s < t - 1 ; s ++) {
                for(i = s + 1 ; i < t ; i ++) {
                        if(arr == arr) {
                              for(k = 0 ; k < t - i ; k ++) arr = arr ;
                              i --                                                      ;
                              t --                                                      ;
                        }
                }
      }
      if(t) {
                printf("%d" , arr)                                                   ;
                for(i = 1 ; i < t ; i ++) printf(" %d" , arr)                        ;
                printf("\n")                                                            ;
      }
      system("pause")                                                                   ;
}
      编译、运行实况:
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
1 2 3 8 5 7 0 9
请按任意键继续. . .

D:\00.Excise\C>

ljy5011 发表于 2021-12-17 22:03:01

jackz007 发表于 2021-12-17 20:45
编译、运行实况:

哥,这个11行的 i-- 和12行的   t--看不懂,可以解释一下吗?谢谢

傻眼貓咪 发表于 2021-12-17 22:08:42

本帖最后由 傻眼貓咪 于 2021-12-17 22:09 编辑

#include <stdio.h>

int main(){
    int arr = {1, 2, 3, 8, 5, 8, 7, 0, 0, 9}, n = 10;
   
    for(int i = 0; i < n-1; i++)
    for(int j = i+1; j < n; j++)
    if(arr == arr)
    arr = -1;
   
    for(int i = 0; i < n; i++)
    if(!(arr < 0))
    printf("%d ", arr);
   
    return 0;
}

jackz007 发表于 2021-12-17 22:21:16

本帖最后由 jackz007 于 2021-12-17 22:23 编辑

ljy5011 发表于 2021-12-17 22:03
哥,这个11行的 i-- 和12行的   t--看不懂,可以解释一下吗?谢谢

      第 10 行代码是通过把所有后面的元素整体向前移动一个元素位置来删除元素 arr[ i ] ,移动后,由于元素减少了 1 个,t 自然要减 1,旧的 arr[ i ] 被删除后,新的 arr[ i ],仍然需要和 arr[ s ] 进行比较,所以,下一次循环 i 的值应该保持不变。可是,在 for() 语句中,是有 i ++ 的,所以,为了下一次循环的 i 和这一次一样,就需要先执行 i --。

ljy5011 发表于 2021-12-17 22:38:38

jackz007 发表于 2021-12-17 22:21
第 10 行代码是通过把所有后面的元素整体向前移动一个元素位置来删除元素 arr[ i ] ,移动后,由 ...

懂了懂了,谢谢哥

ljy5011 发表于 2021-12-17 22:39:15

傻眼貓咪 发表于 2021-12-17 22:08


谢谢哥
页: [1]
查看完整版本: c语言数组问题