无法运行数组反转C++代码,请求错误排查
你的C++数组反转代码的问题排查与修正
问题1:reverse函数存在死循环
你的reverse函数中,start++和end--被写在了while循环体外,这导致循环条件start<=end永远无法不满足——循环内部没有修改start和end的值,程序会一直卡在这个循环里,根本执行不到后续的print函数,自然没有任何输出。
修正方式:将start++和end--移到while循环内部,每次完成元素交换后更新指针:
while(start<=end){ temp=arr[end]; arr[end]=arr[start]; arr[start]=temp; start++; end--; }
问题2:print函数输出逻辑错误
你的print函数里,cout<<arr;输出的是数组的首地址,而非数组元素。需要改为输出数组的对应下标元素,还可以添加空格让输出更易读:
for(int i=0;i<n;i++){ cout<<arr[i]<<" "; }
修正后的完整代码
#include<iostream> using namespace std; void reverse(int arr[],int n){ int start=0,end=n-1; int temp; while(start<=end){ temp=arr[end]; arr[end]=arr[start]; arr[start]=temp; start++; end--; } } void print(int arr[],int n){ for(int i=0;i<n;i++){ cout<<arr[i]<<" "; } cout<<endl; } int main(){ int arr[5]={1,2,3,4,5}; int brr[6]={3,6,8,2,1,0}; reverse(arr,5); reverse(brr,6); print(arr,5); print(brr,6); }
运行后会输出:
5 4 3 2 1 0 1 2 8 6 3
内容的提问来源于stack exchange,提问作者SAKSHI RAI 21BHI10062
相关产品推荐
相关产品推荐

