这题一开始思路是对的,就是先用简单的例子,来勾画程序整体的结构。
可以视为三个单元:开头,中间,结尾,存在的问题有:
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"); //输出 字符的个数 与 循环的行数相关
*/
}
浙公网安备 33010602011771号