中软国际入职机试题
1 邮箱地址合法性验证,合法输出字符“1”,不合法输出字符“0”
合法条件:
A 仅包含一个“@”。
B 最后三位必须是“.com”
C 字符直接没有空格
B 有效数组是1~9、a~z、A~Z、“.”、“@”、“_”
程序
#include
int main()
{
char input[100],out=1;
int len,i,flag=0,flag1=0,flag2=0,flag3=0,ttt=0;
scanf("%s",input);
len=strlen(input);
if((input[len-1]=='m')&&(input[len-2]=='o')&&(input[len-3]=='c')&&(input[len-4]=='.'))
{
for(i=0;i
{
if(input[i]=='@')ttt++;
if(input[i]==' ')
{
flag1=1;
}
if((((input[i]>='1')&&(input[i]<='9'))||((input[i]>'a')&&(input[i]'A')\
&&(input[i]>'Z'))||(input[i]=='.')||(input[i]=='@')||(input[i]=='_'))==0)
{
flag2=1;
}
}
if(ttt!=1)
{
flag3=1;
}
}
else
{
flag=1;
}
if(flag==1||flag3==1||flag1==1||flag2==1)
{
out='0';
}
else
{
out='1';
}
printf("%c",out);
}
2 m个相同苹果分到n个相同的篮子里。允许有的篮子为空,一共有多少种分法?
其中:0<=m<=10,0<=n<=10;\
#include
int func(int m,int n)
{
int a=0,i;
if(n<=1) //如果没有篮子,只有一种方法“”,或者有一个篮子,也是一种方法
{
return 1;
}
for(i=m;i>=0;i-=n)
{
a+=func(i,n-1);
}
return a;
}
int main()
{
int M=3,N=3;
scanf("%d%d",&M,&N);
printf("%d",func(M,N));
}
3 手机电池余量显示
#include
int func(int n)
{
int f1;
if(n==0)return 0;
else if((n<=10)&&(n>=1))
{
f1=1;
}
else if((n<=20)&&(n>10))
{
f1=2;
}
else if((n<=30)&&(n>20))
{
f1=3;
}
else if((n<=40)&&(n>30))
{
f1=4;
}
else if((n<=50)&&(n>40))
{
f1=5;
}
else if((n<=60)&&(n>50))
{
f1=6;
}
else if((n<=70)&&(n>60))
{
f1=7;
}
else if((n<=80)&&(n>70))
{
f1=8;
}
return f1;
}
int main()
{
char a1[13]="|----------|",a2[13]="|++++++++++|";
char d1[13]="|++++++++++|",d2[13]="|----------|",d3[16]="===============";
int c,i,m;
while(1)
{
scanf("%d",&m);
m=10-func(m);
printf("%s\n",d1);
for(i=0;i<=m-1;i++)
{
printf("%s\n",a1);
}
for(i=0;i
{
printf("%s\n",a2);
}
printf("%s\n",d2);
printf("%s\n",d3);
}
}
4 将无符号数的指定比特进行置1.输入数字n(31bit,无符号整形),置位数m(0<=m<=31)。
输入:无符号数,指定