题目描述
将二维数组的对对角线元素设置为1,但函数的参数是以一维数组的形式给出。
函数定义接口:
void setone(int n,int* p);
请实现该函数,使得下述程序可以正确运行。
裁判测试程序样例:
#include<iostream>
using namespace std;
#define N 10 void setone(int n,int* p);
int main() {
int a;
int m[N][N];
cin>>a;
for(int i=0;i<a;++i){
for(int j=0;j<a;j++){
cin>>m[i][j];
}
}
setone(a,&m[0][0]);
for(int i=0;i<a;++i)
{
for(int j=0;j<a;j++)
{
cout<<m[i][j]<<' ';
}
cout<<endl;
}
return 0;
} //将答案写在这里
输入格式
第一行给出一个整数n,3<n<10
接下来给出n行,每行n个数据,空格分隔
输出格式
将对角线上的元素置位1,其他数位保持不变,输出结果为n行n列,数据直接用一个空格分隔。
样例 #1
样例输入 #1
5
0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
样例输出 #1
1 1 2 3 4
5 1 7 8 9
10 11 1 13 14
15 16 17 1 19
20 21 22 23 1
提示
物理上每行元素的个数和逻辑上每行有效元素的个数是不相同的
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
void setone(int n, int* p) {
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (i == j) {
*(p + i * N + j) = 1;
}
}
}
}