cin读取一行以空格间隔的整数并将其保存到数组中

网易的笔试第一题的输入给我搞了老半天,真的是基础不牢地动山摇!!!
引以为戒

#include <iostream>
#include <cstdio>
#include <vector>

using namespace std;
int main() {
	vector<int> arr;
	int t;
	int M;
	int ret = 0;



	while (cin >> t)
	{
		arr.push_back(t);
		char ch = getchar();
		if (ch == '\n')  break;
	}
///




	cin >> M;
	if (arr.size()<2) cout << ret;

	for (int i = 0; i<arr.size() - 1; ++i)
		for (int j = i + 1; j<=arr.size() - 1; ++j)
		{
			if ((arr[i] + arr[j]) <= M)
				++ret;
		}
	cout << ret;


	return 0;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是中文回复: 首先,您需要从键盘输入方阵的行数n,然后再输入n行n列的整数,将它们保存到一个名为a的数组中。最后,您需要计算方阵中次对角线元素的平均值,并将结果输出。 具体的实现方法可以是: 1. 首先,您需要定义一个名为a的二维数组,用于保存输入的方阵数据。可以使用以下代码: int n; // 方阵的行数 cin >> n; int a[n][n]; // 定义二维数组 // 从键盘输入方阵数据 for (int i = ; i < n; i++) { for (int j = ; j < n; j++) { cin >> a[i][j]; } } 2. 接下来,您需要计算次对角线元素的平均值。次对角线元素是指从第一行第n列开始,到第n行第一列结束的所有元素。可以使用以下代码: int sum = ; // 次对角线元素的和 for (int i = ; i < n; i++) { sum += a[i][n-i-1]; // 计算次对角线元素的和 } double avg = (double)sum / n; // 计算平均值 3. 最后,您需要将平均值输出。可以使用以下代码: cout << "次对角线元素的平均值为:" << avg << endl; 希望这个回复能够帮助您解决问题。如果您还有其他问题或需要进一步的帮助,请随时联系我。 ### 回答2: 这个问题可以用以下步骤解决: 1. 首先,从键盘读取方阵的行数n。 ```python n = int(input("请输入方阵的行数:")) ``` 2. 接着,我们需要定义一个二维列表a来保存方阵中的元素。我们可以使用嵌套的循环来读取n行n列的整数并将它们保存到二维列表a中。 ```python a = [] for i in range(n): row = input("请输入第%d行的%d个整数,用空格隔开:" % (i+1, n)).split() a.append([int(x) for x in row]) ``` 3. 现在,我们可以计算次对角线元素的平均值。次对角线上的元素是a[i][n-i-1],其中i从0到n-1。我们可以使用一个循环来遍历次对角线上的所有元素,并计算它们的平均值。 ```python sum = 0 count = 0 for i in range(n): sum += a[i][n-i-1] count += 1 average = sum / count ``` 4. 最后,我们输出平均值即可。 ```python print("方阵中次对角线元素的平均值为:%.2f" % average) ``` 完整的代码如下所示: ```python n = int(input("请输入方阵的行数:")) a = [] for i in range(n): row = input("请输入第%d行的%d个整数,用空格隔开:" % (i+1, n)).split() a.append([int(x) for x in row]) sum = 0 count = 0 for i in range(n): sum += a[i][n-i-1] count += 1 average = sum / count print("方阵中次对角线元素的平均值为:%.2f" % average) ``` 如果输入一个3行3列的方阵,其元素为1、2、3、4、5、6、7、8、9,则程序的运行结果如下所示: ``` 请输入方阵的行数:3 请输入第1行的3个整数,用空格隔开:1 2 3 请输入第2行的3个整数,用空格隔开:4 5 6 请输入第3行的3个整数,用空格隔开:7 8 9 方阵中次对角线元素的平均值为:5.00 ``` ### 回答3: 这道题主要是需要对输入的方阵进行处理。我们可以先从键盘输入方阵的行数n,然后定义一个nxn的数组a用于保存输入的整数。 接下来,可以使用一个双重循环,逐行逐列读入数据并保存到数组a中。可以使用下面的代码实现: ``` int n; scanf("%d", &n); int a[n][n]; for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ scanf("%d", &a[i][j]); } } ``` 读入完成后,我们需要对次对角线的元素进行求和并计算平均值。次对角线上的元素可以通过行列下标之和等于n-1的元素来获取,可以使用一个累加器对其进行求和。最后再除以n即可得到平均值。可以使用下面的代码实现: ``` int sum = 0; for(int i=0; i<n; i++){ sum += a[i][n-i-1]; } double avg = 1.0 * sum / n; printf("%.2f", avg); ``` 其中,sum为累加器,初始化为0,循环逐行读取次对角线上的元素并累加到sum中。最后计算平均值avg,需要将sum强制转换为double类型,再除以n。最终的结果保留两位小数并输出即可。 完整代码如下: ``` #include <stdio.h> int main(){ int n; scanf("%d", &n); int a[n][n]; for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ scanf("%d", &a[i][j]); } } int sum = 0; for(int i=0; i<n; i++){ sum += a[i][n-i-1]; } double avg = 1.0 * sum / n; printf("%.2f", avg); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值