求C语言高手

来源:百度知道 编辑:UC知道 时间:2024/05/22 19:36:47
#include <stdio.h>
#include <stdlib.h>
main()
{
int n,*p,*q,i,j,k,c,t=0,c1;
scanf("%d",&n);
p=(int *)malloc(n*sizeof(int));
q=(int *)malloc(n*sizeof(int));
if(p==NULL)
{
printf("There is not enough memory.\n");
return -1;
}
for(i=0;i<n;i++) scanf("%d",&p[i]);
for(i=0,c=0;i<n;i++)
{
for(j=0;j<n;j++)
if(p[i]==p[j]) c++;
if(c==2) q[t++]=p[i];
}
for(k=0;k<t;k++)
{
c1=0;
for(j=0;j<n;j++)
if(q[k]==q[j]) c1++;
if(c1==1) printf("%d\t",q[k]);
}
free(p);
free(q);
printf("\n");
}为什么运行没结果~~~~

有两个错误

一个是在C中如果没有写明函数类型,就默认为返回int值,所以上面一段代码要加返回值return 0;

第二个错误是
for(j=0;j<n;j++)
if(p[i]==p[j]) c++;
if(c==2) q[t++]=p[i];
上面的语句是你是不是应该把第二和第三个语句加入for语句的大括号中去呢?
相同的还有
for(j=0;j<n;j++)
if(q[k]==q[j]) c1++;
if(c1==1) printf("%d\t",q[k]);

祝君好运。