gpt4 book ai didi

c - 如何在 C 中绘制一个给定宽度和高度的空矩形?

转载 作者:太空宇宙 更新时间:2023-11-04 01:27:44 26 4
gpt4 key购买 nike

我最终会得到大量的反对票,但我实际上已经为这个逻辑练习苦苦挣扎了几个小时,我希望能得到一些帮助。给定 widthheight,编译器应该绘制一个矩形。

因此,我决定使用 for 循环,这看起来是完成这项工作最聪明的方法。

这是我一直在使用的代码:

#include <stdio.h>

main()

{

int width, height, b, a;

printf("Please insert the value of the width.\n");
scanf("%d", & width);

printf("Please insert the value of the height.\n");
scanf("%d", & height);

for (a = 0; a != height; a++) {

// fill the width
for (b = 0; b != width; b++ ) {

if (a == 0) {
printf("*");}

else if (a == width-1) {
printf("*");
}

else if (b == height-1) {
printf("*");
}

else if (b == 0) {
printf("*");
}

else {
printf(" ");
}}

printf("\n");
}
}

我觉得我错过了什么,但这太令人困惑了。有人可以告诉我为什么我的代码不绘制矩形吗?

最佳答案

逻辑有问题。您必须在以下边界条件下打印*

  • a == 0
  • a == height-1
  • b == 0
  • b == width-1

此外,当您不打印边界 * 时,您需要打印空格 [] 以形成结构。

更多好的做法,查看下面的代码和评论

#include <stdio.h>

int main() //put proper signature

{
int width = 0, height = 0, b = 0, a = 0; // initalize local variables

printf("Please insert the value of the width.\n");
scanf("%d", & width);

printf("Please insert the value of the height.\n");
scanf("%d", & height);

for (a = 0; a != height; a++) {

// fill the width
for (b = 0; b != width; b++ ) {

if ((a == 0) || (a == height-1) || (b == width-1) || (b == 0)){ // put all * printing condition in one place
//also, conditions, (a == height-1) and (b == width-1) to be used
printf("*");
}
else // if not to print *, print space
printf(" ");
}
printf("\n");
}
return 0; // add a return statement.
}

关于c - 如何在 C 中绘制一个给定宽度和高度的空矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28282362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com