从键盘上输入若干个整数,以0结束,求这组数中的最大值和最小值,并求出其中的正数之和。
时间: 2024-05-09 14:19:12 浏览: 14
算法步骤:
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)
```
相关问题
用c++实现从键盘输入若干整数(至少有一个),当输入为0时结束(不计0),输出其中的最大数。
好的,我来帮你解决这个问题。你可以参考下面这段C++代码:
```c++
#include<iostream>
using namespace std;
int main(){
int max_num = -2147483648; // 定义一个最小值为int型最小值的变量max_num
int num; // 定义输入的整数变量
do{
cin >> num; // 从键盘输入整数
if(num != 0 && num > max_num){ // 如果输入的数不为0且大于当前最大值
max_num = num; // 更新最大值
}
}while(num != 0); // 当输入为0时结束循环
cout << "最大数为:" << max_num << endl; // 输出最大数
return 0;
}
```
该程序会从键盘输入若干整数,当输入为0时结束,输出其中的最大数。请注意,这里我们将最大值初始化为int型最小值(-2147483648),因为输入的数可能为负数,如果将最大值初始化为0或其他正数,会导致程序出错。
编程完成以下的要求: 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;
}
```