c编程高手请进:看个极原始的程序。
答案:3 悬赏:50
解决时间 2021-12-30 23:42
- 提问者网友:逝爱
- 2021-12-30 02:02
max_of_num(int *p,int num)
{
int i,k=0;
int temp=*p;//p为一维int数组的一级指针
for(i=0;i<num;i++)
{
if(temp<*(p+i))
{temp=*(p+i);
k=i;//我的问题所在
}
}
return k;
}
问题是:如果把k换成i或者是(i-1),结果错误,把i换成i-num;结果有时正确,有时错误。为什么?
#include"stdio.h"
void array_output(int(*p)[3],int index);
int *min_of_array(int *p,int num);
void same();
void main()
{
int b[2][3]={{1,2,3},{4,5,6}};
array_output(b,0);
array_output(b,1);
same();
}
void array_output(int(*p)[3],int index)
{
int i=0;
printf("数组b的第%d行的元素值为:",index+1);//初次编译有5个莫名错误,原因是",index+1的“,”为半角格式,错了!
for(i=0;i<3;i++)
printf("%d ",*(*(p+index)+i));
printf("\n");
}
void same()
{
int b[6]={12,41,23,65,85,32};
int *p=min_of_array(b,6);
printf("数组b中的元素最小值为:%d",*p);
}
int * min_of_array(int *p,int num)
{
int j,k=0;
int temp=*p;
for(j=0;j<num;j++)
if(temp>*(p+j))
{
temp=*(p+j);
k=j;
}
return p+k;//return p+k,返回的值为12,是对的。改为return p+j;则返回1245056,错了,但是改为return p+j-6;为什么?
}
最佳答案
- 二级知识专家网友:偏爱自由
- 2021-12-30 03:10
你的程序没错
max_of_num(int *p,int num)
{
int i,k=0;
int temp=*p;
for(i=0;i<num;i++)
{
if(temp<*(p+i))
{
temp=*(p+i);
k=i;
}
}
return *(p+k);//你原先是返回下标
}
max_of_num(int *p,int num)
{
int i,k=0;
int temp=*p;
for(i=0;i<num;i++)
{
if(temp<*(p+i))
{
temp=*(p+i);
k=i;
}
}
return *(p+k);//你原先是返回下标
}
全部回答
- 1楼网友:狙击你的心
- 2021-12-30 05:42
请记住, 你这个函数返回的结果是数组下标
所以,如果你把i变成i-1,结果肯定是不对的
本来最大值是数组的第i个,你偏要返回是第i-1个, 能对吗
至于i-num就更荒谬了,i-num应该是负值(i<=num)
不管结果正确还是错误,都是没有意义的
- 2楼网友:心与口不同
- 2021-12-30 04:35
呵呵你是做毕业论文啊。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |