| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2505 人关注过本帖
标题:c primer plus 程序清单7.13 分析不出 请教
只看楼主 加入收藏
asqx123456
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-3-11
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
c primer plus 程序清单7.13 分析不出 请教
#include<iostream>
const int Len=66;
const int Divs=6;
void subdivide (char ar[],int low,int high,int level);
int main()
{
  char ruler [Len];
  int i;
  for(i=1,i<Len-2;i++)
 ruler[i]=' ';  
ruler[Len-1]= '\0 ';
    int max =Len-2;
    int min=0;
    ruler[min]=ruler[max]='|';
    std::cout<<ruler<<std::endl;
   for (i=1;i<=Divs;i++)
   {  
      subdivide(ruler,min,max,i);
      std::cout <<ruler<<std::endl;
      for (int j=1;j<Len-2;j++)
      ruler[j]=' ';

   }
   return 0;

    }

   void subdivide(char ar[],int low,int high,int level)
{
  if(level==0)
   return 0;
  int mid=(high+low)/2;
 ar[mid]='|';
 subdivide(ar,low,mid,level-1);
 subdivide(ar,mid,high,level-1);
}
搜索更多相关主题的帖子: include 
2016-03-11 16:24
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
首先,你得告诉别人“c primer plus 程序清单7.13”的题目要求是什么?
2016-03-11 16:27
asqx123456
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-3-11
收藏
得分:0 
回复 2楼 rjsp
是一个由"|"符号组成的一个图案
编写出来以后的图案是:
|                                                               |
|                               |                               |
|               |               |               |               |
|       |       |       |       |       |       |       |       |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2016-03-11 16:43
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:5 
比较复杂的递归
2016-03-11 21:15
asqx123456
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-3-11
收藏
得分:0 
回复 4楼 hjx1120
是啊, 看得我头都疼了, 何况我还是个学了不到10天的新手!!!
2016-03-11 21:29
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
回复 5楼 asqx123456
一个新手10天看七章,这是把这书当小说看的节奏呀!
这本书一共才十八章,楼主是人才啊
2016-03-12 16:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
以下是引用asqx123456在2016-3-11 16:43:00的发言:

是一个由"|"符号组成的一个图案
编写出来以后的图案是:
|                                                               |
|                               |                               |
|               |               |               |               |
|       |       |       |       |       |       |       |       |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
程序代码:
#include <iostream>
using namespace std;

int main( void )
{
    const unsigned level = 7;

    for( unsigned i=0; i!=level*((1u<<(level-1))+2); ++i )
    {
        unsigned r = i/((1u<<(level-1))+2);
        unsigned c = i%((1u<<(level-1))+2);

        if( c+1 == ((1u<<(level-1))+2) )
            cout << '\n';
        else if( c%(1u<<(level-1-r)) == 0 )
            cout << '|';
        else
            cout << ' ';
    }

    return 0;
}

2016-03-14 09:08
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:5 
此题原来有人发过的,其实不就是不断二分,提供另一个方法(换成递归也很简单)
程序代码:
#include <stdio.h>
int main()
{
    int i=0,j=64;
    while(j)
    {
        if(i%j)
            printf(" ");
        else 
            printf("|");
        i++;
        if(i==65)
        {
            j/=2;
            printf("\n");
            i=0;
        }
    }

}

能编个毛线衣吗?
2016-03-14 11:23
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:5 
//使用递归
#include<iostream>
#include<stdlib.h>
using namespace std;
const short SPAN=64;
short line=1;
void Recursion(short width)
{
    while(line<SPAN+1)
    {
        for(short i=1;i<=width;i++)
        {
            if(i!=width)
                cout<<' ';
            else
                cout<<'|';
            line++;
        }
    }
    if(width!=1)
        cout<<endl<<'|';
    line=1;
    if(width>1) Recursion(width/2);
}
int main()
{
    cout<<'|';
    Recursion(64);
    system("pause");return 0;
}
2016-03-14 18:42
快速回复:c primer plus 程序清单7.13 分析不出 请教
数据加载中...
 
   



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

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