您的位置:首页 > 其它

矩阵多维数组笔试题

2015-09-26 23:57 330 查看
1、请用C/C++实现matrix_sum函数,要求如下:

计算N*N矩阵对角线元素之和;

N*N矩阵定义为int类型的二维数组;

N>1,矩阵中的元素是随机的值。

#include <stdio.h>
#include <stdlib.h>

int matrix_sum( int matrix[10][10],int row )
{
int i,j;
int sum = 0;

printf("矩阵matrix:\n");
for(i=0; i<row; ++i)
{
for(j=0; j<row; ++j)
{
matrix[i][j] = rand();
printf("%d\t",matrix[i][j]);
}
printf("\n");
}

for(i=0; i<row; ++i)
{
for(j=0; j<row; ++j)
{
if(i == j)
{
sum += matrix[i][j];
}
}
}
return sum;
}
int main()
{
int a[10][10];
int sum = matrix_sum( a, 10);
printf("\n矩阵对角线元素为:%d\n",sum);
return 0;
}


2、请用C/C++编写一个程序完成以下功能:

如下图所示,设每个小格子都是边长为1的正方形。

R为M*N个小格子组成的矩形。

打印出如图中R对角线经过的格子的坐标,M和N的值为大于1的随机整数。



思路:



代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void Print(int M, int N)
{
double rate = (double)M/(double)N;//利用相似三角形
float first = 0;
float end = rate; //用来判断M和N是否相等
int Fir;
int End;
int i,j;

for(i=0; i<N; ++i)
{
if(end == (int)end)
{
End = end;
}
else
{
End = end + 1;
}

Fir = first;

for(j=Fir; j<End; ++j)
{
printf("  (%d,%d)",i+1,j+1);
}
printf("\n");

first = end;
end = first + rate;
}
}
int main()
{
int start = 1;
int end = 10;

srand(time(0));

int M = rand()%(end-start)+start;
int N = rand()%(end-start)+start;

printf("%d*%d 矩阵对角线所经过的格子为:\n",M,N);
Print(M,N);
printf("\12");

M=9;N=5;
printf("%d*%d 矩阵对角线所经过的格子为:\n",M,N);
Print(M,N);
printf("\12");

M=5;N=5;
printf("%d*%d 矩阵对角线所经过的格子为:\n",M,N);
Print(M,N);
printf("\12");

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: