任艺宸 • 2个月前
#include<iostream> // cin\cout\endl
#include<cstdio> //scanf()\printf()
#include<cstring> // strcpy()\strcat()\strcmp()\strlen()\memset()
#include<algorithm>
#include<cmath> //sqrt()\pow()\abs()\ceil()\floor()\max()\min()
using namespace std;
struct gd{
string m;
double j;
}a[11];
bool cmp(gd x,gd y)
{
return x.j>y.j;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin.get();
getline(cin,a[i].m);
cin>>a[i].j;
}
sort(a,a+n,cmp);
printf("%.2lf",a[0].j);
cout<<","<<a[0].m<<endl;
printf("%.2lf",a[n-1].j);
cout<<","<<a[n-1].m<<endl;
return 0;
}
评论:
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int x,int y){
return x>y;
}
int main(){
//将输入的n个数进行从小到大的排序
int n,a[101];
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
//冒泡排序
/*
int t;
for(int i=1;i<n;i++)
for(int j=1;j<=n-i;j++)
if(a[j]>a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
*/
//选择排序
/*
int min,t;
for(int i=1;i<n;i++){
min=i;
for(int j=i+1;j<=n;j++){
if(a[min]>a[j])
min=j;
}
t=a[i];
a[i]=a[min];
a[min]=t;
}
*/
//插入排序
/*
int t,j;
for(int i=2;i<=n;i++){
t=a[i];
for( j=i;j>1;j--){
if(a[j-1]>t)
a[j]=a[j-1];
else
break;
}
a[j]=t;
}
*/
//sort函数排序
//默认从小到大
//如需从大到小 需要自定义排序方法的函数
sort(a+1,a+n+1,cmp);
//参数1为开始的位置,参数2为结束位置(a+n+1,排到n,不包括n+1),参数3为自定义排序函数
//输出
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}
文件读写(必须掌握)
#include<iostream>
using namespace std;
int main(){
int a,b;
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
cin>>a>>b;
cout<<a+b;
fclose(stdin);
fclose(stdout);
return 0;
}
头文件:#include <fstream>
核心三步骤:定义流对象 → 打开文件 → 读写操作 → 关闭文件
---
1. 写入文件(ofstream)
```cpp
#include <fstream>
using namespace std;
int main(){
ofstream fout; // 定义输出流对象
fout.open("data.txt"); // 打开文件(不存在则创建)
fout << "Hello " << 123 << endl; // 写入数据
fout.close(); // 关闭(务必写)
}
```
---
2. 读取文件(ifstream)
```cpp
#include <fstream>
#include <iostream>
using namespace std;
int main(){
ifstream fin;
fin.open("data.txt");
int x;
string s;
fin >> s >> x; // 按空格/换行分隔读取
fin.close();
cout<< s << x <<endl;
}
```
追加ios::app
#include <fstream>
using namespace std;
int main(){
ofstream fout; // 定义输出流对象
fout.open("data.txt",ios::app); // 打开文件(不存在则创建)
fout << "Hello " << 123 << endl; // 写入数据
fout.close(); // 关闭(务必写)
}
判断文件是否打开成功(必考):
```cpp
if(!fin) {
cout << "文件打开失败!";
return 0;
}
```
---
3. 读取到文件末尾(eof())
当不确定文件里有多少数据时,用 while(!fin.eof()) 循环读取:
//将文件中的分数读取算出平均分
#include <fstream>
#include <iostream>
using namespace std;
int main(){
ifstream fin;
fin.open("data.txt");
int score, sum = 0, cnt = 0;
while(!fin.eof()) {
fin >> score;
if(fin.fail()) break; // 防止读到末尾多读一次
sum += score;
cnt++;
}
cout << "平均分:" << sum * 1.0 / cnt;
}