1.题目描述
数据分页,对于指定的页数和每页的元素个数,返回该页应该显示的数据。
- 输入描述:
第一行输入数据个数,第二行全部数据,第三行输入页数,第四行输入每页最大数据个数 - 输出描述:
输出该页应该显示的数据,超出范围请输出'超过分页范围' - 输入例子 1:
6 1 2 3 4 5 6 1 2
- 输出例子 1:
3 4
2.题目解析
总页数 = 数据个数/单页数据数
每页起始下标 = 页号*单页数据数
每页终止下标 = (页号+1)*单页数据数
所以,遍历页的起始下标与页的终止下标可以得到当前页的数据。
for(int i=页的起始下标;i!=页的终止下标 && i!=n;++i)
3.参考答案
#include <bits/stdc++.h>
using namespace std;
int main() {
int n = 0;
scanf("%d",&n);
int nums[n];
for(int i=0;i<n;++i){
scanf("%d",&nums[i]);
}
int page = 0; // 页码
int size = 0; // 每页显示数据个数
scanf("%d%d",&page,&size);
if(page*size >= n){
printf("超过分页范围\n");
}
for(int i= page*size;i<(page+1)*size;++i){
printf("%d\n",nums[i]);
}
}
#include <cstdio>
using namespace std;
int main(){
int n = 0; // 输入数据个数
scanf("%d",&n);
int data[n]; // 全部数据
for(int i=0;i!=n;++i){
scanf("%d",&data[i]);
}
int page_count = 0; // 页数
int page_max = 0; // 每页最大数据个数
scanf("%d%d",&page_count,&page_max);
if (page_count > n / page_max - 1) {
printf("超过分页范围");
}
for (int i = page_count * page_max;
i < page_count * page_max + page_max && i < n;
++i){
printf("%d\n",data[i]);
}
return 0;
}
网友评论