题解 | #Hello World for U#
Hello World for U
https://www.nowcoder.com/practice/c6e414fddd7c401887c350c9cc41f01b
#include <stdio.h> int get_length(char s[]) { int i = 0; while (s[i++]); return i - 1; } int main() { char s[80] = {}; while (scanf("%s", s) != EOF) { int length = get_length(s), row = 0, speace; // 计算行数与每行的空格数,字符串每行进行一次掐头去尾(失去首尾两个字符),当行数大于等于剩余字符数量时,row与length分别是行数和非最后一行的空格数量。 while (1) { row++; length -= 2; if (row >= length) break; } speace = length, length = get_length(s); // 为length重新赋值 for (int i = 0; i < row; i++) { if (i < row - 1) { // 非最后一行 printf("%c", s[i]); // 打该行首字符 for (int j = 0; j < speace; j++) // 打空格 printf(" "); printf("%c\n", s[length - i - 1]); // 打该行尾字符 } else { // 最后一行,将中间剩下的字符顺序输出 for (int k = i; k < length - i; k++) printf("%c", s[k]); } } printf("\n"); } return 0; }