模拟题,代码很乱:
#include<stdio.h> #include<string.h> struct Choice{ int x; int y; int yes; }cho[2]; int main(){ int i,j,n,len; char str[90],rst[100][100]; int row,col; scanf("%s",str); len=strlen(str); cho[0].x=len/3; cho[0].y=len-2*cho[0].x+2; if(cho[0].x<=cho[0].y) cho[0].yes=1; cho[1].x=len/3+1; cho[1].y=len-2*cho[1].x+2; if(cho[1].x<=cho[1].y) cho[1].yes=1; if(cho[0].yes==1&&cho[1].yes==1){ if((cho[1].y-cho[1].x)<(cho[0].y-cho[0].x)){ row=cho[1].x; col=cho[1].y; } else{ row=cho[0].x; col=cho[0].y; } } else if(cho[0].yes==1){ row=cho[0].x; col=cho[0].y; } else if(cho[1].yes==1){ row=cho[0].x; col=cho[0].y; } int cnt=0; for(i=0;i<row;i++){ for(j=0;j<col;j++){ rst[i][j]=' '; } } for(i=0;i<row;i++){ rst[i][0]=str[cnt]; cnt++; } for(i=1;i<col;i++){ rst[row-1][i]=str[cnt]; cnt++; } for(i=row-2;i>=0;i--){ rst[i][col-1]=str[cnt]; cnt++; } for(i=0;i<row;i++){ for(j=0;j<col;j++){ printf("%c",rst[i][j]); } printf("\n"); } return 0; }