读取字符数组包括换行:
cin.getline(字符数组名,长度)
获取字符数组长度:
strlen(字符数组名)
字符数组常见方法:
strcpy(目标数组,原数组) 复制数组
strcat(str1,str2) 连接两个数组
strcmp(str1,str2) 字符数组的比较
字符串(包括空格):
getline(cin,字符串名)
字符串常见方法:
str.length() 获取字符串长度(str.size())
str.empty() 判断字符串是否为空
str.clear() 清空字符串
str.find("sub") 查找子串
str.insert(pos,"插入数据") 字符串插入
str.replace(pos,len,"新的字符串") 代替字符串
str.erase(pos,len) 删除指定位置,指定长度子串
通用:
isdigit(ch) 判断单个字符是否为数字
isupper(ch) 判断单个字符是否为大写
islower(ch) 判断单个字符是否为小写
结构体:
struct 结构体名{
//例如
int 某个变量
int chengji;
int shuxue;
int yuwen;
int zongfen;
类型都可以:如:chair,string(需要库)
}
声明单个:
结构体名 单个名称;
如:
结构体名 student;
结构体名 student1;
声明单个2:
直接在结构体声明的第二个大括号后声明
如:
struct 结构体名{
//例如
int 某个变量
int chengji;
int shuxue;
int yuwen;
int zongfen;
类型都可以:如:chair,string(需要库)
}student,student1,student2,......;
声明单个列表:
结构体名 单个名称[个数];
如:
结构体名 student[10];
声明单个列表2:
直接在结构体声明的第二个大括号后声明
如:
struct 结构体名{
//例如
int 某个变量
int chengji;
int shuxue;
int yuwen;
int zongfen;
类型都可以:如:chair,string(需要库)
}student[10],......;
输入:
cin>>student.某个变量名>>......;
例如:
cin>>student.chengji;
将一个数据是另两个的总合:
单个:
单个名称.某个变量名 = 单个名称.某个变量名+单个名称.某个变量名;
例如:
student.zongfen=student.shuxue+student.yuwen;
列表:
单个名称.某个变量名[n] = 单个名称.某个变量名[n]+单个名称.某个变量名[n];
例如:
student[1]=student[2]+student[0];
输出:
单个:
cout<<单个名称.某个变量名;
例如:
cout<<student.zongfen;
#include<bits/stdc++.h>
using namespace std;
struct st{
int id ;// 学生的id
int cs; // 语文
int mt; // 数学
int eg; // 英语
int total;//总分
}a,arr[100]; // a 单名学生,arr 多名学生
bool cmp(st s1,st s2){ // 自定义函数 (两名学生)
if(s1.total!=s2.total){
return s1.total>s2.total;
}
if(s1.cs!=s2.cs){
return s1.cs>s2.cs;
}
return s1.id<s2.id;
}
int main(){
int n;
cin>>n;
for(int i = 1;i<=n;i++){
arr[i].id = i; // 每名学生打上编号
cin>>arr[i].cs>>arr[i].mt>>arr[i].eg;
arr[i].total = arr[i].cs+arr[i].mt+arr[i].eg;
}
sort(arr+1,arr+n+1,cmp);
for(int i = 1;i<=n;i++){
cout<<arr[i].cs<<" "<<arr[i].mt<<" "<<arr[i].eg<<endl;
}
}