21xrx.com
2024-12-27 05:25:03 Friday
登录
文章检索 我的文章 写文章
C++如何输入和计算多组数据?
2023-07-04 18:56:00 深夜i     --     --
C++ 输入 计算 多组数据

在编程中,常常需要处理多组数据。特别是在竞赛或工程实践中,输入与计算多组数据变得尤为必要。对于C++而言,使用循环结构和输入输出流可以方便地输入和计算多组数据。

一、使用循环结构

在C++中,常用的循环结构有for、while和do-while。

1、for循环

for循环的语法为:

for (初始化表达式; 条件表达式; 更新表达式)

  循环体语句

其中,初始化表达式只执行一次,而条件表达式在每次循环开始前都会被执行,如果条件表达式的值为真,则执行循环体语句和更新表达式,否则跳出循环。

例1:输入N个整数并输出它们的和。

#include

using namespace std;

int main() {

  int N, t;

  cin >> t;

  while (t--) {

    cin >> N;

    int sum = 0;

    for (int i = 1; i <= N; i++) {

      int x;

      cin >> x;

      sum += x;

    }

    cout << sum << endl;

  }

  return 0;

}

在以上代码中,输入t表示要处理t组数据,对于每组数据,再输入N和N个整数,计算它们的和并输出。

2、while循环

while循环的语法为:

while (条件表达式)

  循环体语句

其中,条件表达式在每次循环开始前都会被执行,如果条件表达式的值为真,则执行循环体语句,否则跳出循环。

例2:输入多组整数并输出每组整数的平均数。

#include

using namespace std;

int main() {

  int x;

  while (cin >> x) {

    int sum = x;

    int cnt = 1;

    while (cin >> x) {

      sum += x;

      cnt++;

      if (cin.get() == '\n') break;

    }

    cout << sum / cnt << endl;

  }

  return 0;

}

在以上代码中,使用while循环输入每组整数并计算它们的平均数,并在输入回车符时跳出循环。使用cin.get()函数读取回车符。

3、do-while循环

do-while循环的语法为:

do

  循环体语句

while (条件表达式);

其中,先执行循环体语句,然后再判断条件表达式是否为真,如果为真则继续执行循环体语句,否则跳出循环。

例3:输入多组整数并输出它们的最大值。

#include

using namespace std;

int main() {

  int x;

  do {

    int maxx = -1e9;

    while (cin >> x && x != -1) {

      maxx = max(maxx, x);

    }

    if (maxx != -1e9) cout << maxx << endl;

  } while (x != -1);

  return 0;

}

在以上代码中,使用do-while循环输入多组整数并输出它们的最大值。当输入-1时跳出循环。

二、使用输入输出流

在C++中,可以使用cin和cout实现标准输入输出。而对于多组数据的输入输出,则需要使用输入输出流。

1、输入输出流的基本使用

输入输出流的头文件为 。在输入时,使用fscanf读取整数,使用fgets读取字符串,使用getchar或getchar_unlocked读取单个字符。在输出时,使用fprintf输出整数,使用fputs输出字符串,使用putchar或putchar_unlocked输出单个字符。

例4:输入两个整数并输出它们的和。多组数据。

#include

#include

using namespace std;

int main() {

  int a, b;

  while (fscanf(stdin, "%d%d", &a, &b) != EOF) {

    fprintf(stdout, "%d\n", a + b);

  }

  return 0;

}

在以上代码中,使用fscanf读取输入,使用fprintf输出结果。由于输入多组数据,使用while循环读取,EOF表示输入结束。

2、快速读写函数的使用

以上的输入输出流代码看起来有些繁琐,而且效率较低。可以使用快速读写函数实现更快的输入输出。

例5:输入N个整数并输出它们的和。多组数据。

#include

#include

using namespace std;

inline int read() {

  int x = 0, f = 1;

  char ch = getchar();

  while (ch < '0' || ch > '9') {

    if (ch == '-') f = -1;

    ch = getchar();

  }

  while (ch >= '0' && ch <= '9') {

    x = (x << 3) + (x << 1) + (ch ^ 48);

    ch = getchar();

  }

  return x * f;

}

inline void write(int x) {

  if (x < 0) {

    putchar('-');

    x = -x;

  }

  if (x >= 10) write(x / 10);

  putchar(x % 10 + '0');

}

int main() {

  int t = read();

  while (t--) {

    int n = read();

    int sum = 0;

    for (int i = 0; i < n; i++) {

      int x = read();

      sum += x;

    }

    write(sum);

    putchar('\n');

  }

  return 0;

}

在以上代码中,使用快速读写函数,将输入输出的效率较之前提高了很多。使用inline函数可以减少函数调用的时间,从而提高效率。

三、总结

在C++中,可以使用循环结构和输入输出流来实现多组数据的输入输出。循环结构包括for、while和do-while,在不同的题目中有不同的适用性。输入输出流可以使用快速读写函数,提高输入输出的效率。对于需要处理大量数据的竞赛或工程实践,输入输出的效率很重要,需要使用合适的方法来优化程序。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复