| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
买学问 - 大牛一对一辅导,有问必答买学问 - 专业的付费知识问答平台
共有 467 人关注过本帖
标题:实现效果和想象中的不一致,求大神指点【二维数组+for嵌套循环】
只看楼主 加入收藏
a75692074
Rank: 1
等 级:新手上路
威 望:1
帖 子:47
专家分:0
注 册:2018-7-20
结帖率:100%
  已结贴   问题点数:20  回复次数:6   
实现效果和想象中的不一致,求大神指点【二维数组+for嵌套循环】
程序代码:
#include <iostream>
using namespace std;
const int Cities = 5; 
const int Years = 4;

int main()
{
    const char * cities[Cities] = // array of pointers 
    {                              // to 5 strings
        "Gribble City",
        "Gribbletown",
        "New Gribble",
        "Gribble vista"
    };

    int maxtemps[Years][Cities] = // 2-D array 
    {
        {96, 100, 87, 101, 105}, // values for maxtemps[0]
        {96, 98, 91, 107, 104}, // values for maxtemps[1]
        {97, 101, 93, 108, 107}, // values for maxtemps[2]
        {98, 103, 95, 109, 108} // values for maxtemps[3]
    };
    
    cout << "Maximum temperatures for 2008 - 2011\n\n";
    for (int city = 0; city < Cities; ++city)
    {
        cout << cities[city] << ":\t";
        for (int year = 0; year < Years; ++year)
            cout << maxtemps[year][city] << "\t";
        cout << endl;
    }
        // cin.get();
    return 0;
}


想象中的实现效果:
Maximum temperatures for 2008 - 2011

Gribble City:96
Gribbletown: 98
New Gribble: 93
Gribble vista:109
. . .
(省略的大神们应该能知道我想的是什么吧!)


现实中的实现效果:
Maximum temperatures for 2008 - 2011

Gribble City: 96  100  87  101   105
Gribbletown:  96  98   91  107   104
New Gribble:  97  101  93  108   107
Gribble vista:98  103  95  109   108

(实现效果是很整齐的噢)

求大神指点一下为什么实现效果是这样!
感谢!!!

[此贴子已经被作者于2018-12-31 20:48编辑过]

2018-12-31 20:44
rohalloway
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:90
专家分:405
注 册:2018-9-28
  得分:10 
在我这里是整齐的没有问题

你也可以试试cout << cities[city] << ":\t\t";

或者用函数补空格应该是最齐的
2018-12-31 21:46
a75692074
Rank: 1
等 级:新手上路
威 望:1
帖 子:47
专家分:0
注 册:2018-7-20
  得分:0 
回复 2楼 rohalloway
你没看懂。
2018-12-31 23:42
a75692074
Rank: 1
等 级:新手上路
威 望:1
帖 子:47
专家分:0
注 册:2018-7-20
  得分:0 
回复 楼主 a75692074
我问的是为什么实现效果和我想象中的不一样
2018-12-31 23:43
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:123
帖 子:1894
专家分:8283
注 册:2015-3-19
  得分:10 
可能内循环要加判断吧,比如year==city

知命以下无敌
2019-01-01 00:08
ZJYTY
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:87
专家分:638
注 册:2018-12-20
  得分:0 
for (int city = 0; city < Cities-1; ++city)
    {
        cout << cities[city] << ":\t";
        for (int year = 0; year < Years; ++year)
        {
            if (city == year)
                cout << maxtemps[year][city] << "\t";
        }
        cout << endl;
    }

/*
至于你所贴出的现实中的实现效果,可以分析一下自己的程序。
1:const char * cities[Cities]中只有四个元素,下面操作到了第五个,应该会崩溃。
2:内层循环输出的是一列,并不是一行。

你确认自己运行的代码是这样的?
*/

-------------------------------若有不当之处,敬请谅解-------------------------------
2019-01-02 17:35
a75692074
Rank: 1
等 级:新手上路
威 望:1
帖 子:47
专家分:0
注 册:2018-7-20
  得分:0 
回复 6楼 ZJYTY
是的,谢谢啦
2019-01-12 22:16







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

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