团体程序设计天梯赛-练习集(二)(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;
}
天晴了,起飞吧

浙公网安备 33010602011771号