西安电子科技大学计算机考研2008-2010年机试代码

本站小编 免费考研网/2015-06-21

08 Problem A

#include <stdio.h>
void main()
{
int isarithmetic(int array[],int n);
void bubble(int array[],int n);
int num,m,i=0,array1[100],array2[100][1000];
scanf("%d",&num);
while(num>0)
{
int j;
array1[i]=num;
for(j=0;j<num;j++)
{
scanf("%d",&array2[i][j]);
}
i++;
scanf("%d",&num);
}
for(m=0;m<i;m++)
{
bubble(array2[m],array1[m]);
if(isarithmetic(array2[m],array1[m]))
printf("yes\n");
else
printf("no\n");
}
}
int isarithmetic(int array[],int n)
{
int i,differ;
differ=array[0]-array[1];
for(i=1;i<n-1;i++)
{
if(differ!=array[i]-array[i+1])
return 0;
}
return 1;
}


void bubble(int array[],int n)
{
int i,j,temp;
 





 



 


 





 





 

for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(array[j]>array[j+1])
{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}

08 Problem B

#include <stdio.h>
void main()
{
int i=0,m,array[100];
scanf("%d",&array[0]);
while(array[i++])
{
scanf("%d",&array[i]);
}
for(m=0;m<i-1;m++)
{
if(array[m]>99 && array[m]<1000)
{
int digit,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");
}
}

08 Problem C

#include <stdio.h>
void main()
{
 



 


 






int circle(int scalar);
int n,i,number=0,array[10];
scanf("%d",&n);
while(n)
{
array[number++]=n;
scanf("%d",&n);
}
for(i=0;i<number;i++)
{
printf("%d\n",circle(array[i]));
}
}
int circle(int scalar)
{
int newi=0,newj=1,oldi,oldj;
int t=1;
oldi=(newi+newj)%scalar;
oldj=(newi+2*newj)%scalar;
while(!(oldi==newi && oldj==newj))
{
int temp;
temp=oldi;
oldi=(oldi+oldj)%scalar;
oldj=(temp+2*oldj)%scalar;
t++;
}
if(scalar>2 && t<=scalar*scalar/2)
return t;
else
return 0;
}


08 Problem D

#include <stdio.h>
#include <math.h>
void main()
{
int prime(int n);
int sum(int n);
int countprime(int n);
int i,num,countsample=0,count=0,array[100];
scanf("%d",&num);
 





 



 


 






while(num)                   //输入各组整数以 0 结束
{
array[countsample++]=num;
scanf("%d",&num);
}
for(i=0;i<countsample;i++)
{
if(countprime(array[i])==sum(array[i]))
printf("yes\n");
else
printf("no\n");
}
}
int prime(int n)      //判断一个整数是否是素数
{
int p,i;
p=(int)sqrt(n);
for(i=2;i<=p;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
int sum(int n)          //求一个整数各位数字之和
{
int i,count=0;
for(i=1;n/i!=0;i=10*i)
{
count+=n%(10*i)/i;
}
return count;
}
int countprime(int n)      //求一个整数的质因数各位之和
{
int i,count=0;
if(prime(n))
return sum(n);
for(i=2;i<=n;i++)
{
if(prime(i) && n%i==0)
{
count+=sum(i);
n/=i;
 





 



 


 






i=1;
}
}
return count;
}

08 Problem E

#include<cstdio>
#include<stdlib.h>
#include<string.h>

//利用数组计算
void jisuan(char a[], int n)
{
 





 
int result[1001] = {0};
int i = 0;
int j = 0;
int flag = 0;
int Len, dLen;
int inta, temp1;
int temp2;
int lastlen;
 
//结果的记录

//用于记录整数的位置
//标志号
//分别用于记录去掉小数点后,总长度与小数点的长度
//用于存储数值与辅助值
//辅助值 2
//确认最后小数的数组长度
 
int p, 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");
}
}
}


int main()
{
char s[7];
int n;


while (scanf("%s%d", s, &n) != EOF)
{
jisuan(s, n);
}


return 0;
}

09 Problem A

#include <stdio.h>
int main()
{
int perfect(long n);
long a,b,i;
scanf("%ld %ld",&a,&b);
for(i=a;i<=b;i++)
{
if(perfect(i))
printf("%ld\n",i);
}
return 0;
}
int perfect(long n)
{
long i,count=0;
for(i=1;i<n;i++)
{
 





 



 


 






if(n%i==0)
count+=i;
}
if(count==n)
return 1;
else
return 0;
}

09Problem B

#include <stdio.h>
int main()
{
void sort(int array[],int n);
int i,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<num;i++)
for(j=0;j<num;j++)
scanf("%d",*(array+i)+j);
for(i=0;i<num;i++)      //每行元素和
{
for(j=0;j<num;j++)
result[p]+=*(*(array+i)+j);
p++;
}
for(j=0;j<num;j++)     //每列元素和
{
for(i=0;i<num;i++)
result[p]+=*(*(array+i)+j);
p++;
}
for(i=0;i<num;i++)       //对角线元素和
result[p]+=*(*(array+i)+i);
p++;
 





 
for(i=0;i<num;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");
return 0;
}
 



 


 






void sort(int array[],int n)  //冒泡排序
{
int i,j,temp,no;
for(i=0;i<n-1;i++)
{
no=0;
for(j=0;j<n-i-1;j++)
{
if(array[j]<array[j+1])
{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
no=1;
}
}
if(no==0)
break;
}


}

09 Problem C

#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned int getwholenum(char *array);
int factor(unsigned int n);
int num,i;
char array[100];
unsigned int wholenum;
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));
 





 



 


 






}
return 0;
}
unsigned int getwholenum(char *array)
{
char resultarray[100];
int i=0,j=0;
while(*(array+i)!='\0')
{
if(*(array+i)>='0' && *(array+i)<='9')
resultarray[j++]=*(array+i);
i++;
}
*(array+i)='\0';
return strtoul(resultarray,'\0',10);
}
int factor(unsigned int n)
{
int i,result;
for(i=1;i<(int)n;i++)
{
if(n%i==0)
result=i;
}
if(result==1)
result=n;
return result;
}

09 Problem D

#include <stdio.h>
#include <malloc.h>
#include <string.h>
#define NULL 0
struct btree
{
char num;
struct btree *lchild;
struct btree *rchild;
};
struct stack
{
struct btree *base;
struct btree *top;
 





 



 


 





 





 

int satcksize;
};
int main()
{
struct btree *create(char *arrayfirst,char *arraymiddle,int len);
void followvisit(struct btree *bt);
char arrayfirst[20],arraymiddle[20];
int len;
struct btree *bt;
scanf("%s\n%s",arrayfirst,arraymiddle);
len=strlen(arrayfirst);
bt=create(arrayfirst,arraymiddle,len);
followvisit(bt);
printf("\n");
return 0;
}
struct btree *create(char *arrayfirst,char *arraymiddle,int len)   //建立二叉树
{
struct btree *bt;
bt=(struct btree *)malloc(sizeof(struct btree));
if(len==1)
{
bt->num=*arrayfirst;
bt->lchild=NULL;
bt->rchild=NULL;
return bt;
}
else
{
int count=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);
 



 


 





 





 

return bt;
}
}
void followvisit(struct btree *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);
}
}
/*void followvisit(struct btree *bt)
{
struct btree *p,array[20];
int top=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;
}
}
 



 


 





 





 

}
}*/

09 Problem E

#include <stdio.h>
int main()
{
int num,i,j,top;
char array[100],stack[100];
scanf("%d\n",&num);
for(i=0;i<num;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 0;
}

10 Problem A

# include <stdio.h>
int main()
{
int sum(int n);
void bubble(int array[],int n);
int i,countsample=0,num,array[1000];
 



 


 






scanf("%d",&num);
while(num)
{
array[countsample++]=num;
scanf("%d",&num);
}
for(i=0;i<countsample;i++)
{
array[i]=sum(array[i]);
}
bubble(array,countsample);
for(i=0;i<countsample;i++)
printf("%d ",array[i]);
printf("\n");
return 0;
}
int sum(int n)
{
int i=1,count=0;
for(i;n/i!=0;i=10*i)
{
count+=n%(10*i)/i;
}
return count;
}
void bubble(int array[],int n)
{
int i,j,temp,change;
for(i=0;i<n-1;i++)
{
change=0;
for(j=0;j<n-i-1;j++)
{
if(array[j]>array[j+1])
{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
change=1;
}
}
if(change==0)
break;
}
 





 



 


 





 





 



}

10Problem B

#include <stdio.h>
int main()
{
int max(int (*array)[100],int m,int n,int i,int j);
int m,n,i,j,no=0;
int array[100][100];
scanf("%d %d",&m,&n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&array[i][j]);
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(max(array,m,n,i,j))
{
printf("%d %d %d\n",i,j,array[i][j]);
no=1;
}
}
}
if(!no)
printf("no\n");
return 0;
}
int max(int (*array)[100],int m,int n,int i,int j) //m 为矩阵行数,n 为矩阵列数,i,j 为当前元素在
矩阵中位置
{
int num,p,q;  //p 表示行,q 表示列
num=*(*(array+i)+j);
for(q=0;q<n;q++)
{
//int a=*(*(array+i)+q);
if(*(*(array+i)+q)<num)
return 0;
}
 



 


 






for(p=0;p<m;p++)
{
if(*(*(array+p)+j)>num)
return 0;
//if(*(*array+j+100*p)>num)
 





 
//
 
return 0;
 
}
return 1;
}

10 Problem C

#include <stdio.h>
int main()
{
int isint(char n);
char begin[50],end[100];
int i=0,p=0;
gets(begin);
while(begin[i]!='\0')
{
int j=0,num=0;
if(!isint(begin[i]) && !isint(begin[i+1]))
end[p++]=begin[i++];
else
{
int q,m=1;
while(isint(begin[++i]))
j++;
for(q=0;q<j;q++)
{
num+=((int)begin[--i]-48)*m;
m=10*m;
}
for(q=0;q<num;q++)
{
end[p++]=begin[i-1];
}
i+=j;
}


}
end[p]='\0';
puts(end);
}
 



 


 





 





 

int isint(char n)
{
if(n>='0' && n<='9')
return 1;
else
return 0;
}

10 Problem D

#include <stdio.h>
#include <malloc.h>
#define NULL 0
struct huffmantree
{
int weight;
struct huffmantree *lchild;
struct huffmantree *rchild;
};
int main()
{
struct huffmantree *createhuffman(int array[],int n);
int visithuffman(struct huffmantree *hm,int n);
int n,i,array[30];
struct huffmantree *hm;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&array[i]);
}
hm=createhuffman(array,n);
printf("%d\n",visithuffman(hm,0));
}
struct huffmantree *createhuffman(int array[],int n)
{
int sort(struct huffmantree *huffman[],int n);
struct huffmantree *huffman[30];
int i,j;
for(i=0;i<n;i++)
{
struct huffmantree *p;
p=(struct huffmantree *)malloc(sizeof(struct huffmantree));
p->lchild=NULL;
p->rchild=NULL;
p->weight=array[i];
 



 


 





 





 

huffman[i]=p;
}
j=n;
while(j>1)
{
struct huffmantree *p;
i=sort(huffman,j);
p=(struct huffmantree *)malloc(sizeof(struct huffmantree));
p->lchild=huffman[i-1];
p->rchild=huffman[i];
p->weight=huffman[i-1]->weight+huffman[i]->weight;
huffman[i-1]=p;
j--;
}
return huffman[0];
}
int sort(struct huffmantree *huffman[],int n)
{
int i,j,ok;
struct huffmantree *p,*q,*temp;
for(i=0;i<2;i++)
{
ok=0;
for(j=0;j<n-i-1;j++)
{
p=huffman[j];
q=huffman[j+1];
if(p->weight<q->weight)
{
temp=huffman[j];
huffman[j]=huffman[j+1];
huffman[j+1]=temp;
ok=1;
}
}
if(ok==0)
return n-1;
}
return n-1;
}
int visithuffman(struct huffmantree *hm,int n)
{
struct huffmantree *p=hm;
int count=0;
 



 


 





 





 

if(!p->lchild && !p->rchild)
return n*p->weight;
else
{
count=visithuffman(p->lchild,n+1)+visithuffman(p->rchild,n+1);
return count;
}
}
 
 


相关话题/西安电子科技大学 计算机

  • 领限时大额优惠券,享本站正版考研考试资料!
    大额优惠券
    优惠券领取后72小时内有效,10万种最新考研考试考证类电子打印资料任你选。涵盖全国500余所院校考研专业课、200多种职业资格考试、1100多种经典教材,产品类型包含电子书、题库、全套资料以及视频,无论您是考研复习、考证刷题,还是考前冲刺等,不同类型的产品可满足您学习上的不同需求。 ...
    本站小编 Free壹佰分学习网 2022-09-19
  • 新东方考研计算机基础讲义-计算机网络
    本站小编 新东方教育 2015-06-19
  • 2015年西安电子科技大学MTI真题---448汉语写作与百科知识
    西安电子科技大学 2014年硕士研究生招生考试初试试题 考试科目代码及名称 448汉语写作与百科知识 考试时间 2014年1月5日下午(3小时) 答题要求:所有答案(填空题按照标号填写)必须写在答题纸上,写在试题上一律作废,准考证号写在指定位置! 一、单项选择(50分) 1.太阳光的可见光中波长最短的是( )。 A.紫光 B ...
    本站小编 西安电子科技大学 2015-06-18
  • 计算机软件技术基础(第三版)习题答案
    第一章 1.1 什么是信息?信息与数据的区别和联系在何处? 信息定义之一:信息是现实世界中存在的客观实体、现象、关系进行描述的数据。 信息定义之二:信息是经过加工后并对实体的行为产生影响的数据。 与数据的区别和联系: 数据定义:数据是现实世界客观存在的实体或事物的属性值,即指人们听到的事实和看到的景象。 ...
    本站小编 考研加油站 2015-06-15
  • 2009年哈尔滨工业大学计算机考研复试试题
    1、数据库部分: 1. 封锁机制是为(并发控制)而设置的。 2. (3NF)消除了传递依赖。 3. 逻辑独立性是由(外模式/(概念)模式)保证的。 4. 求主关键字。 5. (商品和商店)是多对多的关系。 6. 关系代数中的选择与SQL的(select)对应。 7. 规范化是在数据库设计的(逻辑结构设计)阶段进行的。 8. 规范化是为了解 ...
    本站小编 免费考研网 2015-06-13
  • 复旦大学2012年计算机复试笔试题目-详细版
    1.离散:这是第三次考的真题了!估计明年不会考了,但是以后就不一定了。 这个题目是个老题目了,考了很多年了。 已知G={(x, y), * | x, y 是实数,x != 0 },且(x, y)*(z, w)= (xz, xw+y) 。 求证:1。该G是个群 2。证明H={(1, y),*| y实数}是其正规子群。 证法很简单。首先证明G是个半群 因为G是个代 ...
    本站小编 复旦大学 2015-06-07
  • 2016年南京大学考研:计算机数据结构测试题及答案(三)
    2016年南京大学考研:计算机数据结构测试题及答案(三)  一、选择题(30分)  1. 1. 字符串的长度是指( )。  (A) 串中不同字符的个数 (B) 串中不同字母的个数  (C) 串中所含字符的个数 (D) 串中不同数字的个数  2. 2. 建立一个长度为n的有序单链表的时间复杂度为( )  (A) O(n) (B) O(1) (C) O(n2) (D) O(log2n) ...
    本站小编 免费考研网 2015-06-05
  • 2016年南京大学考研:计算机数据结构测试题及答案(二)
    2016年南京大学考研:计算机数据结构测试题及答案(二)   一、选择题(30分)  1.下列程序段的时间复杂度为( )。  for(i=0; i p= c[i][j]+a[i][k]*b[k][j];= i=  (A) O(m*n*t) (B) O(m+n+t) (C) O(m+n*t) (D) O(m*t+n)  2.设顺序线性表中有n个数据元素,则删除表中第i个元素需要移动( )个元素。   ...
    本站小编 免费考研网 2015-06-05
  • 青岛理工大学微型计算机技术及应用内部习题
    1. 若(AL)=0C0H, (BX)=03523H,则执行指令ADD AL,BL 之后 (AL)=_____,(BL)=_____,标志位OF,SF,ZF,AF,CF,PF的状态对应为_____. 2. 设(SS)=2250H,(SP)=0140H,若在堆栈中放入5个数据,则栈顶的物理地址为___,如果又从堆栈中取出3个数据,则栈顶的物理地址为____. 3. 两个辑地址分别为2003H:1009H和2101H:0029H,它们对 ...
    本站小编 免费考研网 2015-06-01
  • 青岛理工大学2015考研计算机统考组成原理部分
    12.计算机硬件能够直接执行的是( )。 Ⅰ.机器语言程序 Ⅱ.汇编语言程序 Ⅲ.硬件描述语言程序 A.仅Ⅰ B.仅Ⅰ Ⅱ C.仅Ⅰ Ⅲ D.ⅠⅡ Ⅲ 13.由3个1和5个0组成的8位二进制补码,能表示的最小整数是( )。 A.-126 B.-125 C.-32 D.-3 14.下列有关浮点数加减运算 ...
    本站小编 免费考研网 2015-06-01
  • 2015年QS世界大学计算机科学与信息系统专业排行榜
    2015年QS世界大学计算机科学与信息系统专业排行榜 2015年排名 2014年排名 院校 国家 学术行业评价 学生就业评价 引用率 分数   1 1 ...
    本站小编 免费考研网 2015-05-28