错题1章节六 T015T015

错因:不会字符串转整型的方法.

正确思路:首先只有两种情况要搜查,通过字符串第一项来判断为年龄还是酒类,之后年龄用stoi()函数转型,酒类只需判断是否在列表内即可.

参考代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	string s,x[11]={"ABSINTH","BEER","BRANDY","CHAMPAGNE","GIN","RUM","SAKE","TEQUILA","VODKA","WHISKEY","WINE"};
	int n,sum=0,ans=0;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>s;
		if(s[0]>='0'&&s[0]<='9'){
			ans=stoi(s);
			if(ans<18){
				sum++;
			}
		}else{
			for(int i=0;i<11;i++){
				if(s==x[i]){
					sum++;
				}
			}
		}
	}
	cout<<sum;
	return 0;
}

错题2章节六 T048T048

错因:没有想通,实际上根本不要去前导零。

正确思路:算出实际长度后,比较,哪个大就哪个,一样的话逐位为比较。

参考代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	string a,b;
	cin>>a;
	cin>>b;
	int la =a.size(),lb =b.size();
	int i=0,j=0;
	while(a[i]=='0')i++;
	while(b[j]=='0')j++;
	la-=i;lb-=j;
	if(la>lb){
		cout<<'>';
		return 0;
	}
	if(la<lb){
		cout<<'<';
		return 0;
	}
	for(;i<a.size();i++,j++){
		if(a[i]>b[j]){
			cout<<'>';
			return 0;
		}
		if(a[i]<b[j]){
			cout<<'<';
			return 0;
		}
	}
	cout<<'=';
	return 0;
}

错题3章节六 T063T063

正确思路: