
{
int b[][4]={4,5,6,1,2,8,1,7,2,4,6,3,4,5,9};
for (int i = 0; i < 4; i++)
for (int j = i; j < 4; j++)
b[i][j] = 0;
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
printf("%d\t", b[i][j]);
printf("\n");
}
return 0;
}
以下包含第3题的4个小问题
将右上半三角元素的值全部置为0
for (int i = 0; i < 4; i++) {
for (int j = i; j < 4; j++) {
b[i][j] = 0;
}
}
右下半三角元素全部置 0
for (int i = 0; i < 4; i++) {
for (int j = 4-i-1; j < 4; j++) {
b[i][j] = 0;
}
}
左下半三角置 0
for (int i = 0; i < 4; i++) {
for (int j = 0; j < i+1; j++) {
b[i][j] = 0;
}
}
左上半三角置 0
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4-i; j++) {
b[i][j] = 0;
}
}
输出结果
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
cout << b[i][j] << " ";
}
cout << endl;
}
如果对你有所帮助的话,请给我一个采纳哦,谢谢啦
#include <iostream>
using namespace std;
int main() {
int b[4][4] = {{4, 5, 6, 1}, {2, 8, 1, 7}, {2, 4, 6, 3}, {4, 5, 9, 0}};
// 将右上半三角元素的值全部置成0
for (int i = 0; i < 4; i++) {
for (int j = i + 1; j < 4; j++) {
b[i][j] = 0;
}
}
// 输出结果以方阵形式
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
cout << b[i][j] << " ";
}
cout << endl;
}
return 0;
}
将给定的4x4数组中右上半三角元素全部设置为0并输出方阵形式。
思路: 观察到该数组值全部为小于10的整数,因此可以不考虑字符数组处理情况,直接建立二维数组处理。
由于需要将方阵右上半三角元素全部设置为0,因此根据方阵性质可知,这些元素的下标应满足i+j<4,同时根据左下上三角元素之和需为0的条件,除去对角线一共只有6个元素需要更改,分别为(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)。
因此直接遍历对应下标的元素修改即可。
代码实现如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[4][4]={},i,j;//二维数组初始化为0
a[0][1]=a[0][2]=a[0][3]=a[1][2]=a[1][3]=a[2][3]=0;//二维数组下标从0开始,直接遍历修改即可
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
cout<<a[i][j]<<" "; //逐个输出元素
}
cout<<endl;//一行输出完毕,换行输出下一行元素
}
return 0;
}
代码实现很简单,不过因为C++二维数组与一维数组不太一样导致输出时较为麻烦,需要逐行逐个处理输出。
修改元素时比较直接,直接一一遍历即可。
以下是代码的输出结果:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
因为题目比较简单,其他的参考资料在此不再赘述。