中软国际入职机试题

更新时间:2024-01-28 08:28:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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(\,input); len=strlen(input);

if((input[len-1]=='m')&&(input[len-2]=='o')&&(input[len-3]=='c')&&(input[len-4]=='.')) { for(i=0;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(\,out); }

1

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(\,&M,&N); printf(\,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)) {

2

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(\,&m); m=10-func(m); printf(\,d1); for(i=0;i<=m-1;i++) { printf(\,a1); } for(i=0;i<(10-m);i++) {

printf(\,a2); } printf(\,d2); printf(\,d3); } }

4 将无符号数的指定比特进行置1.输入数字n(31bit,无符号整形),置位数m(0<=m<=31)。 输入:无符号数,指定bit位 输出:指定的bit位被置1的值 例如:输入 891 7 输出1019 #include int main() {

unsigned int c,tmp; unsigned char d; while(1)

3

{

scanf(\,&c,&d); if((d>=0)&&(d<=31)) { tmp=c; tmp&=~(1<

5 输入一个字符串。交换前后顺序后再输出。 #include int main() { char a[100],b[100]; int len,i; while(1) { scanf(\,a); len=strlen(a); for(i=len;i>=0;i--) { b[len-i]=a[i-1]; } printf(\,b); } }

6 输入一个同学各科的高考成绩,计算出他的总成绩和平均成绩,共4个科目。每个成绩范围0~150,无效分数不计算在总分数内(但科目永远是4课) #include int main() { int a1,a2,a3,a4,sum,aver; while(1) { scanf(\,&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;

4

printf(\,sum,aver); } } }

7 找众数。输入10个整形,输出10个整形中的众数。 #include int main() { int a[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(\,&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(\,a[i]); } } } }

8 求两个数的最大公倍数,最大公约数。 A 最大公约数求法:

1> m和n,如果m>n,k=m%n (若m

5

2> 如果k==0,则n为最大公约数

3> 若k不等于0,m=n,n=k,再执行1> B 最大公倍数求法:

m和n,w=m*n/最大公约数 #include int func(int m,int n) { int t,g; if(m

int main() { int a1,a2,s1,s2; while(1) { scanf(\,&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 void main() { char a,c,*p,tt[21]; int b,i,j,rr[21],out=0; while(1) { for(i=0;i<20;i++)rr[i]=1;

6

scanf(\,&b); //先输入个数b //输入间隔符,限定“,”或者“” a=getchar(); if((a==',')||(a==' ')) { for(i=0;i='a')&&(a<='z')||(a>='A')&&(a<='Z')||(a>='0')&&(a<='9')) { tt[i]=a; } } tt[i]='\\0'; } //统计字符中每个字符出现的个数,存放到对应数组rr中 //重复字符在第一次出现的对应位置“++”,重复字节对应位置为“” for(i=0;i

//统计标记rr中不为“”的个数 for(i=0;i0)out++; } printf(\,out); } }

10 求1~100之间的素数,并输出。 #include int func(int n) { int c=sqrt(n),i; if(n==1)return 1; for(i=2;i<=c;i++) { if(n%i==0)return 0; else

7

{ return 1; } } }

void main() { int i,j=1; for(i=1;i<=100;i++) { if(func(i)==1) { printf(\,i); if(j==0) { printf(\); } j++; } } }

11 输入整形值转换成二进制,再由二进制转换成十进制。 #include

int func(int n,int m)//求n函数2^m次方 { int sum=0,i; if(m==0) { return 1; } else if(m==1) { return n; } else { for(i=1;i<=m-1;i++) { n=n*2; } return n; } }

void main() { int a1,b[32]={0},i=0,k,sum; while(1)

8

{ scanf(\,&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(\,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(\,sum); } }

12 比较一个数组的元素 是否为回文数组。

回文:正读反读意思都一样。比如 1234321,1234554321。小数没有回文。 #include

void huiwen(char str[]) { int i,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(\不是一个回文数\\n\,str); else printf(\是一个回文数\\n\,str); }

9

void main() { char str[100] = {0}; int i; while(1) { printf(\:\); /*提示输入Input a string:*/ scanf(\, str); /*scan()函数输入一个字符串:*/ huiwen(str); } }

10

本文来源:https://www.bwwdw.com/article/anlw.html

Top