c++ - 这个最小最大程序有问题吗?
问题描述
给定一个自然数 N 和 N 个自然数的列表。您需要打印列表中 N 个值中的最小值和最大值,并用空格字符分隔。
输入
您将从用户编号 N 中读取,然后是 N 个自然数。
输出
该程序将按此顺序打印由空格字符分隔的 2 个数字,分别代表 N 个值中的最小值和最大值。
限制 0 < N < 50 列表中的元素是大于或等于 -100 且小于或等于 100 的整数。
int N, M=0, L=50;
cin >> N;
if(N < 50) {
for(int R; N >= 1; N--) {
cin >> R;
if (L >= R){
L = L * 0;
L = L + R;
}
if (M <= R){
M = M * 0;
M = M + R;
}
R = R * 0;
}
}
cout << L << " " << M;
该程序正在运行,但我正在运行它的网站并没有给我所有的意义。也许有什么我忘记了。任何反馈?
解决方案
选择最小值和最大值的初始值时出现逻辑错误。假设用户输入“51”、“52”、“53”。从 50 开始,您的代码将输出“50 53” L
。您需要选择位于可能的最小/最大值边缘的默认值。看看这个简单的编辑:
int N,M=-100,L=100;
cin>>N;
if(N<50){
for(int R; N >= 1; N--){
cin>>R;
if (L >= R){
L=L*0;
L=L+R;
}
if (M <= R){
M=M*0;
M=M+R;
}
R=R*0;
}
cout<<L<<" "<<M;
我还应该注意,您在这里也采取了不必要的步骤,例如M=M*0; M=M+R;
,我建议重命名变量以更准确地表示它们所持有的内容(即 int min, max)
int total_numbers, max=-100, min=100;
cin>>total_numbers;
if(total_number < 50)
{
for(int i = 0; i < total_numbers;++i)
{
int current_number = 0;
cin >> current_number;
if(current_number > max)
max = current_number;
if(current_number < min)
min = current_number;
}
cout << min << "\t" << max << endl;
}
推荐阅读
- python - Python:如何根据每个条目中的行数删除 dict 条目
- runtime - Oracle Apex 19.1 无法导出应用程序 wwv_flow.accept.html
- php - Laravel Crud Editing 创造新纪录
- spring-boot - 如何使用 Spring Boot 生成 liquibase 回滚脚本?
- c# - 与 C# 的文本对齐
- mysql - 如何一次编辑时间戳列中的所有值?
- c++11 - 为什么 auto 变量的输出显示与类型无关的内容?
- pega - 属性集不是设置值
- java - 使用ntp获取网络时间服务器
- c++ - 有效计算像素与其对应的极线的距离