初学者的疑惑关于最大最小值

evel 2010-03-02 10:02:52
我学习C++中写的一个获取100个随机数,并且返回其最大最小值的代码。大家帮看看为什么求最小值不对?代码有什么问题?谢谢


#include <iostream>
#include <stdlib.h>
using namespace std;

// function for get the max value,min value,and avage value of the random 100 number .
// By Evel

void main()
{
int how_many = 100;
int check[100];
int n=0;
cout << "Print "<< how_many << " random integers." << endl;
for (int i =0;i <how_many; ++i){
check[i]=rand();
cout << check[i] << '\t';
}
cout << endl;
//cout << check[0] <<endl;
int maxn = 0, min = check[0];
while(n<=how_many){
if(check[n]>maxn)
maxn=check[n];
else if(check[0]>check[n])
min=check[n];
n++;
}
cout << min << endl;
cout << maxn << endl;
}

...全文
178 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
SiGoYi 2010-03-03
  • 打赏
  • 举报
回复
if(check[n]>maxn)
maxn=check[n];
else if(check[0]>check[n])
min=check[n];

这么改
if ( min < check[n] )
ypb362148418 2010-03-02
  • 打赏
  • 举报
回复
引用 1 楼 onmyway2010 的回复:
while(n <=how_many)
应该为while(n <how_many)吧?


结贴吧,LZ
Happylessness 2010-03-02
  • 打赏
  • 举报
回复
#include <iostream>
#include <stdlib.h>
using namespace std;

// function for get the max value,min value,and avage value of the random 100 number .
// By Evel

void main()
{
const int how_many = 100; // 定义成const类型的
int check[how_many]; // 对数量引用,防止更改变量长度的时候while循环出问题
int n=0;
cout << "Print "<< how_many << " random integers." << endl;
for (int i =0;i <how_many; ++i){
check[i]=rand();
cout << check[i] << '\t';
}
cout << endl;
//cout << check[0] <<endl;
int maxn = 0, min = check[0];
while(n < how_many){ // =>循环条件订正。
if(check[n]>maxn)
maxn=check[n];
if(min > check[n]) // =>对最小值的判断条件订正
min=check[n];
n++;
}
cout << min << endl;
cout << maxn << endl;
}



菜鸟飘过。。。
wesleyluo 2010-03-02
  • 打赏
  • 举报
回复
修改下这里:

n=0;
int maxn = min = check[n];
while(n<=how_many){
if(check[n]>maxn)
maxn=check[n];
else if(min>check[n])
min=check[n];
n++;
}

OnMyWay2010 2010-03-02
  • 打赏
  • 举报
回复
while(n<how_many)
{
if(check[n] > maxn)
maxn=check[n];
else if(check[n] < min)
min=check[n];
n++;
}
yuzl32 2010-03-02
  • 打赏
  • 举报
回复

#include <iostream>
#include <stdlib.h>
using namespace std;

// function for get the max value,min value,and avage value of the random 100 number .
// By Evel

void main()
{
int how_many = 100;
int check[100];
int n=0;
cout << "Print "<< how_many << " random integers." << endl;
for (int i =0;i <how_many; ++i){
check[i]=rand();
cout << check[i] << '\t';
}
cout << endl;
//cout << check[0] <<endl;
int maxn = 0, min = check[0];
while(n < how_many){ // 1处!
if(check[n]>maxn)
maxn=check[n];
else if(min>check[n]) //2处
min=check[n];
n++;
}
cout << min << endl;
cout << maxn << endl;
}
WuBill 2010-03-02
  • 打赏
  • 举报
回复

#include <iostream>
#include <stdlib.h>
using namespace std;

// function for get the max value,min value,and avage value of the random 100 number .
// By Evel

void main()
{
int how_many = 100;
int check[100];
int n=0;
cout << "Print "<< how_many << " random integers." << endl;
for (int i =0;i <how_many; ++i){
check[i]=rand();
cout << check[i] << '\t';
}
cout << endl;
//cout << check[0] <<endl;
int maxn = 0, min = check[0];
while(n<=how_many){
if(check[n]>maxn)
maxn=check[n];
if(check[n]<min)
min=check[n];
n++;
}
cout << min << endl;
cout << maxn << endl;
}


试下
pengzhixi 2010-03-02
  • 打赏
  • 举报
回复
min>check[n]
joey_zoy 2010-03-02
  • 打赏
  • 举报
回复
else if(check[0]>check[n])
min=check[n];
这句逻辑有问题啊,按照你的这个逻辑,假如check[0]最大,那么循环到最后min = check[how_many],而不是取得数组中的最小值
yshuise 2010-03-02
  • 打赏
  • 举报
回复
vector<int> S;
S.push_back(......)

int max= *max_element(S.begin(),S.end());
pengzhixi 2010-03-02
  • 打赏
  • 举报
回复
一楼给出答案了,可以结贴了。
OnMyWay2010 2010-03-02
  • 打赏
  • 举报
回复
while(n<=how_many)
应该为while(n<how_many)吧?
na2650945 2010-03-02
  • 打赏
  • 举报
回复
引用 1 楼 onmyway2010 的回复:
while(n <=how_many)
应该为while(n <how_many)吧?

新手常遇见的问题。
我当时也是。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧