(一不小心考了0分,现在非常悲伤,写个总结)
P1055 ISBN 号码
1.定义一个整形index表示数位,用于和数字分别相乘然后index加一,计算出总和,代码:
for(int i=0;i<=10;i++){
if(n[i]!='-'){
sum+=(n[i]-'0')*index;
index++;
}
}
2.求出此时的识别码(%11)(注意识别码为10时要变为W)
if(sum==10) ch='X';
else ch=sum+'0';
3.判断识别码与数组的最后一位是否相等,相等则输出Right,否则把最后一位变为正确的识别码,然后输出,代码:
if(ch==n[12]) cout<<"Right"<<endl;
else{
n[12]=ch;
cout<<n;
}
B3798 梦熊培养计划
1.注意数组范围,防止数组越界
2.使用冒泡排序会超时,应使用sort方法
方法
1
:
sort(
起始地址,末尾地址
+1)
;
方法
2
:
sort(
起始地址,末尾地址
+1
,
cmp)
;
//cmp
是自定义的排序规则
sort
是默认升序排序的,如果需要自定义排序,可以写一个比较函数,用第二种方法
排序
3.本题使用结构体记录学生姓名和标准差
4.如果有多个人标准差相同,按照字典排序输出,比较字符串大小方法:
1:如果两个都是 string 类型,可以直接用>、<、= 来比较
例如:string s1="aa", s2="bb"; int res=s1<s2; //res=1
2:如果两个都是字符数组类型,可以使用 strcmp 方法
例如:char ch1[100]="abc", ch2[100]="123";
int res = strcmp(ch1, ch2); //res 为>0 的一个正整数