遇到阵列问题:/

时间:2013-12-03 06:37:41

标签: c++ arrays for-loop

到目前为止,这是我的代码

int main()
{
    srand(time(0)); 
    int inputnum,occurrences;
    occurrences = 0;
    cout<<"Enter a number to check the occurences"<<endl;
    cin>>inputnum;
    int arrayofnum[10] = {(rand()%201),(rand()%201),(rand()%201),(rand()%201),(rand()%201),(rand()%201),(rand()%201),(rand()%201),(rand()%201),(rand()%201)} ;
    cout<<arrayofnum[0]<<","<<arrayofnum[1]<<","<<arrayofnum[2]<<","<<arrayofnum[3]<<","<<arrayofnum[4]<<","<<arrayofnum[5]<<","<<arrayofnum[6]<<","<<arrayofnum[7]<<","<<arrayofnum[8]<<","<<arrayofnum[9]<<endl;
    for(int i=1;i<=10;i++)
    {
        if(inputnum == arrayofnum[i])
            occurrences++;
    }

    cout<<"The number of occurrences of "<<inputnum<<"in the random list is "<<occurrences<<" times"<<endl;

    system("pause");
    return 0;
}

我的目标是检查输入的数字在阵列中显示的次数 然而if语句似乎给我带来麻烦,任何人都可以帮忙吗?

6 个答案:

答案 0 :(得分:1)

看起来你正在访问数组的末尾:

if (inputnum == arrayofnum[i])

你的for循环允许i在终止之前取值10,所以在最后一次迭代中你将访问arrayofnum[10]。数组中的最后一个元素是arrayofnum[9]

请记住,c ++中的数组是从零开始的,所以你只需要像这样调整你的for循环:

for (int i = 0; i < 10; i++) {
   /* stuff */
}

答案 1 :(得分:0)

更改此

for(int i=1;i<=10;i++)

到此,

for(int i=0;i<10;i++)

查看是否有任何事情发生

答案 2 :(得分:0)

将<{1}}替换为

for(int i=1;i<=10;i++)

你的数组从索引0开始

答案 3 :(得分:0)

cout'ed arrayofnum的方式来看,我假设您确实知道数组及其边界的工作,即数组从index 0开始并以{结尾{1}}。所以,现在你必须看看你的maxCount-1循环,你很高兴。

for

答案 4 :(得分:0)

你的for循环不正确 它应该是 for(int i=0;i<10;i++) 因为数组的大小是10所以你应该从0迭代到9。

答案 5 :(得分:0)

我认为这可以很容易地完成。我就是这样做的:

#include<cstdio>
#include<cstdlib>
#include<iostream>

using namespace std ;

int main() {
    int i , user_input , lim , mod , cn ;
    lim = 10 ;
    mod = 201 ;
    cn = 0 ;
    int arr[ lim ] ;
    for( i = 0 ; i < lim ; i++ ) {
        arr[ i ] = rand() % mod ;
    }
    cout << "Enter a number to check the occurences\n" ;
    cin >> user_input ;
    for( i = 0 ; i < lim ; i++ ) {
        if( i != 0 ) {
            cout << "," ;
        }
        cout << arr[ i ] ;
        if( arr[ i ] == user_input ) {
            cn++ ;
        }
    }
    cout << "\n" ;
    cout << "The number of occurrences of " << user_input << " in the random list is "     << cn << " times" << "\n" ;
    return 0 ;
}

此外,您正在访问数组中不存在的位置。数组的有效索引是[0,10]。