循环的条件表达式错误。
for(int k=4;k<0;k--){
您使用 4 进行初始化k
,然后检查它是否小于 0。由于 4 显然大于 0,因此循环将永远不会迭代。
我想你的意思是以下
for(int k = 4; k >= 0; k-- ) {
但无论如何,代码看起来很糟糕。例如,不清楚神奇数字 5 的含义,也没有必要使用 break stztement。
你可以写一个函数。下面是相应程序的示例
#include <stdio.h>
void shift_right( int a[], size_t n )
{
if ( n > 1 )
{
size_t i = n - 1;
int last = a[i];
for ( ; i != 0 ; --i ) a[i] = a[i - 1];
a[i] = last;
}
}
int main(void)
{
int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
const size_t N = sizeof( a ) / sizeof( *a );
size_t i;
for ( i = 0; i < N; i++ ) printf( "%d ", a[i] );
puts( "" );
shift_right( a, N );
for ( i = 0; i < N; i++ ) printf( "%d ", a[i] );
puts( "" );
return 0;
}
输出是
0 1 2 3 4 5 6 7 8 9
9 0 1 2 3 4 5 6 7 8