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;
}