题解 | #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;
}

全部评论

相关推荐

工科女的日常:真诚建议:别再用这种花哨的模板,可以看看我发的那个零经验找实习发帖子
点赞 评论 收藏
分享
03-20 18:39
已编辑
电子科技大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务