gpt4 book ai didi

c - 为什么这个倒转句算法不起作用?

转载 作者:行者123 更新时间:2023-11-30 20:09:25 24 4
gpt4 key购买 nike

代码中有一些人类可读代码的注释:

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

#define SIZE 100 //size of the input array and output array
#define ACCUM_CHAR_SIZE 25 //size of the temp array
int main(){
char i[SIZE];
char acc[ACCUM_CHAR_SIZE];
char o[SIZE];
int it_l = 0, it_a = 0, it_r = 0;
//it_l is the iterator to the input sentence,
//it_a is the iterator to the temp array
//it_r is the iterator to the output sentence
printf("Enter a sentence:");
gets(i);
int len = strlen(i) - 1;
while(it_l <= len){
if(i[len - it_l] != ' '){
acc[it_a] = i[len - it_l]; //add letters to acc until space
it_a++;
}
else{
it_a -= 1;
//acc is reversed, I reversed it again to the output sentence
while(it_a >= 0){
o[it_r] = acc[it_a];
it_r++;
it_a--;
}
it_r += 1;
o[it_r] = 32; //put a space
it_a = 0; //reset the temp array
strcpy(acc, ""); //clear the acc
}
it_l++;
}
printf("%s", o);
}

程序理论上看起来不错,但执行时有时会打印垃圾值,只打印一些单词,或者只用垃圾值而不是空格反转一半的句子。

上面的程序是将每个单词保存到temp,并将temp反转(存储单词时temp被反转)返回到输出。然而,它失败了。

感谢您的帮助。

最佳答案

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

#define SIZE 100 //The size of input array is prefered to be equal to ouput array.
int main(){
char input[SIZE];
char output[SIZE];
int i = 0, j = 0;
//i is the iterator to the input sentence,
//j is the iterator to the output sentence
printf("Enter a sentence:");
gets(input);
int len = strlen(input) - 1; //Total length.
j = len;
while(input[i]!= NULL){
output[j] = input[i];
i++;
j--;
}
output[len+1]= NULL;
printf("%s", output);
printf("Finished");
}

关于c - 为什么这个倒转句算法不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52453514/

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