C/C++ 杨辉三角金字塔(看看哪里出错了)

编写一个程序,输入nn(10>n>1),然后输入一个n行n列的矩阵,判断该矩阵是否对称矩阵(输出是或否)。
(对称矩阵(Symmetric Matrices)是指以主对角线为对称轴,各元素对应相等的矩阵)
【注意】输入n+1行,输出1行;运行效果应如下所示(输入数据间用半角空格分隔,第5行为输出),格式错误算结果错误。
3
3 3 3
3 1 2
3 2 3

#include <stdio.h>
int main()
{
int n;
int a[10][10];
scanf("%d", &n);
for(int i = 0;i < n;i++)
{
a[i][0] = a[i][i] = 1;
}
for(int i = 2;i < n;i++)
{
for(int j = 0;j < i;j++)
{
a[i][j] = a[i-1][j-1] + a[i-1][j];
}
}
for(int i = 0;i < n;i++)
{
for(int j = 0;j < i + 1;j++)
{
printf("%d", a[i][j]);
}
printf("\n");
}
return 0;
}

杨辉三角金字塔形:
个人之前写过这个,跟题主实现思路也挺像的,以下可供题主参考:

//编程及注释:Code_流苏
//定义头文件
#include<stdio.h>
#include<stdlib.h>
//主函数
int main()
{
    //定义三个整型变量i,j,k用于循环实现 
    int i, j, k;
    int a[11][11]; //定义二维数组a[11][11]
    printf("10行杨辉三角如下:\n");
    //杨辉三角 实现 规律①(见概念说明)
    for(i=1;i<=10;i++){
      //两边的数令它为1,因为现在循环从1开始,就认为a[i][1]为第一个数
        a[i][1] = a[i][i] = 1;  
    }
    //杨辉三角 实现 规律②(见概念说明)
    for(i=3;i<=10;i++){
         for(j=2;j<=i-1;j++){
         //除两边的数外都等于上两顶数之和
                a[i][j]=a[i-1][j-1]+a[i-1][j];  
        }
    }
    //界面美化 以及 打印输出        
    for(i=1;i<=10;i++){
        for(k=1;k<=10-i;k++){
            //这一行主要是在输出数之前打上空格占位,让输出的数更美观
            printf("   ");  
        }
        //j<=i的原因是不输出其它的数,只输出我们想要的数
        for(j=1;j<=i;j++){
            printf("%6d",a[i][j]);
        }  
        //当一行输出完以后换行继续下一行的输出
        printf("\n");  
    }
    //整体执行结束后,输出换行,保持整体界面
    printf("\n");
    //返回0,代表程序执行结束
    return 0;
}


测试图:

img


如果想改成输入的,将10换成n相关的,输入n就可以了。

希望对题主有所帮助,可以的话,帮忙点个采纳!

你这代码和题目没啥关系呀


#include <iostream>
#include <iomanip>
using namespace std;
int* YangHuiData(int n); 
void YangHuiShow(int *pData, int n);
int main() {
    int n;
    cin >> n;
    int *pData = YangHuiData(n);
    YangHuiShow(pData, n);
}
 
int* YangHuiData(int n) {
    int *a = new int[n*n]; 

    
    int i, j;
    for (i = 0; i<n*n; i++) {
        a[i] = 0;                
    }
 
    a[0] = 1;
    a[n] = 1;
    a[n + 1] = 1;
 
    for (i = 2; i<n; i++) {
        a[i*n] = 1;
        a[i*n + i] = 1;
        for (j = 1; j<i; j++) {
            a[i*n + j] = a[(i - 1)*n + j - 1] + a[(i - 1)*n + j]; 
        }
    }
 
    return a;
}
void YangHuiShow(int *a, int n) {
    //根据数据a指向的二维数组在屏幕上打印 
    //杨辉三角形,每行前面填充合适的空格 
    //以显示成等腰三角形,左右对称 
    int i, j;
    for (i = 0; i<n; i++)
    {
        for (j = 0; j<n - i - 1; j++)
            cout << setw(3) << " ";//前导空格,为单个数据的一半宽度  
        for (j = 0; j <= i; j++)
            cout << setw(6) << a[i*n + j];
        cout << endl;
    }
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632