问题:输入一个整数n(0<n<10),显示n行如下规律图形。
例如输入3 ,显示
例如输入5,显示
解题思路:
利用两层循环,处理好输出空格和输出数字的关系,不难看出,第一行只输出一个数1,以此类推,第N行输出N(N<10)个数,利用数学规律可以得出,第N行输出(1+N-1)(N-1)/2+1到(1+N-1)(N-1)/2+N,例如第五行输出:11 12 13 14 15。
接下来就需要按行输出时处理好空格和数字之间的关系来使其符合要求,下面代码中采用了判断是不是两位数来控制空格的输出,从而使的显示结果符合要求。
解决代码:
#include<stdio.h>
int main(){
int n;
printf("请输入正整数(0~10):");
scanf("%d",&n);
int num=1;
for(int i=1;i<=n;i++){ //输出n行:1--n
for(int j=1;j<=n-i;j++){ //先输出空格
printf(" "); //三个空格为一单元
}
for(int j=n-i+1;j<=n;j++){ //再输出数字
if(num>=10)
printf(" %d",num++);//一空格加一个两位数
else
printf(" %d",num++);//俩空格加一个一位数
}
printf("\n");
}
}
运算结果: