当前位置 : 主页 > 编程语言 > java >

【面试】奇安信2020测试开发秋招

来源:互联网 收集:自由互联 发布时间:2022-06-30
逆序打印字符串 可用双指针 倒三角打印自然数1到n void daosanjiao ( int n ) { int max = n , temp ; int row = 0 ; //计算数字的行数 int temp2 = 1 ; //暂存当前的和 int m = 1 ; //每次遍历,数字加1 while (
  • 逆序打印字符串
    可用双指针
  • 倒三角打印自然数1到n
  • void daosanjiao(int n) {
    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​​


    网友评论