gpt4 book ai didi

c - 我正在编写一个程序,它将删除数组中的重复数字。使用指针通过函数传递数组

转载 作者:行者123 更新时间:2023-11-30 16:07:24 25 4
gpt4 key购买 nike

这是删除重复数字的函数:

#include<stdio.h>
#include<conio.h>
int del(int *,int);
void main(){
int s[5], i=0;
clrscr();
printf("Enter: ");
for(i=0;i<5;i++)
scanf("%d",s[i]);
del(&s[0],5);
for(i=0;i<5;i++)
printf("%d",s[i]);
getch();
}

我认为它有一些错误,我在编译器中没有收到任何错误,但输出全是“0”。

int del(int *s, int n)

{
int i = 0,j=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(*(s+i)==*(s+j))
{
*(s+j) = 0;
}
}
}
return s;
}

最佳答案

您的代码存在一些问题。

首先,当你使用scanf时,你应该给它一个指针,而不是一个变量,所以你需要在变量名前添加“&”符号,因此它将向其发送一个地址。

scanf("%d",&s[i]);

其次,当您迭代整数数组时,您可以使用嵌套循环,这很棒,但是您首先将 *(s+0)*(s +0),因为“i”和“j”都初始化为零。

因此第二个修复将“j”设置为“i+1”,而不是 0:

int del(int *s, int n)

{
int i = 0,j=0;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(*(s+i)==*(s+j))
{
*(s+j) = 0;
}
}
}
return *s; //(return an integer, not a pointer)
}

现在您将始终比较数组中不同的放置数字。

第三件事,也是最后一点:你的“del”函数应该返回整数(这就是你声明它的方式),但你在最后返回“s”,它是 int* (指向整数的指针)。 返回 *s 代替。

关于c - 我正在编写一个程序,它将删除数组中的重复数字。使用指针通过函数传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59633661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com