gpt4 book ai didi

c - 交换数字的交替数字

转载 作者:行者123 更新时间:2023-11-30 21:34:54 28 4
gpt4 key购买 nike

我正在处理 hackerrank 模块下给出的一些问题。问题是关于交换给定数字的替代数字。

我已经在 C 中尝试了我的逻辑。它适用于大多数测试用例,但无法破解一些我无法检查的极端情况。这是我尝试过的。

int main() {
int n,i,j;
char a[20];
scanf("%s",a);
n=strlen(a);
if(n==1){
printf("%s",a);
}
else{
for(i=0,j=i+1;i<n-1 && j<n;i=i+2,j=j+2){
a[i]^=a[j]^=a[i]^=a[j];
}
printf("%s",a);
}
return 0;
}

我无法可视化模块所有者提供的测试用例,因为我无权访问它们。这些是我的大学为安置准备而提供的一些练习题。所以我无法访问测试用例,这就是为什么我无法提供那些失败的测试用例及其输出。有人请帮助我解决逻辑上的错误。提前致谢。

最佳答案

a[i]^=a[j]^=a[i]^=a[j];

您尝试在没有序列点的单个表达式中读取和写入 a[i]a[j]。这样做会调用 undefined behavior .

将表达式分成多行。

a[i]^=a[j];
a[j]^=a[i];
a[i]^=a[j];

关于c - 交换数字的交替数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56382803/

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