收藏 分销(赏)

中软国际入职机试题.doc

上传人:精**** 文档编号:5187798 上传时间:2024-10-28 格式:DOC 页数:10 大小:54KB 下载积分:8 金币
下载 相关 举报
中软国际入职机试题.doc_第1页
第1页 / 共10页
中软国际入职机试题.doc_第2页
第2页 / 共10页


点击查看更多>>
资源描述
. 1 邮箱地址合法性验证,合法输出字符“1”,不合法输出字符“0” 合法条件: A 仅包含一个“@”。 B 最后三位必须是“.com” C 字符直接没有空格 B 有效数组是1~9、a~z、A~Z、“.”、“@”、“_” 程序 #include<stdio.h> 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<len-4;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); } 2 m个相同苹果分到n个相同的篮子里。允许有的篮子为空,一共有多少种分法? 其中:0<=m<=10,0<=n<=10;\ #include<stdio.h> 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<stdio.h> 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<(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的值 例如:输入 891 7 输出1019 #include<stdio.h> int main() { unsigned int c,tmp; unsigned char d; while(1) { scanf("%d%d",&c,&d); if((d>=0)&&(d<=31)) { tmp=c; tmp&=~(1<<d); tmp|=1<<d; c=tmp; printf("%d",c); } else { printf("%s","input error"); } } } 5 输入一个字符串。交换前后顺序后再输出。 #include<stdio.h> int main() { char a[100],b[100]; int len,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<stdio.h> int main() { int a1,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<stdio.h> 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("%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 (若m<n 交换m,n) 2> 如果k==0,则n为最大公约数 3> 若k不等于0,m=n,n=k,再执行1> B 最大公倍数求法: m和n,w=m*n/最大公约数 #include<stdio.h> int func(int m,int n) { int t,g; if(m<n) { t=m; m=n; n=t; } g=m%n; if(g!=0) { m=n; n=g; return func(m,n); } return n; } int main() { int a1,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<stdio.h> 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; scanf("%d",&b); //先输入个数b //输入间隔符,限定“,”或者“” a=getchar(); if((a==',')||(a==' ')) { for(i=0;i<b;i++) //输入b个字符 { 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<b-1;i++) { for(j=i+1;j<b;j++) { if((tt[i]==tt[j])&&(rr[i]!=0)) { rr[i]++; rr[j]=0; } } } //统计标记rr中不为“”的个数 for(i=0;i<b;i++) { if(rr[i]>0)out++; } printf("%d",out); } } 10 求1~100之间的素数,并输出。 #include<stdio.h> 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 { return 1; } } } void main() { int i,j=1; for(i=1;i<=100;i++) { if(func(i)==1) { printf("%d ",i); if(j%10==0) { printf("\n"); } j++; } } } 11 输入整形值转换成二进制,再由二进制转换成十进制。 #include<stdio.h> 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) { 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<stdio.h> 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("%s 不是一个回文数\n",str); else printf("%s 是一个回文数\n",str); } void main() { char str[100] = {0}; int i; while(1) { printf("Input a string:"); /*提示输入Input a string:*/ scanf("%s", str); /*scan()函数输入一个字符串:*/ huiwen(str); } } 精选范本
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服