我是新手,我在处理一个简单程序时遇到了麻烦,确实我解决了它。但是我想问一个方法来掌握循环将执行多少次迭代,例如,我希望循环第一次重复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,而底部则以另一种方式进行。 如果您向我展示了如何更好的例子,我将不胜感激。
答案 0 :(得分:-1)
实际上,他们俩都不好。
我认为我的代码可以解决您的问题。
这是一个答案:
#include<stdio.h>
int main()
{
int i, j, k;
for (i = 0; i < 9; i++) {
if (i < 5) {
for (j = 0; j < 4 - i; j++) {
printf(" ");
}
for (k = 0; k < (2 * i) + 1; k++) {
printf("*");
}
}
else {
for (j = 0; j < i - 4; j++) {
printf(" ");
}
for (k = 0; k < 17 - 2 * i; k++) {
printf("*");
}
}
printf("\n");
}
return 0;
}
加),如果您想通过输入来设置尺寸:
#include<stdio.h>
int main()
{
int i, j, k, n;
scanf_s("%d", &n);
for (i = 0; i < n; i++) {
if (i < n / 2 + 1) {
for (j = 0; j < n / 2 - i; j++) {
printf(" ");
}
for (k = 0; k < (2 * i) + 1; k++) {
printf("*");
}
}
else {
for (j = 0; j < i - n / 2; j++) {
printf(" ");
}
for (k = 0; k < n * 2 - 1 - 2 * i; k++) {
printf("*");
}
}
printf("\n");
}
return 0;
}