到目前为止,这是我的代码
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语句似乎给我带来麻烦,任何人都可以帮忙吗?
答案 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]。