这题一开始思路是对的,就是先用简单的例子,来勾画程序整体的结构。

可以视为三个单元:开头,中间,结尾,存在的问题有:

1.没有审题,今后要关注输入格式,到了最后发现正方形边界的字符要任意  //所有字符的替换可以用一个可输入的变量代替

2.妄图只用一个变量分别代替行数和列数,这里面就牵扯到了数学的等式变换,要手写就很麻烦,多加点变量描述不花钱  //这题的行数为列数的一半,参考答案中间单元不是要减2吗

 

#include<cstdio>
int main(){
int m,n,c; //行的字符数n,即列数
scanf("%d %c",&n,&c); //将全局的定量I用变量c代替
if(n%2==0) m=n/2;
else m=n/2+1;

 

for(int i=0;i<n;i++) { //开头
printf("%c",c);
}
printf("\n");
for(int i=0;i<m-2;i++){
printf("%c",c);
for(int i=0;i<n-2;i++){
printf(" ");
}
printf("%c\n",c);
}

 

for(int i=0;i<n;i++) { //结尾
printf("%c",c);
}
return 0;

/* printf("IIIIII\n"); //开头结尾另起一行做输出
printf("I I\n"); //中间可以循环输出
printf("I I\n");
printf("IIIIII\n"); //输出 字符的个数 与 循环的行数相关
*/
}

 

posted on 2022-03-04 16:59  Niu的呀  阅读(115)  评论(0)    收藏  举报