| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 954 人关注过本帖
标题:我是新手,关于指针数组的疑问有很多,例题如下,求大神帮忙解决
只看楼主 加入收藏
橙子style
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-12-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
我是新手,关于指针数组的疑问有很多,例题如下,求大神帮忙解决
就是用C++编程实现把输入任意整数n后,可打印出n行三角字符阵列图形。例如,输入整数5时,程序运行结果如下:
ENTER A NUMBER:5<回车>
A  C  F  J  O
B  E  I  N
D  H  M
G  L
K
2015-12-01 22:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:4 
程序代码:
#include <iostream>

void foo( unsigned n )
{
    for( unsigned r=0,c=0; r!=n; r+c+1==n?(++r,c=0):++c )
        std::cout << char((r+c+1)*(r+c)/2+c+'A') << " \n"[r+c+1==n];
}

int main( void )
{
    unsigned n;
    std::cout << "ENTER A NUMBER:";
    std::cin >> n;
    foo( n );

    return 0;
}
2015-12-02 09:06
橙子style
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-12-1
收藏
得分:0 
回复 2楼 rjsp
谢谢啦,但是那个foo函数不是很明白,你能给我解释一下吗?
2015-12-02 14:39
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:4 
程序代码:
void foo( unsigned n )
{
    for( unsigned r=0,c=0; r!=n; r+c+1==n?(++r,c=0):++c )
        std::cout << char((r+c+1)*(r+c)/2+c+'A') << " \n"[r+c+1==n];//(r+c+1)*(r+c)/2+c==》内圈前n项和加上列标得到r行c列的参数值在加上A转成字母
}

剑栈风樯各苦辛,别时冰雪到时春
2015-12-02 21:16
仰望星空的
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:50
专家分:248
注 册:2015-9-28
收藏
得分:4 
这样排布的数学原理是啥啊,挺有意思的感觉~
2015-12-03 08:55
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:4 
我贴一个初学者能看的懂的,n最大值能取7,但输出时,最后现个字符就只能强制为X了。
程序代码:
#include<iostream>
int main()
{

    const int MAX=7;
    int n=7;
    char B[MAX][MAX]={  {' ',' ',' ',' ',' ',' ',' '},
               {' ',' ',' ',' ',' ',' ',' '},
               {' ',' ',' ',' ',' ',' ',' '},
               {' ',' ',' ',' ',' ',' ',' '},
               {' ',' ',' ',' ',' ',' ',' '},
               {' ',' ',' ',' ',' ',' ',' '},
               {' ',' ',' ',' ',' ',' ',' '}  };
    std::cout<<"enter the n:";
    std::cin>>n;
    int i=0;
    for(int j=0;j<n;j++)
    {
        int q=j;
        int k=0;
        while(q>=0)
        {
            B[q][k]='A'+i;
            if(B[q][k]>'Z')
            {
                B[q][k]='X';
            }
            i+=1;
            q--;
            k++;
        }
    }
    for(int m=0;m<n;m++)
    {
        for(int p=0;p<n;p++)
        {
                if(B[m][p]!=' ')
                {
                    std::cout<<B[m][p]<<"\t";
                }
        }
        std::cout<<std::endl;
    }
    return 0;
}


[此贴子已经被作者于2015-12-3 16:17编辑过]

2015-12-03 16:09
rolimi
Rank: 4
等 级:业余侠客
威 望:1
帖 子:43
专家分:232
注 册:2015-6-10
收藏
得分:4 
这个主要就是找规律了。这个阵列中a[r][c] = (r+c)*(r+c+1)/2 + c + 'A',r和c从0开始

呆呆的逗比程序猿
2015-12-04 20:11
橙子style
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-12-1
收藏
得分:0 
谢谢大家啦
2015-12-06 16:48
快速回复:我是新手,关于指针数组的疑问有很多,例题如下,求大神帮忙解决
数据加载中...
 
   



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

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