语句对循环C无效
我得到了这个循环:语句对循环C无效,c,for-loop,unused-variables,C,For Loop,Unused Variables,我得到了这个循环: for(int k=4;k<0;k--){ if(k == 0){ test[k] = 5; break; } else{ test[k] = test[k-1]; } } for(int k=4;k循环将k初始化为正值(k=4),然后在k为负值时循环(k=0?在循环中使用条件k4 false)。 因此,您的条件第一次失败。因此,您的循环尚未执行。因此,请将您的条件语句更改为k>0,而不是
for(int k=4;k<0;k--){
if(k == 0){
test[k] = 5;
break;
}
else{
test[k] = test[k-1];
}
}
for(int k=4;k循环将k
初始化为正值(k=4
),然后在k
为负值时循环(k=0
?在循环中使用条件k4 false)。
因此,您的条件第一次失败。因此,您的循环尚未执行。因此,请将您的条件语句更改为k>0,而不是k循环的条件表达式错误
for(int k=4;k<0;k--){
但无论如何,代码看起来都很糟糕。例如,不清楚魔法数字5是什么意思,也不需要使用break stzment
您可以编写一个函数。下面是一个相应程序的示例
#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;
}
在循环中放入一个print语句。这应该会给你一个线索。条件永远不会满足!4>0!你的FOR
循环在这种条件下永远不会工作FOR(int k=4;kFOR(int k=4;k=0;k--)
。它会在k==0
时进入循环吗?@Rustam,抱歉这个错误。我已经更改了代码。现在它会在k==0时进入循环。
for(int k = 4; k >= 0; k-- ) {
#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