C++ 修改此输出
c++ modify this output
void print(int *xp, int len) {
while (len--)
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;
}
它输出
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
单独修改 print() 以生成以下输出:
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
我试过这个,但它打印出所有 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;
}
一旦while
内的条件为假,它将停止打印。因此,在您修改后的代码中,当*xp
是偶数时,它会停止整个循环。
您要做的是不对偶数执行 std::cout
语句(请注意指针也不会移动),或者每次跳转 2。请注意,这两种方法都存在一些微妙之处,并且像原始代码一样使用指针来实现目标将是不平凡的。
您没有更改 xp
的值,因此它始终打印数组的第一个元素。
您想从 i
:0 -> len
开始计算索引并打印*(xp+i)
void print(int *xp, int len) {
for(int i = 0; i<len;i++){
if (i%2 == 0)
cout << *(xp+i) << " ";
}
cout << endl;
}
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- 当使用我在一个函数、另一个函数中修改的数组时,在我的输出中得到一个奇怪的负数
- 如何修改Lambda表达式以将输出放入文本文件
- 打开一个文件,修改每个字符,然后执行反向操作不输出原始文件
- 我在让我的代码输出整个链表时遇到问题.它只是输出我修改过的一些文本文件,而不是整个东西
- 修改视频帧并将其发送回视频输出流
- Delphi 2007 EXE和C++DLL:调试输出:027D4FF8处的堆块在027D5009处修改,超过了请求的9
- 修改 gettext .pot 文件输出以排除空字符串或仅包含空格的字符串
- DUMPBIN 实用程序修改了名称输出
- 两个窗口-一个由线程随机输出修改
- c++.valgrind输出:Syscall param open(filename)指向不可修改的字节
- C++ 修改此输出
- 未修改 CUDA 内核函数输出变量
- 修改排列算法以防止重复打印输出的策略
- 输出声明Heap在释放后被修改,但没有添加到Heap中
- Flex词法器输出修改
- 不要修改程序,打印一些值作为输出 - 不寻常的(?)家庭作业