我新手,我在处理一个简单的程序时遇到了麻烦,事实上我解决了它 . 但是我想问一个方法来掌握循环中有多少次迭代,例如我希望循环第一次重复10次,第二次重复8次,第三次重复6次,依此类推 .
该程序很简单,用星号(*)打印钻石 .
*
***
*****
*******
*********
*******
*****
***
*
我用两种方式做到了,我希望你的意见知道哪个更好 .
选项1:
#include <stdio.h>
int main(){
int buff_j = 0, buff_k = 9;
for(int i = 0; i <= 8 ; i++){
if( i <= 4 ){
int j = buff_j;
while( j <= 3){
printf(" ");
j++;
}
int k = buff_k;
while(k <= 9){
printf("*");
k++;
}
printf("\n");
buff_j++;
buff_k -= 2;
}else{
int j = buff_j;
while(j <= 5){
printf(" ");
j++;
}
int k = buff_k;
while(k <= 5){
printf("*");
k++;
}
printf("\n");
buff_j--;
buff_k += 2;
}
}
return 0;
}
选项2:
#include <stdio.h>
int main(){
int buff_j = 1, buff_k = 7;
//top
for(int i = 1 ; i <= 4 ; i++){
int j = buff_j;
while( j <= 4){
printf(" ");
j++;
}
int k = buff_k;
while(k <= 7){
printf("*");
k++;
}
printf("\n");
buff_j++;
buff_k -= 2;
}
//mid
for(int i = 1 ; i <= 9 ; i++)
printf("*");
printf("\n");
buff_j = 4;
buff_k = 1;
//buttom
for(int i = 1 ; i <= 4 ; i++){
int j = buff_j;
while(j <= 4){
printf(" ");
j++;
}
int k = buff_k;
while(k <= 7){
printf("*");
k++;
}
printf("\n");
buff_j--;
buff_k += 2;
}
return 0;
}
正如您所看到的,顶部内部循环将改变它们迭代的次数减少1或增加2并且底部以另一种方式执行 . 如果你向我展示一个如何更好的例子,我将感激不尽 .
1 回答
实际上,他们两个都不好 .
我认为我的代码将解决您的问题 .
这是一个答案:
另外)如果你想用你的输入设置大小: