西电计算机考研机试代码.docx

上传人:b****4 文档编号:24268109 上传时间:2023-05-25 格式:DOCX 页数:49 大小:49.16KB
下载 相关 举报
西电计算机考研机试代码.docx_第1页
第1页 / 共49页
西电计算机考研机试代码.docx_第2页
第2页 / 共49页
西电计算机考研机试代码.docx_第3页
第3页 / 共49页
西电计算机考研机试代码.docx_第4页
第4页 / 共49页
西电计算机考研机试代码.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

西电计算机考研机试代码.docx

《西电计算机考研机试代码.docx》由会员分享,可在线阅读,更多相关《西电计算机考研机试代码.docx(49页珍藏版)》请在冰豆网上搜索。

西电计算机考研机试代码.docx

西电计算机考研机试代码

 

王道论坛()友情分享!

 

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;

intlastlen;

//结果的记录

//用于记录整数的位置

//标志号

//分别用于记录去掉小数点后,总长度与小数点的长度

//用于存储数值与辅助值

//辅助值2

//确认最后小数的数组长度

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");

}

return

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1