gpt4 book ai didi

c - C 中的 NULL 混淆

转载 作者:太空宇宙 更新时间:2023-11-04 08:27:40 24 4
gpt4 key购买 nike

我正在创建一个简单的“升序”程序。当我在 int 数组中找到最小的 int 时,我想用其他值替换它,这样它就不会再次出现在数组中。为此,我分配了 int NULL。但现在的结果并不如预期。

如果我做错了什么,请告诉我。如果是这样,那么我应该用 int 的值替换什么?

#include<stdio.h>
#include<conio.h>
void main()
{

clrscr();
int a[10],b,c=0,d=0;
printf("Enter number of values you want to enter \n");
scanf("%d",&b);

printf("Enter values \n");
for(int i=0;i<b;i++)
scanf("%d",&a[i]);

while(c<b)
{
for(int k=0;k<b;k++)
{
for(int j=0;j<b;j++)
{
if(a[k] > a[j])
{
d=1;
}
}
if(d!=1 && a[k]!=NULL)
{
c++;
printf("%d ",a[k]);
a[k]='\0' ; //assigning it as NULL
}
if(c >= b)
break;
d=0;
}
}
getch();
}

最佳答案

在 C 和相关语言中,int 不是“可空的”——您可以使用一个特殊的值来代替,例如远远超出输入数据预期范围的值,例如 INT_MAX:

#include <limits.h>  // required header for INT_MAX et al

...

if(d!=1 && a[k]!=INT_MAX)
{
c++;
printf("%d ",a[k]);
a[k]=INT_MAX

}

然而,回到绘图板并看看您是否可以提出不需要特殊值的更好算法可能是个好主意。

关于c - C 中的 NULL 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29713677/

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