为什么输出的不是正常数值
来源:2-14 编程练习
Wzmxa
2018-02-18 00:33:09
#include<iostream>
using namespace std;
int max(int (*p)[4],int len)
{
int i,j,s=0;
for(i=0;i<len;i++,p++)
{
for(j=0;j<4;j++)
{
*(*p+j)>*(*p+j+1)?*(*p+j):*(*p+j+1);//这里的问题出在哪
}
}
s=*(*p+j);
return s;
}
int main()
{
int num[3][4]={4,5,2,6,12,7,5,0,3,1,3,4};
cout<<max(num,3)<<endl;
return 0;
}
2回答
好帮手慕查理
2018-02-18
您好,逻辑错误,for循环中应该是判断是否是大的数值,是的话赋值给一个中间变量,如果不是,则在循环,直到判断完数组,返回变量值。你的程序只是进行了判断,但是并未对值进行任何操作,只是在 最后给了s变量一个值而已,因此返回的s就是你给的值。如果解决了您的问题,请采纳,祝学习愉快!
KistPlus
2018-04-01
#include<iostream> using namespace std; int Max(int (*p)[4],int len) { int i; int j; int line[3]; for(i=0;i<len;i++) { for(j=0;j<3;j++) { if(p[i][j]>p[i][j+1]) //遍历出每个行指针中最大值 { int temp; temp=p[i][j]; p[i][j]=p[i][j+1]; p[i][j+1]=temp; } } line[i]=p[i][j]; //存储每个行指针的最大值 } for(int k=0;k<2;k++) //再把所有行指针的最大值进行比较,返回最大值 { if(line[k]>line[k+1]) { int temp; temp=line[k]; line[k]=line[k+1]; line[k+1]=temp; } } return line[2]; } int main() { int num[3][4]={4,5,7,2,12,7,34,1,3,1,3,6}; cout<<Max(num,3)<<endl; return 0; } /*这道题用列指针循环11次比较更为便利,不过题目要求用行指针*/
相似问题