西电计算机考研机试代码.docx
《西电计算机考研机试代码.docx》由会员分享,可在线阅读,更多相关《西电计算机考研机试代码.docx(49页珍藏版)》请在冰豆网上搜索。
![西电计算机考研机试代码.docx](https://file1.bdocx.com/fileroot1/2023-5/25/721ee8d1-b9a5-45d4-a9a3-cff08e0a70c3/721ee8d1-b9a5-45d4-a9a3-cff08e0a70c31.gif)
西电计算机考研机试代码
王道论坛()友情分享!
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;ifor(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;ifor(j=0;jscanf("%d",*(array+i)+j);
for(i=0;i{
for(j=0;jresult[p]+=*(*(array+i)+j);
p++;
}
for(j=0;j{
for(i=0;iresult[p]+=*(*(array+i)+j);
p++;
}
for(i=0;iresult[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