中软国际入职机精彩试题.docx
《中软国际入职机精彩试题.docx》由会员分享,可在线阅读,更多相关《中软国际入职机精彩试题.docx(17页珍藏版)》请在冰豆网上搜索。
中软国际入职机精彩试题
1地址合法性验证,合法输出字符“1”,不合法输出字符“0”
合法条件:
A仅包含一个“”。
B最后三位必须是“.”
C字符直接没有空格
B有效数组是1~9、a~z、A~Z、“.”、“”、“_”
程序
#include
intmain()
{
charinput[100],out=1;
intlen,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]<'z'))||((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);
}
2m个相同苹果分到n个相同的篮子里。
允许有的篮子为空,一共有多少种分法?
其中:
0<=m<=10,0<=n<=10;\
#include
intfunc(intm,intn)
{
inta=0,i;
if(n<=1)//如果没有篮子,只有一种方法“都没有”,或者有一个篮子,也是一种方法
{
return1;
}
for(i=m;i>=0;i-=n)
{
a+=func(i,n-1);
}
returna;
}
intmain()
{
intM=3,N=3;
scanf("%d%d",&M,&N);
printf("%d",func(M,N));
}
3手机电池余量显示
#include
intfunc(intn)
{
intf1;
if(n==0)return0;
elseif((n<=10)&&(n>=1))
{
f1=1;
}
elseif((n<=20)&&(n>10))
{
f1=2;
}
elseif((n<=30)&&(n>20))
{
f1=3;
}
elseif((n<=40)&&(n>30))
{
f1=4;
}
elseif((n<=50)&&(n>40))
{
f1=5;
}
elseif((n<=60)&&(n>50))
{
f1=6;
}
elseif((n<=70)&&(n>60))
{
f1=7;
}
elseif((n<=80)&&(n>70))
{
f1=8;
}
returnf1;
}
intmain()
{
chara1[13]="|----------|",a2[13]="|++++++++++|";
chard1[13]="|++++++++++|",d2[13]="|----------|",d3[16]="===============";
intc,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<(10-m);i++)
{
printf("%s\n",a2);
}
printf("%s\n",d2);
printf("%s\n",d3);
}
}
4将无符号数的指定比特进行置1.输入数字n(31bit,无符号整形),置位数m(0<=m<=31)。
输入:
无符号数,指定bit位
输出:
指定的bit位被置1的值
例如:
输入8917输出1019
#include
intmain()
{
unsignedintc,tmp;
unsignedchard;
while
(1)
{
scanf("%d%d",&c,&d);
if((d>=0)&&(d<=31))
{
tmp=c;
tmp&=~(1<tmp|=1<c=tmp;
printf("%d",c);
}
else
{
printf("%s","inputerror");
}
}
}
5输入一个字符串。
交换前后顺序后再输出。
#include
intmain()
{
chara[100],b[100];
intlen,i;
while
(1)
{
scanf("%s",a);
len=strlen(a);
for(i=len;i>=0;i--)
{
b[len-i]=a[i-1];
}
printf("%s\n",b);
}
}
6输入一个同学各科的高考成绩,计算出他的总成绩和平均成绩,共4个科目。
每个成绩围0~150,无效分数不计算在总分数(但科目永远是4课)
#include
intmain()
{
inta1,a2,a3,a4,sum,aver;
while
(1)
{
scanf("%d%d%d%d",&a1,&a2,&a3,&a4);
if((a1>=0)&&(a1<=150)&&(a2>=0)&&(a2<=150)&&(a3>=0)&&(a3<=150)&&(a4>=0)&&(a4<=150))
{
sum=a1+a2+a3+a4;
aver=sum/4;
printf("%d%d\n",sum,aver);
}
}
}
7找众数。
输入10个整形,输出10个整形中的众数。
#include
intmain()
{
inta[10],b[10]={1,1,1,1,1,1,1,1,1,1},i=0,j,max=0;;
while
(1)
{
for(i=0;i<10;i++)//输入个数
{
scanf("%d",&a[i]);
}
//把个数每个数出现的次数存到b[i]中
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if((a[i]==a[j])&&(b[i]!
=0))
{
b[i]++;
b[j]=0;
}
}
}
//求出b[i]中的最大值
max=b[0];
for(i=1;i<10;i++)
{
max=(max>b[i])?
max:
b[i];
}
//把b[i]中最大值对应的a[i]中的数字输出
for(i=0;i<10;i++)
{
if(b[i]==max)
{
printf("%d",a[i]);
}
}
}
}
8求两个数的最大公倍数,最大公约数。
A最大公约数求法:
1>m和n,如果m>n,k=m%n(若m2>如果k==0,则n为最大公约数
3>若k不等于0,m=n,n=k,再执行1>
B最大公倍数求法:
m和n,w=m*n/最大公约数
#include
intfunc(intm,intn)
{
intt,g;
if(m{
t=m;
m=n;
n=t;
}
g=m%n;
if(g!
=0)
{
m=n;
n=g;
returnfunc(m,n);
}
returnn;
}
intmain()
{
inta1,a2,s1,s2;
while
(1)
{
scanf("%d%d",&a1,&a2);
s1=func(a1,a2);
s2=a1*a2/s1;
printf("最大公约数:
%d最小公倍数%d\n",s1,s2);
}
}
9求字符种类计数。
字符包括:
”a~z”,”A~Z”,0~9。
输入的字符长度不超过20个,不同字符总数不超过10个。
输入:
字符串长度,字符串。
输出:
字符种类个数。
#include
voidmain()
{
chara,c,*p,tt[21];
intb,i,j,rr[21],out=0;
while
(1)
{
for(i=0;i<20;i++)rr[i]=1;
scanf("%d",&b);//先输入个数b
//输入间隔符,限定“,”或者“”
a=getchar();
if((a==',')||(a==''))
{
for(i=0;i
{
a=getchar();
//判定字符是不是满足要求
if((a>='a')&&(a<='z')||(a>='A')&&(a<='Z')||(a>='0')&&(a<='9'))
{
tt[i]=a;
}
}
tt[i]='\0';
}
//统计字符中每个字符出现的个数,存放到对应数组rr中
//重复字符在第一次出现的对应位置“++”,重复字节对应位置为“”
for(i=0;i{
for(j=i+1;j
{
if((tt[i]==tt[j])&&(rr[i]!
=0))
{
rr[i]++;
rr[j]=0;
}
}
}
//统计标记rr中不为“”的个数
for(i=0;i
{
if(rr[i]>0)out++;
}
printf("%d",out);
}
}
10求1~100之间的素数,并输出。
#include
intfunc(intn)
{
intc=sqrt(n),i;
if(n==1)return1;
for(i=2;i<=c;i++)
{
if(n%i==0)return0;
else
{
return1;
}
}
}
voidmain()
{
inti,j=1;
for(i=1;i<=100;i++)
{
if(func(i)==1)
{
printf("%d",i);
if(j%10==0)
{
printf("\n");
}
j++;
}
}
}
11输入整形值转换成二进制,再由二进制转换成十进制。
#include
intfunc(intn,intm)//求n函数2^m次方
{
intsum=0,i;
if(m==0)
{
return1;
}
elseif(m==1)
{
returnn;
}
else
{
for(i=1;i<=m-1;i++)
{
n=n*2;
}
returnn;
}
}
voidmain()
{
inta1,b[32]={0},i=0,k,sum;
while
(1)
{
scanf("%d",&a1);
i=0;
while(a1!
=0)
{
b[i]=a1%2;
a1=a1/2;
i++;
}
k=i-1;
printf("二进制为\n");
for(i=k;i>=0;i--)
{
printf("%d",b[i]);
}
sum=0;
if(b[0]==1)sum=1;
for(i=1;i<=k;i++)
{
if(b[i]==1)
{
sum=func(2,i)+sum;
}
}
printf("%d",sum);
}
}
12比较一个数组的元素是否为回文数组。
回文:
正读反读意思都一样。
比如1234321,1234554321。
小数没有回文。
#include
voidhuiwen(charstr[])
{
inti,len,k=1;
len=strlen(str);
for(i=0;i<=len-1;i++)
{
if(str[i]!
=str[len-1-i])
{
k=0;
break;
}
}
if(k==0)
printf("%s不是一个回文数\n",str);
else
printf("%s是一个回文数\n",str);
}
voidmain()
{
charstr[100]={0};
inti;
while
(1)
{
printf("Inputastring:
");/*提示输入Inputastring:
*/
scanf("%s",str);/*scan()函数输入一个字符串:
*/
huiwen(str);
}
}