天梯赛准备——天梯赛L1(总结)
今天打完PTA了,还是太菜了。。。
把以前整理的关于PTA的心得发一下出来吧,希望以后有需要的朋友能够方便一点吧。
L1-035 情人节
字符串比较可以直接用等号,也可以用strcmp函数(==0为相同) 字符比较则也可以用等号
# include <bits/stdc++.h>
using namespace std;
int main()
{
	long long sum=0;
	string m,a,b,n;
	
	cin>>m;
	n=".";
	while(m!=n){
		sum++;
		if(sum==2) a=m;
		if(sum==14) b=m;
		cin>>m;
	}
	
	if(sum>=14) cout<<a<<" and "<<b<<" are inviting you to dinner...";
	else if(sum>=2&&sum<14) cout<<a<<" is the only one for you...";
	else cout<<"Momo... No one is for you ...";
	
	
	return 0;
}
L1-039 古风排版
1.中途变量出错以后进行改变,那么所有位置都要改变
2.’\0’和’ ’的显示是一样的,要注意,补空格的例子
3.数组定义要小心
4. 纠正一下带空格的字符串/字符输入
https://blog.csdn.net/circle2015/article/details/70880072
字符数组
(1)getline()
读入整行数据,使用回车键输入的换行符来确定输入结尾。
调用方法:cin.getline(str, len)//str储存输入行的数组名称,len读取的字符数
(2)cin.get(str,len)
读取一行输入,直至换行符
getline()将换行夫丢弃,get()讲换行符保留在输入序列里
string
(1)getline(cin,str)
scanf、cin碰到回车、空格和tab会自动结束
1)利用格式符“%[]”它的作用为扫描字符集合。Scanf(“%[^c]”,str); 其中“c”是一个具体的字符常量(包括控制字符)。当输入字符串时,字符“c”将被当作当前输入的结束符。利用此格式符就可以由编程者自己指定一个输入结束符。
可以尝试一下的代码
# include <bits/stdc++.h>
using namespace std;
int main()
{
	char* msg==NULL;
	msg=(char*)malloc(100*sizeof(char));
	scnaf("%[]^\n",msg);
	printf("%s",msg);
	
	return 0;
}
#  include <bits/stdc++.h>
using namespace std;
char c[1100][110];
int main()
{
	int n,s=0,d;
	string a;
	
	cin>>n;
	getchar();
	getline(cin,a);
	
/*	
	for(int i=0;i<1100;i++){
		for(int j=0;j<110;j++)
			c[i][j]=' ';
	}
	*/
	if(a.length()%n!=0) d=a.length()/n+1;
	else d=a.length()/n;
	//cout<<d<<" "<<a.length()<<endl;
	for(int i=d-1;i>=0;i--){
		for(int j=0;j<n;j++){
			if(s<a.length())c[j][i]=a[s++];
			else c[j][i]=' ';
			//cout<<i<<" "<<j<<c[i][j]<<endl;
		}
	}
	
//	cout<<s;
	for(int i=0;i<n;i++){
		if(i>0)cout<<endl;
		for(int j=0;j<d;j++){
			cout<<c[i][j];
		}
	//	cout<<endl;
	}
	return 0;
}
L1-043 阅览室
1.要注意几个坑点,如果同一本书在还没还书记录时有多次被借记录,取最后一次记录为准。
2.一本书在只借一次的情况下有多次还书记录,取最前面的一次还书记录,其余都是无效操作。
3.一本书也有可能被借还借还很多次。
4.用一个标记数组,借了标记为1,只有还的时候有借的记录才能计算,并且还要把标记数组释放。
# include <bits/stdc++.h>
using namespace std;
int main()
{
	int n,sh,b,bhh[1010],bmm[1010],e,ehh[1010],emm[1010];
	char jz[1010];
	int f[1010];
	long long r=0;
	double sum=0;
	
	cin>>n;
	
	memset(bhh,0,sizeof(bhh));
	memset(bmm,0,sizeof(bmm));
	memset(f,0,sizeof(f));
	for(int i=0;i<n;i++){
		cin>>sh;
		while(sh!=0){
			cin>>jz[sh];
			if(jz[sh]=='S'){
				cin>>bhh[sh];
				getchar();
				cin>>bmm[sh];
				f[sh]=1;
			}
			if(jz[sh]=='E'){
				cin>>ehh[sh];
				getchar();
				cin>>emm[sh];
				if(f[sh]==1){
					b=bhh[sh]*60+bmm[sh];
					e=ehh[sh]*60+emm[sh];
					//cout<<e-b<<endl;
					sum+=e-b;
					r++;
					f[sh]=0;
				}
			}
			//cout<<" "<<sh<<" "<<jz[sh]<<" "<<bhh[sh]<<":"<<bmm[sh]<<endl;
			cin>>sh;
			b=0,e=0;
		}
		
		if(sh==0){
			cin>>jz[sh];
			if(jz[sh]=='S'){
				cin>>bhh[sh];
				getchar();
				cin>>bmm[sh];
			}
			if(jz[sh]=='E') 
                     
                    
                