编程记录
最近参加的一个集训版上课突然出题:让我们在时间内用C语言打印图形,分别是:矩形,空心矩形,等要三角形,菱形,“回”字。我在编写“回”字的时候花了一段时间,因为不想一排一排地打印,想通过if和for一段一段打印出来这样感觉很高级,所以写了一大段
int main(){
for(int i=0;i<10;i++){
if(i == 0 | i ==9){
for(int j=0;j<10;j++){
printf("*");
}
printf("\n");
}else{
if(i == 2 | i == 7){
printf("* ");
for(int k=0;k<6;k++){
printf("*");
}
printf(" *\n");
}
if(i == 1| i == 8){
printf("* ");
for(int k=0;k<6;k++){
printf(" ");
}
printf(" *\n");
}
if(i!=1&&i!=2&&i!=7&&i!=8){
printf("* *");
for(int k=0;k<4;k++){
printf(" ");
}
printf("* *\n");
}
}
}
return 0;
}
肉眼可见的可读性非常差,改进了之后:
//打印n个*
void pNs(int n){
for(int i=0;i<n;i++){
printf("*");
}
}
//打印m个空格
void pNb(int n){
for(int i=0;i<n;i++){
printf(" ");
}
}
//打印* *
void psbs(){
printf("* *");
}
//换行
void pn(){
printf("\n");
}
int main(){
pNs(8);pn();
pNs(1);pNb(6);pNs(1);pn();
psbs();pNs(2);psbs();pn();
for(int i=0;i<2;i++){
psbs();pNb(2);psbs();pn();
}
psbs();pNs(2);psbs();pn();
pNs(1);pNb(6);pNs(1);pn();
pNs(8);pn();
return 0;
}
可读性更强了,而且如果要求改变,代码具有灵活性,后面花的时间就更短了,出错概率小,虽然是个小代码,但是也能体现出代码习惯~~