lifuguan 2015-12-19 15:29 采纳率: 26.7%
浏览 1764
已采纳

请问在这个约瑟夫问题中,把数组定义在main()函数前与下面程序中定义的数组方式 有什么异同?

请问在这个约瑟夫问题中,把数组定义在main()函数前与下面程序中定义的数组方式
有什么异同?
为什么在VC6.0中认为示例程序的数组错误,而在dev C++中却没事

 #include <iostream>
#include <iomanip>  //调用setw()函数
using namespace std;
//bool str[101];
int main()
{
    int n, m;
    cin >> n >> m; //n为人数, m为报数数字
    bool str[n+1];
    cout << endl;
    for(int i=1;i<=101;++i)
    {
        str[i] = false; //相当于memset(str, 0, sizeof(str))
    }
    int a = 1, s = 1, f=1;
    do
    {
        ++a;
        if(a==n+1)      //模拟环状
            a=1;
        if(str[a]==false)
            ++f;
        if(f==m)
        {
            f = 0;      //计数器清零
            ++s;
            str[a] = true;
            cout << a << setw(5) << endl; //输出并设置域宽
        }
    }while(s!=n);
    return 0;
}
  • 写回答

4条回答 默认 最新

  • galey 2015-12-19 16:28
    关注

    在函数(main或者其他函数)外部定义的数组都是全局数组,但是只有在定义以后的函数中才能访问。
    在函数中定义的是局部数组,也是仅在函数中定义以后的代码块中才能访问。
    bool str[n+1]的确是不合法的。数组定义时,长度必须时常量。如果需要跟具n来确定数组的大小,需要用到动态分配内存的malloc或者new,当然申请的资源最后需要调用free或者delete[]释放。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?