T217购买文具

考点:鸡兔同笼

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,sum=0;
	cin>>n;
	n=n*10;
	for(int x=1;x<=(n-3)/8;x++){
		for(int y=1;y<=(n-9)/2;y++){
			for(int z=1;z<=(n-10);z++){
				if(x+y+z>30&&x*8+y*2+z==n){
					sum++;
				}
			}
		}
	}
	cout<<sum;
	return 0;
}

使用枚举-循环嵌套,解决问题

T237字符串解压

考点:string字符串的使用,判断数字的代码,归零string字符串

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	string s,a;
	cin>>s;
	int len=s.size(),num=0;
	for(int i=0;i<len;i++){
		while(isdigit(s[i])&&i<len){
			num=num*10+s[i]-'0';
			i++;
		}
		while(!isdigit(s[i])&&i<len){
			a+=s[i];
			i++;
		}
		for(int j=0;j<num;j++){
			cout<<a;
		}
		num=0;
		i--;
		a="";
	}
	return 0;
}

使用string字符串解题,判断数字或字母后输出

T253找谁的身高比全家平均身高高

考点:求平均值和对平均值进行比较

代码:

#include<bits/stdc++.h>
using namespace std;
struct tall{
	int t,num;
};
tall a[15];
int main(){
	int n;
	double ave;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].t;
		a[i].num=i;
		ave=ave+a[i].t;
	}
	cout<<"AVE"<<"=";
	ave=ave/n;
	cout<<fixed<<setprecision(1)<<ave<<endl;
	for(int i=1;i<=n;i++){
		if(a[i].t>ave){
			cout<<a[i].num<<":"<<a[i].t<<" ";
		}
	}
	return 0;
}

先找出平均数,在和其他数进行比较

T260优秀成绩的平均分

考察点:先排序,找出前五名

代码:

#include<bits/stdc++.h>
using namespace std;
struct stu{
	double ch;
};
bool cmp(stu a,stu b){
	return a.ch>b.ch;
}
stu p[110];
int main(){
	double st=0;
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>p[i].ch;
	}
	sort(p,p+n,cmp);
	for(int i=0;i<5;i++){
		st=st+p[i].ch;
	}
	st=st/5;
	cout<<fixed<<setprecision(1)<<st;
	return 0;
}

用sort排序,找出前五个后,找计算平均值

做题时的问题:在用string字符串时,如果和循环有关系,要用s.size()求len的值,循环时有的题目要把string字符串清空,用__="";解决。
鸡兔同笼要使用枚举解决问题。

新学知识:双指针,定义两个int类型的数,例如i,j。i在原点,j去寻找目标,找到之后使用双指针,之后i=j,再去寻找下一个目标。struct可以解决有许多的数据,用普通的方法无法解决,可以使用struct解决。sort排序,默认从小到大,cmp自定义排序,主函数外用bool类型定义cmp的排序规则。

编程错误的解决方法:把不知道的数输出,寻找原因。