首页 新闻 搜索 专区 学院

为什么输出是这样的

0
[待解决问题]

程序如下

#include "stdafx.h"

#include <iostream>
using namespace std;

template<class T>
void Swap(T& a, T& b);
template<class T>
void Perm(T list[], int k, int m)
{
int i;
if (k==m)
{
for (i = 0; i <= m; i++)
cout << list[i];
cout << endl;
}
else
for (i = k; i <= m; i++){
Swap(list[k], list[i]);
Perm(list, k + 1, m);
Swap(list [k], list [i]);
}
}
template<class T>
inline void Swap(T& a, T& b)
{
T temp = a; a = b; b = temp;
}
int main()
{
int s, r, ac[20];
do
{
cout << "输入2-20个大于0的正整数,输入0结束";
for (r = 0; r <= 20; r++)
{
ac[r] = s;
}
} while (cin >> s&&s != 0);

Perm( ac, 0, r);
return 0;
}

输出是 858993460666666

c++
尤清浅的主页 尤清浅 | 菜鸟二级 | 园豆:202
提问于:2014-10-29 15:59
< >
分享
所有回答(2)
0

模板不好调试,实例化后自己单步调试,把调试情况贴出来,别人可没时间帮你一步步调试找bug

Sawyer Ford | 园豆:207 (菜鸟二级) | 2014-12-07 09:31
0

数组越界了呀,

cout << "输入2-20个大于0的正整数,输入0结束";
for (r = 0; r <= 20; r++)

这里不能用<=,要<

过客冲冲 | 园豆:202 (菜鸟二级) | 2015-03-04 20:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册