C++问题,在线等。。。用指针对二维数组进行排序,打出来的全是负的,而且都一样的数

//point.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"#include<iostream>usingnamespacestd;int... // point.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int a[5][5],c[25];
int *b[25];
int i,j,m,n=0,x;
b[0] = &a[0][0];
for (m = 0;m<25;m++)
{
c[m] = rand()%99;
}
for (j = 0;j<24;j++)
{
for (i = 0;i<24-m;i++)
{
if (c[i]>c[i+1])
{
x = c[i];
c[i] = c[i+1];
c[i+1] = x;
}
}
}
cout<<"二维数组排序为:"<<endl;
for (j = 0;j<5;j++)
{
for (i = 0;i<5;i++)
{
cout<<a[i][j]<<' ';
}
cout<<'\n';
}
return 0;
}
我的问题是如何用指针的方法排序!!!能给个准确的吗
展开
 我来答
百度网友b79519e
2011-05-02 · TA获得超过3399个赞
知道大有可为答主
回答量:1417
采纳率:100%
帮助的人:1338万
展开全部
// point.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int a[5][5],c[25];
int *b[25];
int i,j,m,n=0,x;
b[0] = &a[0][0];
for (m = 0;m<25;m++)
{
c[m] = rand()%99;
}
for (j = 0;j<24;j++)
{
for (i = 0;i<24-m;i++)//应该是i<24-j;
{
if (c[i]>c[i+1])
{
x = c[i];
c[i] = c[i+1];
c[i+1] = x;
}
}//你的代码中多一个}
/*for (i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=c[5*i+j];*/
//上述三行代码用来初始化a数组,只需去掉注释符就可以用了..
cout<<"二维数组排序为:"<<endl;
for (j = 0;j<5;j++)
{
for (i = 0;i<5;i++)
{
cout<<a[i][j]<<' ';
}
cout<<'\n';
}
return 0;
}
错误已经写在后面的注释里,其他错误暂时没发现...
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhengqwert
2011-05-01 · 超过14用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:41万
展开全部
// point.cpp : 定义控制台应用程序的入口点。
//

//#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;

int main(int argc, char* argv[])
{
int a[5][5],c[25];
int *b[25];
int i,j,m,n=0,x;
b[0] = &a[0][0];

srand( time(NULL) );//以当前时间为随机seed
for (m = 0;m<25;m++)
{
srand(c[m-1]);//以前一个随机数为随机seed
c[m] = rand()%99;
}

for (j=0;j<25;j++)
{
cout<<c[j]<<" ";
}
for (j = 0;j<24;j++)
{
for (i = 0;i<24-j;i++) //冒泡排序 此处为m改成j
{
if (c[i]>c[i+1])
{
x = c[i];
c[i] = c[i+1];
c[i+1] = x;
}
}
}
cout<<"二维数组排序为:"<<endl;
// for (j = 0;j<5;j++) //二维数据没赋值,没必要输出
// {
// for (i = 0;i<5;i++)
// {
// cout<<a[i][j]<<' ';
// }
// cout<<'\n';
// }
for (j=0;j<25;j++)
{
cout<<c[j]<<" ";
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-05-04
展开全部
懒得用数组指针了,就随便写了个

/*
编程实现3x5矩阵与5x3矩阵的乘积,用二维数组并用数组指针
*/
#include<iostream>
using namespace std;
int main()
{
int a[3][5],b[5][3],c[3][3];
int i,j,k;

for(i=0;i<3;i++)
for(j=0;j<5;j++)
cin>>a[i][j];

for(i=0;i<5;i++)
for(j=0;j<3;j++)
cin>>b[i][j];

for(i=0;i<3;i++)
for(j=0;j<3;j++)
c[i][j]=0;

for(i=0;i<3;i++)
for(k=0;k<3;k++)
for(j=0;j<5;j++)
c[i][k]+=a[i][j]*b[j][k];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<c[i][j]<<" ";
cout<<endl;
}
return 0;
}

运行结果:

1 2 3 4 5
2 4 5 6 3
4 5 7 8 9
1 2 3
4 5 6
7 8 9
4 7 3
5 2 4
71 74 74
92 112 105
150 163 165
Press any key to continue
另外,站长团上有产品团购,便宜有保证
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
breakaleg2011
2011-05-01
知道答主
回答量:21
采纳率:0%
帮助的人:6.2万
展开全部
显然是你的伪随机数出错,你这样调用rand()产生的随机数是不变的。原因是你的seed 一定是1. 所以你需要先用srand(seed) 初始化。一般用系统时间做seed。

#include time.h
srand(time(NULL));
然后再用rand()%6
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仆瀚彭4S
2011-05-01 · TA获得超过109个赞
知道答主
回答量:79
采纳率:0%
帮助的人:64.4万
展开全部
for (j = 0;j<24;j++)
{
for (i = 0;i<24-m;i++)//这个地方改为i<24-j,排序问题
{
if (c[i]>c[i+1])
{
x = c[i];
c[i] = c[i+1];
c[i+1] = x;
}
}
另外,*b[25]这个指针数组没有作用
更多追问追答
追问
为什么没有用,能讲解一下吗
追答
你定义之后,后面根本就没用到它,可以删掉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式