陣列 題目

黄晟Dog發表於2024-03-23

1.2034:【例5.1】反序輸出

【題目描述】
輸入n
個數,要求程式按輸入時的逆序把這n
個數列印出來,已知整數不超過100
個。也就是說,按輸入相反順序列印這n
個數。

【輸入】
輸入一行共有n
個數,每個數之間用空格隔開。

【輸出】
如題要求:一行,共有n
個數,每個數之間用一個空格隔開。

【輸入樣例】
1 7 3 4 5
【輸出樣例】
5 4 3 7 1

這道題的難點在於什麼時候停止輸入,用scanf();
擴充:
scanf()用法:

int a;
while(scanf("%d",&a)==1)
{

}

#include<iostream>
using namespace std;
int main()
{
	int a[100],b,n=0;
	while(scanf("%d",&b)==1)
	{
		a[n++]=b;
	}
	for(int i=n-1;i>=0;i--)
	{
		cout<<a[i]<<" ";
	}
	return 0;
}

2.2035:【例5.2】平移資料

這道題當初把我坑慘了……

【題目描述】
將a
陣列中第一個元素移到陣列末尾,其餘資料依次往前平移一個位置。

【輸入】
第一行為陣列a
的元素個數;

第二行為n
個小於1000
的正整數。

【輸出】
平移後的陣列元素,每個數用一個空格隔開。

【輸入樣例】
10
1 2 3 4 5 6 7 8 9 10
【輸出樣例】
2 3 4 5 6 7 8 9 10 1

這道題用到了備份以及什麼域,反正不重要

#include<iostream>
using namespace std;
int main()
{
	int n,bf;
	cin>>n;
	int a[n];
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	bf=a[0];
	for(int i=1;i<n;i++)
	{
		a[i-1]=a[i];
	}
	a[n-1]=bf;
	for(int i=0;i<n;i++)
	{
		cout<<a[i]<<" ";
	}
	
	return 0;
}

相關文章