我必须编写一个程序,该程序将读取数字列表,然后打印出相同的列表,但已打印的数字将打印为零。
#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/