关于C语言的一道题
/************************************************************************/
/* 变量p用来存放数据整型指针,num表示数组的大小,返回值用来表示函数运行 */
/* 是否正常,0表示出现异常,1表示正常执行 */
/************************************************************************/
int DuplicateCheck(int *p, int num)
{
//对数据进行检验
if (num < 0)
{
return 0;
}
//对数组进行异常检测
if (NULL == p)
{
p = (int *)malloc(sizeof(int) *num);
if (NULL == p)//分配内存是吧
{
return 0;
}
}
int i=0;
int flag = 0;
do
{
printf("一共可以输入%d个数值,请输入第 %d 值:", SIZE, i+1);
scanf("%d", &(*(p+i)));
flag = 0;
for (int j=0; j<i; ++j)
{
if (*(p+j) == *(p+i))
{
printf("您输入的值数组已经存在,请重新输入\n");
flag = 1;
break;
}
}
if (!flag)
{
++i;
}
} while (num > i);
return 1;
}简单的测试了一下下,可以实现楼主所说的功能。代码仅供参考! 还有么。。。 #include <STDIO.H>
#define N 10000
int NumArray;
int iCurNum = 0;
void printArray()
{
printf("当前数组:");
for (int i=0; i<iCurNum; ++i)
printf("%d ", NumArray);
printf("\n");
}
bool isExist(int * newValue)
{
for (int i=0; i<iCurNum; ++i)
if (((*(NumArray+i)) ^ (*newValue)) == 0)
return true;
return false;
}
void main()
{
int num;
while (scanf("%d", &num) != EOF)
{
if (! isExist(&num))
{
*(NumArray+iCurNum++) = num;
}
printArray();
}
}
页:
[1]