📜  C测验– 110 |问题1(1)

📅  最后修改于: 2023-12-03 15:00:12.721000             🧑  作者: Mango

C测验– 110 | 问题1

本文介绍C语言测验110的第一道问题。该问题要求编写一个程序,计算出从输入的三个整数中找出最大值和次大值的和。以下是相关的细节和解决方案。

问题描述

编写一个C程序,从标准输入中获取三个整数,然后计算出最大值和次大值的和,并将结果输出到标准输出。如果输入的整数个数不足三个,或者输入的不是整数,或者输入的整数不在Int类型的取值范围内,则程序应该给出错误提示信息并退出。

解决方案

要解决这个问题,我们需要遵循以下步骤:

  1. 使用scanf函数从标准输入中读取三个整数,并检查输入的合法性。
  2. 创建变量max和secondMax,分别存储最大值和次大值。
  3. 对于每个输入的整数,比较其和max和secondMax的值,并更新它们的值。
  4. 计算max和secondMax的和,并输出结果到标准输出。

以下是一个参考实现:

#include <stdio.h>
#include <limits.h> // 定义了整型的极值

int main(void) {
  int num1, num2, num3;
  int max = INT_MIN; // 定义maximum的初始值为int的最小值
  int secondMax = INT_MIN; // 定义second maximum的初始值为int的最小值

  printf("请输入三个整数: ");
  if (scanf("%d %d %d", &num1, &num2, &num3) != 3) { // 确保输入的是三个整数
    printf("输入无效!\n");
    return 1;
  }

  // 找到最大值和次大值
  if (num1 > max) {
    secondMax = max;
    max = num1;
  } else if (num1 > secondMax) {
    secondMax = num1;
  }

  if (num2 > max) {
    secondMax = max;
    max = num2;
  } else if (num2 > secondMax) {
    secondMax = num2;
  }

  if (num3 > max) {
    secondMax = max;
    max = num3;
  } else if (num3 > secondMax) {
    secondMax = num3;
  }

  // 计算最大值和次大值的和并输出结果
  int sum = max + secondMax;
  printf("最大值和次大值的和是: %d\n", sum);

  return 0;
}

在这个实现中,我们首先使用scanf函数读取三个整数,并使用if语句检查输入的合法性。如果输入无效,则输出错误消息并退出程序。

然后,我们使用if语句比较输入的每个整数和最大值max、次大值secondMax的值,并将它们更新为新的最大值/次大值。最后,我们计算max和secondMax的和并输出结果。

总结

C语言测验110的第一道问题要求我们编写一个程序,计算出从输入的三个整数中找出最大值和次大值的和。我们可以使用scanf和if语句读取输入并检查合法性,然后使用if语句找到最大值和次大值,最后计算它们的和并输出结果。这个问题性质相对简单,适合新手进行练习。