|
发表于 2023-8-9 17:31:10
|
显示全部楼层
在这段代码中,出现问题的地方是使用了scanf_s函数读取输入的空格数后,space变量在循环中被不断减小,但循环条件并没有判断space是否已经减到零。因此,当space减小到负数时,循环会一直执行下去。
以下是修改后的代码:
- #include <string.h>
- #include <stdio.h>
- #define HEIGHT 7
- const char* letters[] = {
- "\\########@\\## @\\## @\\###### @\\## @\\## @\\## @\",
- "\\####@\\ ## @\\ ## @\\ ## @\\ ## @\\ ## @\\####@",
- "\\ ###### @\\## ##@\\## @\\ ###### @\\ ##@\\## ##@\\#### @",
- "\\## ##@\\## ##@\\## ##@\\#########@\\## ##@\\## ##@\\## ##@",
- "\\ ###### @\\## ##@\\## @\\## @\\## @\\## @\\## ##@\\ ###### @",
- };
- int main() {
- int space;
- int i, j;
- printf("请输入需要间隔的空格数:");
- scanf("%d", &space);
- for (i = 0; i < HEIGHT; i++) {
- for (j = 0; j < 5; j++) {
- int len = (strlen(letters[j]) / HEIGHT);
- int line = i * len;
- int k = 0;
- while (letters[j][line + k] != '@') {
- putchar(letters[j][line + k]);
- k++;
- }
- for (int s = 0; s < space; s++) {
- putchar(' ');
- }
- }
- printf("\n");
- }
- return 0;
- }
复制代码
修改后的代码会正确处理空格数,当space减到零时会跳出循环,并且不会继续减小。
希望这可以帮助到你!如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案 |
|