首页 > 解决方案 > 我应该使用什么条件使我的代码与局部变量一起工作?

问题描述

所以这段代码给了我们素数。但它仅在 inta[1499]是全局变量时才有效,因为如果数组是全局的,它会自动将所有成员初始化为0. 如何更改for-loop 的条件,以便我可以创建a[1499]一个局部变量并将其移动到函数中main

#include <iostream>

using namespace std;

int a[1499];

int main()
{
    int PrimeCounter = 0;
    int PrimeNumberNeeded = 1500;
    bool Isprime;
    int TestNumber = 2;

    a[0]=2;
    while (PrimeCounter != PrimeNumberNeeded)
    {
        Isprime = true;

        for(int x=0; a[x]!= 0; x++)
        {
            if(TestNumber%a[x] == 0)
            {
                Isprime = false;
                break;
            }
        }
        if (Isprime)
        {
            a[PrimeCounter] = TestNumber;
            PrimeCounter++;
        }
        TestNumber++;
    }
    // end of while
    if (PrimeCounter == PrimeNumberNeeded)
    {
        cout << "Prime counter is: " << PrimeCounter << "\nTest number is: "<< a[1499]<< endl;
    }
    return 0;
}

标签: c++globallocal

解决方案


移动a函数内部的定义并给它一个初始化器:

int a[1499] = {0};

这将第一个元素显式初始化为 0,并将其余元素也隐式初始化为 0。


推荐阅读