从键盘上输入若干个整数,以0结束,求这组数中的最大值和最小值,并求出其中的正数之和。
时间: 2024-05-09 12:19:12 浏览: 209
算法步骤:
1. 声明变量max为最大值,min为最小值,sum为正数之和,num为输入的数。
2. 从键盘输入第一个数num。
3. 当num不等于0时,执行以下操作:
1) 如果num大于max,则将max更新为num。
2) 如果num小于min,则将min更新为num。
3) 如果num大于0,则将sum加上num。
4) 继续从键盘输入下一个数num。
4. 输出max、min和sum。
代码实现:
```python
max = float('-inf') # 初始最大值为负无穷大
min = float('inf') # 初始最小值为正无穷大
sum = 0 # 初始正数之和为0
num = int(input("请输入一个整数:"))
while num != 0:
if num > max:
max = num
if num < min:
min = num
if num > 0:
sum += num
num = int(input("请输入一个整数:"))
print("最大值为:", max)
print("最小值为:", min)
print("正数之和为:", sum)
```
相关问题
定义数组int a[10],输入任意10个整数(测试数据确保正负都有), 求出其正数元素和负数元素当中各自的最大值、最小值和平均值,并输出结果。 注意:0按照正数计算
首先,我们需要定义一个数组`int a[10]`来存储这10个整数。接下来,我们遍历数组,同时维护正数和负数的最大值(max_positive和max_negative)、最小值(min_positive和min_negative)以及它们各自的计数(count_positive和count_negative)。对于每个元素,我们会检查它的正负性:
```cpp
#include <iostream>
using namespace std;
void processArray(int a[], int size) {
int max_positive = INT_MIN;
int min_positive = INT_MAX;
int count_positive = 0;
int sum_positive = 0;
int max_negative = INT_MIN;
int min_negative = INT_MAX;
int count_negative = 0;
int sum_negative = 0;
for (int i = 0; i < size; i++) {
if (a[i] > 0) {
if (a[i] > max_positive) {
max_positive = a[i];
}
sum_positive += a[i];
count_positive++;
} else if (a[i] < 0) {
if (a[i] > max_negative) {
max_negative = a[i];
}
if (a[i] < min_negative) {
min_negative = a[i];
}
sum_negative += a[i];
count_negative++;
} else {
// 如果遇到0,按正数计算,更新sum_positive
sum_positive++;
count_positive++;
}
}
// 计算平均值
double average_positive = (double)sum_positive / count_positive;
double average_negative = (double)(sum_negative + 0) / count_negative;
cout << "正数的最大值: " << max_positive << endl;
cout << "正数的最小值: " << min_positive << endl;
cout << "正数的平均值: " << average_positive << endl;
cout << "负数的最大值: " << max_negative << endl;
cout << "负数的最小值: " << min_negative << endl;
cout << "负数的平均值: " << average_negative << endl;
}
int main() {
int a[10]; // 输入10个整数
// 从用户那里获取输入并填充数组
processArray(a, sizeof(a) / sizeof(a[0]));
return 0;
}
```
这个程序会处理给定的10个整数,并根据正数和负数分别找出最大值、最小值和平均值。记得在`main`函数中添加代码来实际获取用户的输入。运行后,将显示相应的统计信息。
编程完成以下的要求: 1、求无符号数组BUF中的最大值存放于MAX中。(必做) 2、求有符号数组BUF中的最小值存放于MIN中。(必做) 3、统计数组BUF中正数、负数、0的个数顺序存放在变量NUM中。(必做) 4、从键盘输入一个正整数,判断是否是回文数,是则输出“YES”,
否则输出“NO”。(选做)
以下是示例代码:
```
#include <stdio.h>
void find_max(unsigned int BUF[], int len, unsigned int *MAX)
{
int i;
*MAX = BUF[0];
for (i = 1; i < len; i++) {
if (BUF[i] > *MAX) {
*MAX = BUF[i];
}
}
}
void find_min(int BUF[], int len, int *MIN)
{
int i;
*MIN = BUF[0];
for (i = 1; i < len; i++) {
if (BUF[i] < *MIN) {
*MIN = BUF[i];
}
}
}
void count_nums(int BUF[], int len, int *num_positive, int *num_negative, int *num_zero)
{
int i;
*num_positive = 0;
*num_negative = 0;
*num_zero = 0;
for (i = 0; i < len; i++) {
if (BUF[i] > 0) {
(*num_positive)++;
} else if (BUF[i] < 0) {
(*num_negative)++;
} else {
(*num_zero)++;
}
}
}
int is_palindrome(int num)
{
int reverse_num = 0;
int temp = num;
while (temp != 0) {
reverse_num = reverse_num * 10 + temp % 10;
temp /= 10;
}
return (num == reverse_num);
}
int main()
{
unsigned int max;
int min, num_positive, num_negative, num_zero;
unsigned int BUF[5] = {10, 20, 30, 40, 50};
int BUF2[5] = {-10, 20, 0, -30, 40};
find_max(BUF, 5, &max);
find_min(BUF2, 5, &min);
count_nums(BUF2, 5, &num_positive, &num_negative, &num_zero);
printf("max: %u\n", max);
printf("min: %d\n", min);
printf("positive: %d, negative: %d, zero: %d\n", num_positive, num_negative, num_zero);
int num;
printf("Enter a positive integer: ");
scanf("%d", &num);
if (is_palindrome(num)) {
printf("YES\n");
} else {
printf("NO\n");
}
return 0;
}
```
阅读全文