题意需求:页数小且 页数相加小于1000的几本书 了解需求之后就是实现排序 然后从最小的开始累加 加一个判断一次记录书本数
```c
#include<stdio.h>
int main(){
int a[100];
int book;
int temp;
int num=0;
scanf("%d",&book);
for(int i = 0;i<book;i++){
scanf("%d",&a[i]);
}
for(int i = 0;i<book;i++){
for(int j = i+1;j<book;j++){
if(a[i]>a[j]){
temp = a[i];
a[i]=a[j];
a[j] = temp;
}
}
}
for(int i = 0;i<book;i++){
printf("%d ",a[i]);
}
printf("\n");
temp = 0;//这里把temp当数组下标用
while(temp<book){
num=num + a[temp];
if(num>1000) break;
else temp++;
}
printf("可以带%d本",temp);
}
```
把输入的页数从小到大排序,然后循环从 a[0] 开始一个一个加起来,sum+=a[i]; 之后判断 if(sum>1000)break; 后面加个 k++;代表几本书
int n,sum=0;k=0;
scanf("%d",&n);//关于n的范围你自己加上去把
for(int i=0;i<n;i++)
scanf("%d ",&a[i]);//注意后面带空格
//排序的语句你自己写吧
for(i=0;i<n;i++)
{
sum+=a[i];
if(sum>1000)
break;
k++;
}
printf("最多可以带%d本书\n",k);