【发布时间】:2021-03-04 08:33:52
【问题描述】:
所以我是一个初学者,并试图解决一个关于在 C 中通过 d 元素旋转数组的问题。我的代码适用于一般索引,但是每当从最后一个元素到第一个元素的转换时,我都会得到一个输出而不是显示数字 5(例如:),而是显示一个大数字 1969844117。 所以我使用的代码是:
#include<stdio.h>
int main()
{
int n,d;
int i,j,tmp;
int a[20];
int b[20];
printf("Input Size Of array:");
scanf("%d",&n);
printf("Input the rotation factor d:");
scanf("%d",&d);
for(i=0;i<n;i++){
printf("Enter a[%d]:",i);
scanf("%d",&a[i]);
}
for(i=0,j=i+d;i<n,j<i+d;i++,j++){
tmp=a[i];
b[j]=tmp;
}
for(i=0;i<n;i++){
printf("%d\n",b[i]);
}
return 0;
}
那么有什么我没有得到或者我缺少什么逻辑。循环结束时索引的变化对循环中的字符有什么影响?
【问题讨论】:
-
在你的 for 循环中,
i<n,j<i+d应该是i<n && j<i+d -
请给出一个明确的例子,说明您为
n、d和数组传递了什么。然后给出你得到的输出和你期望的输出。比如,给定数组[1,2,3,4]和2的旋转,我期望[3,4,1,2],但得到[a,b,c,d]。 -
条件
i<n,j<i+d(在第二个for循环中)不像你想象的那样工作。