中易网

把数组最大值放最后,最小值放最前面,指针错误求调试。

答案:2  悬赏:30  
解决时间 2021-10-13 10:57
  • 提问者网友:蓝莓格格巫
  • 2021-10-12 23:32
#include
#include
#define N 5
int main()
{
int *p_max,*p_min;
int num[N],max,count,maxnum,min,minnum;
for(count=0;count{
printf("Please enter the %dth number:",count+1);
scanf("%d",&num[count]);
}
////////////////////////////////////////
max=num[0];
for(count=0;count {
if(num[count]>max)
{
max=num[count];
maxnum=count;
}
}
printf("\nThe max number is %d and its count is %d.",max,maxnum);
/////////////////////////////////////////
min=num[0];
for(count=0;count{
if(num[count] {
min=num[count];
minnum=count;
}
}
printf("\nThe min number is %d and its count is %d.",min,minnum);
/////////////////////////////////////////////
*p_max=num[maxnum];
num[maxnum]=num[N-1];
num[N-1]=*p_max;

*p_min=num[minnum];
num[minnum]=num[0];
num[0]=*p_min;

for(count=0;count{
printf("\nThe answer is %d:",num[count]);
}

system("pause");

return 0;
}

如果把*p_min *p_max的*去掉,就是不用指针,程序可以运行。
但是我指针用错了么?编译可通过,但是运行后程序崩溃出现程序停止响应,用VS2010调试说什么指针没初始化,怎么初始化啊?

我刚看了一本老外的21天学通C,感觉很不错,但是书还了,现在随便拿了一本教材在做课后题,感觉有时候有思路,但是写的代码错误一大堆。。好无助,我每天坚持做课后题靠谱么?

只有这么点分了,问题也不难吧。。求指导。。
最佳答案
  • 二级知识专家网友:逐風
  • 2019-01-26 15:16
int *p_max,*p_min;



c语言中指针要分配存储空间才能使用的:要么指向其它空间,要么直接malloc分配一个空间,你的程序中,指针尚未分配存储空间就直接使用:
*p_max=num[maxnum];



当然运行异常了。


可改为先分配空间:p_max = (int*)malloc(sizeof(int));
然后再使用就没问题了:
p_max = (int*)malloc(sizeof(int));
*p_max=num[maxnum];
num[maxnum]=num[N-1];
num[N-1]=*p_max;
全部回答
  • 1楼网友:荒野風
  • 2020-02-27 15:36
#include//这里你忘了#; int max,min; void max_min_value(int *array,int n) {int *p,*array_end; array_end=array+n; max=min=*array; for(p=array+1;pmax)max=*p; else if (*p
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息