逆序打印字符串 可用双指针 倒三角打印自然数1到n void daosanjiao ( int n ) { int max = n , temp ; int row = 0 ; //计算数字的行数 int temp2 = 1 ; //暂存当前的和 int m = 1 ; //每次遍历,数字加1 while (
可用双指针
int max = n, temp;
int row=0; //计算数字的行数
int temp2 = 1; //暂存当前的和
int m = 1; //每次遍历,数字加1
while (temp2 <= n) {
temp2 += m;
m += 1;
row += 1;
}
//printf("hangshu == %d", row);
int i, j; //i控制行,j控制列,k控制没行前的空格
for (i = 0; i<row; i++) {
max = max - (row - i); //计算下一行的最大数字
temp = max + 1; //计算当前行的开始数字
//for (k = 0; k<i; k++) { //控制倒三角每行前的空格
// printf(" ");
//}
for (j = 0; j<row - i; j++) {
printf("%d ", temp); //打印数字
if (temp<10) { //保持一位数与两位数的长度一致,用空格填充
printf(" ");
}
temp++;
}
printf("\n");
}
}
我面试想法是用一个列表存放每一行数字的个数,如 [1,2,3,4,5,6,7],然后用了循环遍历,判断对应的索引的值是不是0,不是0就拼接数字,同时减一,如果是0,就直接打印。
参考链接
https://jingyan.baidu.com/article/f3e34a12458a77b5eb6535da.html