程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++-請問在這個約瑟夫問題中,把數組定義在main()函數前與下面程序中定義的數組方式 有什麼異同?

c++-請問在這個約瑟夫問題中,把數組定義在main()函數前與下面程序中定義的數組方式 有什麼異同?

編輯:編程綜合問答
請問在這個約瑟夫問題中,把數組定義在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;
}

最佳回答:


在函數(main或者其他函數)外部定義的數組都是全局數組,但是只有在定義以後的函數中才能訪問。
在函數中定義的是局部數組,也是僅在函數中定義以後的代碼塊中才能訪問。
bool str[n+1]的確是不合法的。數組定義時,長度必須時常量。如果需要跟具n來確定數組的大小,需要用到動態分配內存的malloc或者new,當然申請的資源最後需要調用free或者delete[]釋放。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved