因为你没有字符串结束符,所以产生乱码,代码修改后如下:

程序代码:
#include<iostream>
const int Len = 66;
const int Divs = 6;
void subdivide(char ar[], int low, int high, int level);
int main()
{
using namespace std;
char ruler[Len];
int i;
for ( i = 1; i < Len-2; i++)
ruler[i] = ' ';
ruler[Len - 1] = '\0'; //把回车符改成字符串结束符就可以了,因为你每次显示都有endl,所以不需要再加\n
int max = Len - 2;
int min = 0;
ruler[min] = ruler[max] = '|';
cout << ruler << endl;
for ( i = 1; i <Divs; i++)
{
subdivide(ruler, min, max, i);
cout << ruler << endl;
for (int j = 1; j <Len - 2; j++)
{
ruler[j] = ' ';
}
}
cin.get();
return 0;
}
void subdivide(char ar[], int low, int high, int level)
{
if (level == 0)
return;
int mid = (high + low) / 2;
ar[mid] = '|';
subdivide(ar, low, mid, level-1);
subdivide(ar, mid, high, level - 1);
}
[
本帖最后由 wmf2014 于 2015-8-19 06:54 编辑 ]