团体程序设计天梯赛-练习集(二)(string.reverse()函数用法、string.resize()函数用法、L1-041(*)、L1-039(*)、L1-032(*)、L1-028(*))

L1-041 寻找250 (10分)

https://pintia.cn/problem-sets/994805046380707840/problems/994805089657536512

#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
	int n,flag=0;
	int num=1;
	int value;
	while(scanf("%d",&n)!=EOF){   //这里还可以写成①cin>>n  ②~scanf("%d",&n)
		if(n==250&&flag==0)
		{
			value=num;
			flag=1;
		}
		num++;
	}
	cout<<value<<endl;
	return 0;
}

 

L1-039 古风排版 (20分)

https://pintia.cn/problem-sets/994805046380707840/problems/994805091888906240

#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main()
{
	int n,len=0,i,x,j;
	char chr[1100];
	memset(chr,0,sizeof(chr));
	cin>>n;
	getchar();  //这一步不要忘了
	while((chr[len]=getchar())!='\n') {len++;}
	if(len%n!=0) {
	for(i=0,x=len;i<n-len%n;i++) chr[x++]=' ';}
	else x=len;
	for(i=0;i<n;i++)
	{
		for(j=x/n-1;j>=0;j--)
		{
			printf("%c",chr[j*n+i]);
		}
		cout<<endl;
	 } 
	 return 0;
}

 

L1-032 Left-pad (20分)

https://pintia.cn/problem-sets/994805046380707840/problems/994805100684361728

法一:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
int main()
{
	int n,len;
	int i,j,k;
	char chr;
	char str[40000];  //开始定义为1000,两个测试点过不了
	cin>>n;
	cin>>chr;
	getchar();   //这句话老忘!!!
	cin.getline(str,40000);
	len=strlen(str);
	if(len>=n)
	{
		for(i=len-n;i<len;i++) printf("%c",str[i]);
		cout<<endl;
	}
	else if(len<n)
	{
		for(i=0;i<n-len;i++) printf("%c",chr);
		puts(str);
	}
	return 0;
}  

法二:

#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
	string s;
	char t;
	int n;
	cin >> n >> t;
	getchar();
	getline(cin,s);
	reverse(s.begin(), s.end());
	s.resize(n,t);//将字符串重新分配大小,如果过大使用指定的字符填充
	reverse(s.begin(), s.end());
	cout << s << endl;
  return 0;
}  

string.reverse()函数用法:https://blog.csdn.net/qq_40828914/article/details/81138117

string.resize()函数用法:resize调整容器中有效数据区域的尺寸,如果尺寸变小,原来数据多余的截掉。若尺寸变大,不够的数据用该函数第二个参数填充,影响size

 

L1-028 判断素数 (10分)

https://pintia.cn/problem-sets/994805046380707840/problems/994805106325700608

注意一下特判a[i]为1情况,此时为素数;

 

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
	int n;
	int i,j,k,a[12];
	cin>>n;
	for(i=0;i<n;i++) cin>>a[i];
	for(i=0;i<n;i++)
	{
		if(a[i]==1) puts("No");
		else{
		k=(int)sqrt((double)a[i]);
		for(j=2;j<=k;j++) 
		if(a[i]%j==0) break;
		if(j>k) puts("Yes");
		else puts("No");
	    }
	}
	return 0;
}

  

  

posted @ 2019-12-21 11:58  yyer  阅读(296)  评论(0编辑  收藏  举报