c - C语言中如何用0替换数组中的重复项

标签 c duplicates zero

我必须编写一个程序,该程序将读取数字列表,然后打印出相同的列表,但已打印的数字将打印为零。

  #include<stdio.h>
int main()
{
  int n, list[100],i,j,k;
  scanf("%d", &n);
  for(i=0; i<n; i++)
    scanf("%d", &list[i]);
    for(i=0; i<n; i++)
    {
      for(j=i+1; j<n; )
      {
        if(list[j]==list[i])
        {
        for(k=j; k<n; k++)
     list[k]=list[k+1];
      // list[j]=0;
          n--;
        }
         else
         {
           j++;
         }
      }
    }
for(i=0; i<n; i++)
  printf("%d\n", list[i]);
 return 0;
}

测试用例 输入示例:

(长度:)5 (值:)2 3 4 3 6

示例输出:

2  3  4  0  6

最佳答案

您可以制作另一个相同长度的列表。在打印数字时,您将检查每个数字是否在列表中,如果不在列表中,则将其添加到列表中并打印它。 因此,在用输入填充列表后:

int checklist[100];
int count = 0;
for(int i = 0; i<100; i++){
   int valid = 1;
   for(int j = 0; j < count; j++){
      if(list[i]==checklist[j]){
          valid = 0;
      }    
   }
   if(valid == 1){
       printf("%d ", list[i])
       checklist[count]=list[i];
       count++;
   }
   else{printf("0 ");
}

关于c - C语言中如何用0替换数组中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30198376/

相关文章:

c - 接受用户输入,搜索其范围值在数组中的位置并返回二维数组的行索引

c - 是否有 "null"printf 代码不打印任何内容,用于跳过参数?

MySQL 不使用主键删除重复项

python - 类型错误 : unhashable type: 'list' when using built-in set function

python - 检测具有混合变量类型的几乎重复的行

java - 为什么 float 有符号零?

MATLAB:如何总结向量中的内容?

vb.net - MDI 子项仅在 WindowState 最大化时可见

c - GetLogicalDrives 和位位置 23

C with Bison+Flex 检查规则文件