gpt4 book ai didi

c - 这个 "make a triangle loop"循环超过必要时间的任何原因

转载 作者:太空宇宙 更新时间:2023-11-04 03:49:56 25 4
gpt4 key购买 nike

我有这个函数可以将一个字符数组(即一个字符串)变成一个直角三角形。它可以工作,但即使在阵列停止后它也会继续运行。所以输出总是有很多额外的空白行。

如果单词足够长,随机符号将出现在该空格的末尾。这可能是因为空格超出了 100 的数组大小。我不知道是什么原因造成的。我试图为计数器和 printf 设置条件以换行,但这完全破坏了代码。我认为这绝对是新行的 printf,但在尝试之后现在看起来不像了。有没有人看出哪里出了问题?

下面是我的代码中的远程函数。

#include <stdio.h> 
#include <stdlib.h>
#include <string.h>


#define clear system("cls")
#define pause system("pause")


void triangulate(char stringArray[]){
int i,j,len = 0;
int counter=0;
len=strlen(stringArray);//a function library function that returns the length

printf("\n");
for(i=1;i<=len;++i){
for(j=1;j<=i;++j){
printf("%c",stringArray[counter]);
counter++;
}
printf("\n");

}
printf("len:%i counter:%i",len, counter);
pause;
}//end triangulate()

最佳答案

这是错误的:

for(i=1;i<=len;++i) {
for(j=1;j<=i;++j) {
printf("%c",stringArray[counter]);
counter++;
}
printf("\n");
}

你不能递增计数器这么多次。由于嵌套循环,counter 将访问越界位置 - 您正在将它递增到最终值,即与字符串长度相关的 O(n^2)。

关于c - 这个 "make a triangle loop"循环超过必要时间的任何原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21505028/

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