源代码是哪出问题了wwwww

#include <stdio.h>
int main ()
{
int i;
for (i=1;i<=16;i++)
{
if(i<=9)
{
printf("0%d",i);
}else{
printf("%d",i);
}
if(i%4==0)
{
printf(" \n");
}
}
printf(" \n");
int j;
int k;
for (i=1;i<=4;i++)
{
for(j=1;j<=4-i;j++)
{
printf(" ");
}
for(k=1;k<=i*(i+1)/2;k++)
{
if(k<10)
{
printf("0%d",k);
}else{
printf("%d",k);
}
if (k=i*(i+1)/2)
{
printf(" \n");
}
}
}
return 0;
}

img

题主的代码修改如下,修改处见注释,供参考:

#include <stdio.h>
int main ()
{
    int i,j,k,n;
    scanf("%d",&n);//依题目要求,由键盘输入  n  的值 
    for (i=0,k=0;i<n;i++)// i 控制行数
    {
        for(j=0;j<n;j++)// j 控制列数
        {
            printf("%02d",++k);// 打印输出,格式控制符就可以实现一位数时前面加 0
            //if(i<=9)
            //{
            //   printf("0%d",i);
            //}else{
            //   printf("%d",i);
            //}
        }
            // if(k%n==0)//这里 j 循环结束,就输出一个换行符
            //{
        printf(" \n");
            //}
    }//以上完成矩形的打印输出

    printf(" \n");
            //int j;
            //int k;
    for(i=1,k=0;i<=n;i++)// i 控制行数
    {
        for(j=1;j<=n;j++)// j 控制列数
        {
             if(j <= n-i)
                printf("  ");
             else
                printf("%02d",++k);
        }
        //for(k=1;k<=i*(i+1)/2;k++)
        //{
             //if(k<10)
             //{
             //    printf("0%d",k);
             //}else{
             //    printf("%d",k);
             //}
             //if (k=i*(i+1)/2)
             //{
        printf("\n");
             //}
             //}
    }

    return 0;
}

以下提供精简的代码,供参考:

#include <stdio.h>
int main ()
{
    int i,j,k,n;
    scanf("%d",&n);

    for (i=0,k=0;i<n;i++)//打印矩形
        for(j=0;j<n;j++)
            printf(k%n==0?"%02d\n":"%02d",++k);

    printf(" \n");

    for (i=n-1,k=1;i>=0;i--,printf("\n"))//打印三角形
         for(j=0;j<n;j++)
            printf(j>=i?(++k,"%02d"):"  ",k);
 
    return 0;
}