西安电子复试上机真题源代码.docx
- 文档编号:11349966
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:32
- 大小:19.68KB
西安电子复试上机真题源代码.docx
《西安电子复试上机真题源代码.docx》由会员分享,可在线阅读,更多相关《西安电子复试上机真题源代码.docx(32页珍藏版)》请在冰豆网上搜索。
西安电子复试上机真题源代码
08ProblemA
#include
voidmain()
{
intisarithmetic(intarray[],intn);
voidbubble(intarray[],intn);
intnum,m,i=0,array1[100],array2[100][1000];
scanf("%d",&num);
while(num>0)
{
intj;
array1[i]=num;
for(j=0;j { scanf("%d",&array2[i][j]); } i++; scanf("%d",&num); } for(m=0;m { bubble(array2[m],array1[m]); if(isarithmetic(array2[m],array1[m])) printf("yes\n"); else printf("no\n"); } } intisarithmetic(intarray[],intn) { inti,differ; differ=array[0]-array[1]; for(i=1;i { if(differ! =array[i]-array[i+1]) return0; } return1; } voidbubble(intarray[],intn) { inti,j,temp; for(i=0;i for(j=0;j { if(array[j]>array[j+1]) { temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } } 08ProblemB #include voidmain() { inti=0,m,array[100]; scanf("%d",&array[0]); while(array[i++]) { scanf("%d",&array[i]); } for(m=0;m { if(array[m]>99&&array[m]<1000) { intdigit,ten,hunder; hunder=array[m]/100; ten=array[m]%100/10; digit=array[m]%10; if(array[m]==hunder*hunder*hunder+ten*ten*ten+digit*digit*digit) printf("yes\n"); else printf("no\n"); } else printf("no\n"); } } 08ProblemC #include voidmain() { intcircle(intscalar); intn,i,number=0,array[10]; scanf("%d",&n); while(n) { array[number++]=n; scanf("%d",&n); } for(i=0;i { printf("%d\n",circle(array[i])); } } intcircle(intscalar) { intnewi=0,newj=1,oldi,oldj; intt=1; oldi=(newi+newj)%scalar; oldj=(newi+2*newj)%scalar; while(! (oldi==newi&&oldj==newj)) { inttemp; temp=oldi; oldi=(oldi+oldj)%scalar; oldj=(temp+2*oldj)%scalar; t++; } if(scalar>2&&t<=scalar*scalar/2) returnt; else return0; } 08ProblemD #include #include voidmain() { intprime(intn); intsum(intn); intcountprime(intn); inti,num,countsample=0,count=0,array[100]; scanf("%d",&num); while(num)//输入各组整数以0结束 { array[countsample++]=num; scanf("%d",&num); } for(i=0;i { if(countprime(array[i])==sum(array[i])) printf("yes\n"); else printf("no\n"); } } intprime(intn)//判断一个整数是否是素数 { intp,i; p=(int)sqrt(n); for(i=2;i<=p;i++) { if(n%i==0) return0; } return1; } intsum(intn)//求一个整数各位数字之和 { inti,count=0; for(i=1;n/i! =0;i=10*i) { count+=n%(10*i)/i; } returncount; } intcountprime(intn)//求一个整数的质因数各位之和 { inti,count=0; if(prime(n)) returnsum(n); for(i=2;i<=n;i++) { if(prime(i)&&n%i==0) { count+=sum(i); n/=i; i=1; } } returncount; } 08ProblemE #include #include #include //利用数组计算 voidjisuan(chara[],intn) { intresult[1001]={0};//结果的记录 inti=0; intj=0;//用于记录整数的位置 intflag=0;//标志号 intLen,dLen;//分别用于记录去掉小数点后,总长度与小数点的长度 intinta,temp1;//用于存储数值与辅助值 inttemp2;//辅助值2 intlastlen;//确认最后小数的数组长度 intp,q; //找到小数点的位置 while(a[i]) { if(a[i]! ='.'&&! flag) { j++; } //找到小数点,并且将小数点这一位开始,数值向前移动一位 else { if(! flag) { i++; flag=1; continue; } else { a[i-1]=a[i]; } } i++; } Len=strlen(a);//记录去掉.的字符串多少 dLen=Len-j-1;//记录小数位的大小 if(dLen<0) { dLen=0; } if(i! =1) { a[i-1]=a[i]; } inta=atoi(a);//将字符串中的数字转化位整形数值 temp1=inta; i=0; //基本思路就是转换成整数数组运算,然后再来点小数点 while(temp1>0)//将整形数值以数值的形式转化给数组 { result[1000-i]=temp1%10; temp1=temp1/10; i++; } //开始计算,关键代码在于此: //分数与分数之间的相乘,用一个固定值分别与数组中的每一个数值相乘 temp2=n; while(temp2! =1) { for(i=1000;i>0;i--) { result[i]=result[i]*inta; } for(i=1000;i>0;i--) { if(result[i]/10! =0) { result[i-1]=result[i-1]+result[i]/10; result[i]=result[i]%10; } } temp2--; } //打印 lastlen=dLen*n;//确认最后小数的数组长度 //解决前后0的情况,并将前后不为0的情况记录p、q for(p=1;p<=1000&&result[p]==0;p++) { ; } if(p>1000) { printf("0"); return; } for(q=1000;q>=1&&result[q]==0;q--) { ; } if(1000-p+1<=lastlen)//考虑到0.几的情况问题 { printf("."); for(i=1000-lastlen+1;i<=q;i++) { printf("%d",result[i]); } printf("\n"); } else { if(1000-q>=lastlen)//考虑没有小数的情况 { for(i=p;i<=1000-lastlen;i++) { printf("%d",result[i]); } printf("\n"); } else//正常的情况 { for(i=p;i<=1000-lastlen;i++) { printf("%d",result[i]); } printf("."); for(i=1000-lastlen+1;i<=q;i++) { printf("%d",result[i]); } printf("\n"); } } } intmain() { chars[7]; intn; while(scanf("%s%d",s,&n)! =EOF) { jisuan(s,n); } return0; } 09ProblemA #include intmain() { intperfect(longn); longa,b,i; scanf("%ld%ld",&a,&b); for(i=a;i<=b;i++) { if(perfect(i)) printf("%ld\n",i); } return0; } intperfect(longn) { longi,count=0; for(i=1;i { if(n%i==0) count+=i; } if(count==n) return1; else return0; } 09ProblemB #include intmain() { voidsort(intarray[],intn); inti,j,num,p=0,array[9][9],result[20]; scanf("%d",&num); for(i=0;i<20;i++) result[i]=0;//输出数组赋初值0 for(i=0;i for(j=0;j scanf("%d",*(array+i)+j); for(i=0;i { for(j=0;j result[p]+=*(*(array+i)+j); p++; } for(j=0;j { for(i=0;i result[p]+=*(*(array+i)+j); p++; } for(i=0;i result[p]+=*(*(array+i)+i); p++; for(i=0;i result[p]+=*(*(array+i)+3-i); sort(result,2*num+2); for(i=0;i<2*num+2;i++) printf("%d",result[i]); printf("\n"); return0; } voidsort(intarray[],intn)//冒泡排序 { inti,j,temp,no; for(i=0;i { no=0; for(j=0;j { if(array[j] { temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; no=1; } } if(no==0) break; } } 09ProblemC #include #include intmain() { unsignedintgetwholenum(char*array); intfactor(unsignedintn); intnum,i; chararray[100]; unsignedintwholenum; scanf("%d",&num); for(i=1;i<=num;i++) { scanf("%s",array); wholenum=getwholenum(array); if(wholenum==0) { printf("0\n"); continue; } else printf("%d\n",factor(wholenum)); } return0; } unsignedintgetwholenum(char*array) { charresultarray[100]; inti=0,j=0; while(*(array+i)! ='\0') { if(*(array+i)>='0'&&*(array+i)<='9') resultarray[j++]=*(array+i); i++; } *(array+i)='\0'; returnstrtoul(resultarray,'\0',10); } intfactor(unsignedintn) { inti,result; for(i=1;i<(int)n;i++) { if(n%i==0) result=i; } if(result==1) result=n; returnresult; } 09ProblemD #include #include #include #defineNULL0 structbtree { charnum; structbtree*lchild; structbtree*rchild; }; structstack { structbtree*base; structbtree*top; intsatcksize; }; intmain() { structbtree*create(char*arrayfirst,char*arraymiddle,intlen); voidfollowvisit(structbtree*bt); chararrayfirst[20],arraymiddle[20]; intlen; structbtree*bt; scanf("%s\n%s",arrayfirst,arraymiddle); len=strlen(arrayfirst); bt=create(arrayfirst,arraymiddle,len); followvisit(bt); printf("\n"); return0; } structbtree*create(char*arrayfirst,char*arraymiddle,intlen)//建立二叉树 { structbtree*bt; bt=(structbtree*)malloc(sizeof(structbtree)); if(len==1) { bt->num=*arrayfirst; bt->lchild=NULL; bt->rchild=NULL; returnbt; } else { intcount=1,i=0; while(*arrayfirst! =*(arraymiddle+i)) { i++; count++; } bt->num=*arrayfirst; if(count==1) bt->lchild=0; else bt->lchild=create(arrayfirst+1,arraymiddle,count-1); if(count==len) bt->rchild=0; else bt->rchild=create(arrayfirst+count,arraymiddle+count,len-count); returnbt; } } voidfollowvisit(structbtree*bt)//后续遍历二叉树(递归) { if(! bt->lchild&&! bt->rchild) printf("%c",bt->num); else { if(bt->lchild) followvisit(bt->lchild); if(bt->rchild) followvisit(bt->rchild); printf("%c",bt->num); } } /*voidfollowvisit(structbtree*bt) { structbtree*p,array[20]; inttop=0; p=bt; while(top>=0||*p) { if(*p) { array[top++]=*p; p=p->lchild; } else { p=&array[--top]; if(! p->rchild) { printf("%c",p->num); top--; p=array } else { top++; p=p->rchild; } } } }*/ 09ProblemE #include intmain() { intnum,i,j,top; chararray[100],stack[100]; scanf("%d\n",&num); for(i=0;i { j=top=0; gets(array); while(array[j]) { if(array[j]=='('||array[j]==')'||array[j]=='['||array[j]==']'||array[j]=='{'||array[j]=='}') { stack[top++]=array[j]; if(top>=2) { if((stack[top-2]=='('&&stack[top-1]==')')||(stack[top-2]=='['&&stack[top-1]==']')||(stack[top-2]=='{'&&stack[top-1]=='}')) top-=2; } } j++; } if(top==0) printf("yes\n"); else printf("no\n"); } return0; } 10ProblemA #include intmain() { intsum(intn); voidbubble(intarray[],intn); inti,countsample=0,num,array[1000]; scanf("%d",&num); while(num) { array[countsample++]=num; scanf("%d",&num); } for(i=0;i { array[i]=sum(array[i]); } bubble(array,countsample); for(i=0;i printf("%d",array[
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西安 电子 复试 上机 源代码