思路:
最后一行之前的每一行头尾输入序号为“行序号”和“长度-行序号”的元素,其余位置输入空格。最后一行输入从序号为“行序号”到“长度-行序号”的元素。
解答:
#include <cstdio>
#include <cstring>
using namespace std;
/*
helloworld!
*/
int main() {
char input[100];
while(scanf("%s", input) != EOF) {
int len = strlen(input);
int side = (len+2)/3;
int mid = len-side*2;
int width = mid+2;
for(int i=0; i<=side-1; i++) {
//如果在最后一行之前
if(i<side-1) {
for(int j=0; j<=width-1; j++) {
if(j==0)
printf("%c", input[i]);
else if(j==width-1)
printf("%c", input[len-i-1]);
else
printf(" ");
}
}
//如果在最后一行
else {
for(int k=i; k<=len-i-1; k++) {
printf("%c", input[k]);
}
}
//每行末尾换行
printf("\n");
}
}
return 0;
}
坑:
- 存放输入字符串的字符数组要够大,否则可能出现“运行错误83”
本文介绍了一种使用C语言实现的特殊矩阵打印算法,该算法能够根据输入的字符串生成特定形式的矩阵输出。通过理解算法思路,读者可以掌握如何利用C语言的数组和循环结构来完成复杂的字符串操作。
388

被折叠的 条评论
为什么被折叠?



