信息学奥赛一本通 2034:【例5.1】反序输出

本文讲解了如何使用C++实现数组的正向填充到下标0~n-1和下标1~n,并介绍了逆序遍历数组的方法。重点讨论了如何处理不确定数量的输入数据,以及在本地调试时的输入控制技巧。两种填充方法的代码示例清晰易懂,适合理解数组操作和输入处理的基础开发者。
摘要由CSDN通过智能技术生成

【题目链接】

ybt 2034:【例5.1】反序输出

【题目考点】

1. 数组填充

设数组a, 变化的下标ai,初值为0
例: int a[105], ai = 0;

方法1:填充到下标0~ai-1

将数值x填到数组中:a[ai++] = x;
ai表示:数组长度(数组中元素的个数),数组待填充的位置。
正向遍历写法:for(int i = 0; i < ai; ++i)

方法2:填充到下标1~ai

将数值x填到数组中:a[++ai] = x;
ai表示:数组长度(数组中元素的个数),数组最后一个元素的位置。
正向遍历写法:for(int i = 1; i <= ai; ++i)

2. 逆序遍历数组
3. 输入不确定个数的数字
while(cin >> a)
{
    //...
}

while(scanf("%d", &a) != EOF))
{
    //...
}

OJ上实际是从文件输入,文件末尾是EOF(end of file,实际是-1)。当读到文件末尾时cin >> a会返回false,scanf("%d", &a)会返回EOF,让循环跳出。
这样的程序在本地调试时,输入n个数据后不会停止。此时可以按Ctrl+Z,控制台中出现^Z后,按回车,这样可以结束输入,看到程序运行的结果。

【题解代码】

解法1:填充到下标0~n-1
#include <bits/stdc++.h>
using namespace std;
int main() 
{
	int a[105], ai = 0, x;
    while(cin >> x)
    	a[ai++] = x;
	for(int i = ai - 1; i >= 0; --i)
		cout << a[i] << ' ';
    return 0;
} 
解法2:填充到下标1~n
#include <bits/stdc++.h>
using namespace std;
int main() 
{
	int a[105], ai = 0, x;
    while(cin >> x)
    	a[++ai] = x;
	for(int i = ai; i >= 1; --i)
		cout << a[i] << ' ';
    return 0;
} 
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值