辐射4传奇武器收集:请教一个C++编程问题,如何改写这个程序?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 02:12:20
源程序如下:
#include<iostream>
using namespace std; //使用标准命名空间std
class MATRIX
{
int m; //二维数组的行数和列数相等,即二维数组是M行M列
int sum; //存放非对角元素之和
int a[40][40]; //用于存放二维数组
public:
MATRIX(int x[][40],int k) //构造函数,用K初始化数据成员m,用数组x初始化数组a
{
m=k;
for(int i=0;i<k;i++)
for(int j=0;j<k;j++)
a[i][j]=x[i][j];
sum=0;
}
void process(); //完成求和
void show() //按二维方式输出数组.并输出求和结果
{
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
cout<<a[i][j]<<'\t';
cout<<endl;
}
cout<<"sum="<<sum<<endl;
}
};
void MATRIX::process()
{
int i,j;
for(int i=0;i<m;i++)
for(int j=0;j<m;j++)
{
if((i==j)||(i=j==m-1)) //若元素在对角线上 不计入累加和
continue;
sum+=a[i][j];
}
}
int main()
{
int b[40][40]={{1,1,1,1},{1,2,2,1},{1,2,2,1},{1,1,1,1}};
MATRIX mtx(b,4);
mtx.process();
mtx.show();
return 0;
}
将以上二维数组为数据结构的程序实现改写为以单向链表结构来表示二维数组,可定义数据结构体 如下:
struct LinkNode
{
int Row;
int Column;
int Data;
LinkNode *Next;
};
用此单向链表结构来表示二维数组,不限二维数组大小
要求:
求出任意二维数组的主对角线的数据之和.求出任意二维数组(行数和列数必须相等)的非对角线元素的和
将输出的任意二维数组顺时针旋转90度输出

望热心的您给予讲解 谢谢了! 非常感谢!!
(由于刚加入"知道",积分太少,希望您别介意)

回答:iloveoriole
新手
4月21日 20:31 #include<iostream>
using namespace std;

//整数n的因子5的个数
int numof5(int n)
{
int num=0;
while(n%5==0)
{
num++;
n=n/5;
}
return num;
}

int main()
{
int n,i,k=0;
cin>>n;

//因子5的总数即为0的个数
for(i=5;i<=n;i+=5)
k+=numof5(i);

cout<<k<<endl;

return 0;
}