| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 901 人关注过本帖
标题:来看看这个为什么会显示乱码呢?
取消只看楼主 加入收藏
qq576688920
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2015-7-25
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
来看看这个为什么会显示乱码呢?
这个是一个双重递归函数,基本可以实现,但是输出会有乱码,搞不懂了。
程序代码:
#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] = '\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);
}

还有这个网站怎么附图??
2015-08-17 13:13
qq576688920
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2015-7-25
收藏
得分:0 
我想附图给大家看输出结果,但是不能附图
2015-08-17 17:44
qq576688920
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2015-7-25
收藏
得分:0 
回复 7楼 wp231957
写出来的程序是这样的。有乱码,在每一排后面
图片附件: 游客没有浏览图片的权限,请 登录注册
2015-08-17 17:47
qq576688920
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2015-7-25
收藏
得分:0 
程序代码:
#include<iostream>//输入输出流
const int Len = 66;//声明一个常数Len
const int Divs = 6;//声明一个常数Divs。          (用来规定分几次。)
void subdivide(char ar[], int low, int high, int level);//声明一个子函数subdivide
//这个程序就是一个普通的实验程序,纯粹是找不到事做了。其目地是为了可以将一个一个长度一直分它的1/2,使它变成很多短的单位长度的组合。

int main()
{
    using namespace std;//声明函数空间
    char ruler[Len];//定义一个ruler数组
    int i;//声明一个变量i
    for ( i = 1; i < Len-2; i++)//用一个for循环给入ruler数组除首尾两元素以外附上一个空格字符,首尾用来存放‘|’
        ruler[i] = ' ';//程序乱码大概出在这,但是我不知道怎么改
    ruler[Len - 1] = '\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++)//再一个for循环清零数组。其纯在的意义就是消灭那些乱码,然而并内有什么卵用。
        {
            ruler[j] = ' ';//或许是这出错了。
        }
    }
    
    cin.get();//接受一个任意数结束程序。
    return 0;
}
void subdivide(char ar[], int low, int high, int level)
{
    if (level == 0)//当i值等于一时,下面函数调用自己时每次-1,当等于0时结束递归循环。
        return;
    int mid = (high + low) / 2;//取中点。
    ar[mid] = '|';//把中点这个元素付成‘|’,从而用‘|’把这个单位长度分成两个
    subdivide(ar, low, mid, level-1);//把分出来的左边执行一样的函数。由于每次调用都会再次调用到这个部分,所以达到了递归的目的。
    subdivide(ar, mid, high, level - 1);//把右边分出来。
}
2015-08-18 11:00
qq576688920
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2015-7-25
收藏
得分:0 
回复 10楼 wp231957
已经注释了,在你楼下
2015-08-18 11:01
qq576688920
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2015-7-25
收藏
得分:0 
回复 13楼 rjsp
就是这样,但是实现有乱码,怎么也清不掉
2015-08-19 00:15
快速回复:来看看这个为什么会显示乱码呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.062266 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved