【汇顶科技190826线上笔试(字符重组+最大公约)】

【汇顶科技2020届线上笔试-0826】
1:字符串重新排列,要求大写字母先排列,大写字母排列结束后小写字母排列,然后是数字,最后是其他字符。
要求排列后的大写字母、小写字母、数字等均保持在原来字符转中出现的顺序不变。
例如:
输入:ASDAs89=-3dD
输出:ASDADsd893=-
2:求输入的两个数的最大公约数
例如:
输入:12 6
输出:6
解答:
1:鄙人献上一段自己写的很不好的代码(40%),见笑了,真心大佬来赐教!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void str(char *s)
{
int i,j=0,k=0,m=0,n,d=0,p=0,len;
char news1[100];
char news2[100];
char news3[100];
char news4[100];
len=strlen(s);
for(i=0;i<len;i++)
{
if(s[i]>='A'&& s[i]<='Z') 
{
news1[j++]=s[i];
}
else if(s[i]>='a'&& s[i]<='z') 
{
news2[k++]=s[i];
}
else if(s[i]>='0'&& s[i]<='9') 
news3[m++]=s[i];
else 
news4[b++]=s[i];
}
for(i=j,n=0;i<j+k,n<k;i++,n++)
{
news1[i]=news2[n];
}
for(i=j+k,p=0;i<j+k+m,p<m;i++,p++)
{
news1[i]=news3[p];
}
for(i=j+k+m,d=0;i<j+k+m+b,d<b;i++,d++)
{
news1[i]=news4[d];
}
s=news1;
}
int main(void)
{

char s[100];
scanf("%s", s);
str(s);
printf("%s\n", s);

return 0;
}

2:不知道为什么只能通过80%
#汇顶科技##笔试题目#
全部评论

相关推荐

ALEX_BLX:虽然说聊天记录不可信,不过这个趋势确实如此但我觉得也要想到一点就是卷后端的人里真正有“料”的人又有多少,我说的这个料都不是说一定要到大佬那种级别,而是就一个正常的水平。即使是现在也有很多人是跟风转码的,2-3个月速成后端技术栈的人数不胜数,但今时不同往日没可能靠速成进大厂了。这种情况就跟考研一样,你能上考场就已经打败一半的人了
点赞 评论 收藏
分享
评论
2
9
分享

创作者周榜

更多
牛客网
牛客企业服务