C++ c++;修改此输出

C++ c++;修改此输出,c++,C++,单独修改print()以生成以下输出: 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 1 2 3 4 5 6 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1 我试过了,但它打印出了所有的1 1 3 5 7 9 1 3 5 7 9 1 3 5 7 1 3 5 7 1 3 5 1 3 5 1 3 1 3

单独修改print()以生成以下输出:

   1 2 3 4 5 6 7 8 9 10

   1 2 3 4 5 6 7 8 9

   1 2 3 4 5 6 7 8

   1 2 3 4 5 6 7

   1 2 3 4 5 6

   1 2 3 4 5

   1 2 3 4

   1 2 3

   1 2

   1
我试过了,但它打印出了所有的1

1 3 5 7 9

1 3 5 7 9

1 3 5 7

1 3 5 7

1 3 5

1 3 5

1 3

1 3

1

1
#包括
使用名称空间std;
无效打印(int*xp,int len){
而(len--&&*xp%2!=0)

cout当
中的条件为false时,
将停止打印。因此,在修改后的代码中,当
*xp
为偶数时,它将停止整个循环


您要做的是不对偶数执行
std::cout
语句(注意指针也不会移动)或者每次跳转2。请注意,这两种方法都有一些微妙之处,像原始代码那样使用指针实现目标将非常重要。

您没有更改
xp
的值,因此它总是打印数组的第一个元素

您想从
i
:0->
len
计算索引,并打印
*(xp+i)

void打印(int*xp,int len){

对于(int i=0;通过调试器执行iStep)。请在将来提供更详细的标题。我不明白这一点。当我在*(xp+i)中编写时它给了我向后的数组,但没有给我奇怪的数组。@user2877258请看一下我发布的代码。自我上次查看以来,您似乎还更改了问题中的代码
1 3 5 7 9

1 3 5 7 9

1 3 5 7

1 3 5 7

1 3 5

1 3 5

1 3

1 3

1

1
#include <iostream>
using namespace std;

void print(int *xp, int len) {

     while (len-- && *xp%2 != 0)

        cout << *xp << " ";

    cout << endl;
}

int main(int argc, char** argv) {

    int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    for(int i=10; i>0 ; i--)
        print(array, i);

        return 0;
    }
void print(int *xp, int len) {

 for(int i = 0; i<len;i++){
   if (i%2 == 0)
    cout << *(xp+i) << " ";  
 }

cout << endl;
 }