题目描述
给出n,请输出一个直角边长度是n的数字直角三角形。所有数字都是2位组成的,如果没有2位则加上前导0。
输入格式
输入一个正整数n。
输出格式
输出如题目要求的数字直角三角形。
法一:双重循环实现
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,t=1; //n实际上就是行数,t为数字,等下需递增
cin>>n; //输入行数
for(int i=1;i<=n;i++){ //i控制的是1-n行
for(int j=1;j<=n-i+1;j++){ //j控制的是第i行有j个数
printf("%02d",t); //右边对齐,不足两位前面用0补
t++; //t递增
}
cout<<endl; //每弄完一行数字后需换行
}
}
法二:一层循环实现
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,t,cnt=0;
cin>>n;
t=n;
for(int i=1;i<=n*(n+1)/2;i++){ //发现总共是n*(n+1)/2个数
printf("%02d",i);
cnt=cnt+1; //cnt记录从第i个数开始,目前是第几个数
if(cnt==t){ //如果第t行是cnt个数的时候
cout<<"\n";
t=t-1; //然后要处理t-1行
cnt=0; //把cnt重新归0
}
}
}