用指针求最大值和次大值

来源:百度知道 编辑:UC知道 时间:2024/05/31 05:55:21
程序最后输出的结果是max1=100,max2=0;不知道是哪里出了问题!我是初学者啊,很多c语言的细节都是模糊的!哪位高手能帮忙在我写的程序的基础上改一改啊,谢谢了!
#include <stdio.h>
main()
{
int c,i,j;
int max;
int a[100];
int *pmax1,*pmax2;
FILE *fp;

fp=fopen("D:\\abc.txt" ,"w");
if(fp!=NULL)
{
for (i=0;i<=100;i++)
fprintf(fp,"%d\t",i);
}
fclose(fp);

fp=fopen("D:\\abc.txt" ,"r");
for(j=0;j<=100;j++) //从文件中读出数字,并用数组a[j]表示
{
fscanf(fp,"%d",&a[j]);
if(feof(fp))
break;
}

pmax1=pmax2=&a[0]; //用指针来找出最大值和次大值
for (j=1;j<=100;j++)
{
if(a[j]>*pmax1)
{
*pmax1==*pmax2;
pmax1=&a[j];

}
else if(a[j]>*pmax2)
*pmax2=a[j];
}

pmax1=pmax2=&a[0];

这里两个指针指向了同一地址,那么不论哪个改变了此地址的值,另一个的值也变了。
正常运行的话这两值应是一样。

用指针来找出最大值和次大值 那部分
*pmax1==*pmax2;
这里应该是赋值吧?你这个写的是等号啊。

乱了,算法有问题!指针用乱了!自己改改吧!改对了就熟悉指针了!不难!