求助如何调试程序
我自己写了一个程序不知道哪里错了不知道如何调试求告知调试方法
一副1到n的牌,每次从牌堆顶取一张放桌子上,再去一张放牌堆底,直到手里没牌,最后桌子上的牌的顺序是1-n的有序,设计程序输出牌堆的顺序数组
方法是取一个1~n的数组,这里为了说明取n=5。按照题目中的规则变换,得到数组:[1 3 5 4 2],将该数组下标与值互换得到[1 5 2 4 3],即为答案。解释:[1 3 5 4 2]的意义是,经过变换,原数组中3号位置的数字现在2号槽,原数组中5号位置的数字现在3号槽... 现在已知变换后的槽存放的是1~n,故只需将下标与值互换即可得到待求数组(某大神方法)
#include<iostream>
using namespace std;
void suanfa(int *a,int *b,int m)
{
int k,temp;
for(int i = 1;i<=m;i++)
{
if(i%2==1)
{
*(b++) = *(a+i);
}
else
{
if(i == m)
{ *(b+m) = *(a+i);
break;
}
temp = *(a+i);
for( k = i+1;k<=m;k++)
{
a[k-1]=a[k];
a[m]=temp;
}
}
}
}
void suanfa2(int *b,int *a,int m)
{
for(int i = 1;i<=m;i++)
a[i] = b[b[i]];
}
void main()
{
int m ;
cin>>m;
int *a = new int[m];
int *b = new int[m];
suanfa(a,b,m);
suanfa2(b,a,m);
cout<<a;
}
就告知如何调试程序就可以了,有兴趣的可以试试