A,万众瞩目的你
将大写字母转换为小写字母,可以根据ASCII值,大写字母ASCII值比小写字母小32,从而完成转换。
#include<stdio.h>
#include<string.h>
int main()
{
char str[1010];
gets(str);
int n=strlen(str);
for(int i=0;i<n;i++)
{
if(str[i]<='Z'&&str[i]>='A')
{
str[i]=str[i]+32;
}
}
printf("%s",str);
return 0;
}
或者cin读入字符串
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
char str[1010];
cin>>str;
int n=strlen(str);
for(int i=0;i<n;i++)
{
if(str[i]<='Z'&&str[i]>='A')
{
str[i]=str[i]+32;
}
}
printf("%s",str);
return 0;
}
当然,你也可以通过使用strlwr函数完成,由于oj上没办法使用此函数成功提交,就不再赘述了,大家可以自己在编译器上试一试。
//??//还有点小问题,在这个oj上选c提交可以用gets,但是选c++不能用gets。//??//
B,无比幸运的你
只需将输入的n个数字进行判断,若同时含有5和2,输出“我好开心呀”;反之输出“呜呜呜”。
#include<iostream>
#include<algorithm>
using namespace std;
int n;
int a[55];
int main()
{
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
int x=0,y=0;
for(int i=0;i<n;i++)
{
if(a[i]==5) x=1;
if(a[i]==2) y=1;
}
if(x==1&&y==1) cout<<"我好开心呀"<<endl;
else cout<<"呜呜呜"<<endl;
return 0;
}
C,独一无二的你
简单思维题,首先明白一点:每次操作都会减少两个元素,这个数组里的元素个数改变,但是总个数的奇偶不变,比如说本来8个数,8为偶数,进行一次操作减少两个数,变成6个,6仍然为偶数。
那么,个数的奇偶性与答案有什么关系呢??
假设本来数组有n个元素,x为这个数组中不重复元素的个数,那么如果x与n的奇偶性相同,我通过操作最多可以保留下x个不同的元素;反之,奇偶性不同的话我最多只能保留x-1个不同的元素,大家理解一下,不懂的话建议举个例子自己试一下就明白了。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--) //t组测试数据
{
int n,c=0;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n); //对数组进行排序
for(int i=0;i<n-1;i++)
{
if(a[i]!=a[i+1])
c++;
}
c++;
//if((n-c)%2==0) 或者
if((n%2==0&&c%2==0)||(n%2==1&&c%2==1))
cout<<c<<endl;
else
cout<<c-1<<endl;
}
return 0;
}
D,自信满满的你
输入n个数,求出这n个数的中位数。
首先,对这些数排序,根据小学知识可以求得中位数。
唯一需要注意的就是,如果为小数需要保留一位小数;若结果为整数,不需要保留小数位。
#include<iostream>
#include<algorithm>
using namespace std;
int n;
int a[110];
int main()
{
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
if(n%2!=0)
{
printf("%d",a[n/2]);
}
else if(n%2==0)
{
if((a[n/2-1]+a[n/2])%2==0) //中间两个数的和可以整除2
{
printf("%d",(a[n/2-1]+a[n/2])/2);
}
else //中间两个数的和无法整除2
{
printf("%.1f",(double)(a[n/2-1]+a[n/2])/2);
}
}
return 0;
}
当然,这里仅仅展示了一种方法,你也可以通过其他的方法来判断结果是不是小数,需不需要保留一位小数。
E,心中有光的你
没错,跟大家想的一样,gmf学长才是最卷的那个人!!!
#include<stdio.h>
int main(){
printf("gmf");
return 0;
}
F,满怀热忱的你
两个时间点,求中间经过了几个小时,几分,没什么难的,直接减就完事了。
唯一需要注意的就是,当第二个时间点的分钟小于第一个时间点的分钟。这肯定难不倒聪明的你!
#include<iostream>
#include<algorithm>
using namespace std;
int a,b,c,d;
int main()
{
cin>>a>>b>>c>>d;
int x=c-a,y=d-b;
if(y<0)
{
x--;
y+=60;
}
cout<<x<<" "<<y;
return 0;
}
以上就是关于此次的题解,以上代码仅供参考,答案不唯一,切勿照搬照抄!!!