配列内の要素を1右に正しくシフトする方法がわかりません。配列は[1 ,2, 3, 4, 5]
に初期化されています。だから私がシフトすると、結果は[2, 3, 4, 5, 1]
になるはずですが、それは[2, 3, 4, 5, 0]
として出てきます。なぜそうはわかりません。ここに私がこれまで持っていたものがあります -配列内の要素を右にシフトする1
for(k = 0; k <= n - 1; k++){
array[k] = array[k+1];
}
printf("Array is now:\n");
k = 0;
while(k < n) {
printf("x[%d] = %f\n", k, array[k]);
k++;
}
結果が縦に印刷されます。
最初の要素のコピーは保存しません。そして、 'k + 1 == n - 1 + 1 == n 'なので' k'が 'n-1'なら配列境界から読み出すので、' array [n] 'はすべてです。 – StoryTeller
適切な関数を書くことをお勧めします。これは配列をシフトしたものとして解釈します。実際にシフトする要素は、大規模な配列にとって高価になります。彼らが比較的小さいと保証されているなら、どんな作品でも自由に行くことができます。 – Downvoter
コンパイラの警告C4477: 'printf':フォーマット文字列 '%f'には 'double'型の引数が必要ですが、可変引数2には 'int'型があります。私は* 'array'が' int'だったと仮定して、MCVEを供給してください。 –