我知道打印的第一个字母是b c d e f。为什么' g'没印?当我5岁的时候,' f'打印出来。 i减少到4,因此它应该进入for循环。相反,尽管我小于6(strlen(arr)-1 = 6),它也不会进入。
char* arr = "abcdefg"; //String
int i;
for (i = 1; i < strlen(arr)-1; i+=2) //i is incremented by 2.
{
printf("%c ", arr[i--]); //Here i is decremented
}
返回0;
答案 0 :(得分:0)
这是一个逻辑问题,我将尝试说明
1º loop -> i = 1, arr[--i] = a
2º loop -> i = 3, arr[--i] = c
3º loop -> i = 5, arr[--i] = e
循环结束// i = 7, strlen(arr)-1 = 5
注意:我没有在C中调试它,但正如我所说,这是一个逻辑 问题...
我认为在发生此类事件时尝试使用IDE调试它是个好主意
答案 1 :(得分:0)
for for循环写i<strlen(arr)
或i<=strlen(arr)-1
而不是i<strlen(arr)-1;
因为当它打印f i=5
的值然后它将i
递减1然后值为i=4
,然后将i
的值增加2,然后i=6
,其中您的条件为i<6
。
答案 2 :(得分:0)
试试这个:
for (i = 1; i < strlen(arr); i+=2)