当前位置:文档之家› 华中科技大学计算机考研复试机试题

华中科技大学计算机考研复试机试题

华科历年复试机试题汇总上机考试。

一般网站上公布上机环境要求是,但实际上是可以使用VC的。

这里有一点特别要大家注意:只支持纯C代码,不支持C++风格代码。

华科的计算机学生称,不管你是用VC还是TC,老师都要在上进行验收程序,以确认你的代码是纯C。

比如:p = new Node ; 的代码写法在下是通不过的,只能写p = (Node *)malloc (sizeof (Node)) ; 。

另外不支持引用,如:Pop (Stack &s , ElemType &e)中含有“&”的引用,在下无法通过。

华科的上机题目每年都差不多,经常考的就是排序、链表和树的操作等。

建议在去复试前一定要进行专门练习上机。

Note:上机时间为1个半小时,题目一般为三道题,前两道一般代码不会超过70行,最后一道会达到150~200行。

上机时做题速度一定要快,不要总抓着一个不放,时间在不知不觉中过的是很快的。

2010年的机试题:a、输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数!(如‘3’,输出:);#include <>#include <>#define max 1000int pd(char c){int i=0;int num=0;for(i=0;i<7;i++){if(c&(1<<i))num++;}if(num%2==0)return 1;elsereturn 0;}void main(){char a[max];scanf("%s",a);int i,j;int len=strlen(a);for(i=0;i<len;i++){if (pd(a[i])){a[i]=a[i]|(1<<7);}for(j=7;j>=0;j--)if(a[i]&(1<<j))printf("1");elseprintf("0");printf("\n");}}b、设计8个任务函数task0()-task7()只输出一句话:如task0()输出“task0 is called!”;设计一个调度函数schedule ()输入一个字符串如"012345"然后返回一个函数指针数组和字符串的长度作为执行函数execute()的参数进行调度任务函数。

主函数只有调度函数。

(这个题难道很多同学因为很多同学不知道函数指针数组怎么用啊!)#include<>#include<>#include<>typedef void (*ptask)();2011/03/18v=tempB->av;s[k].chengji[0]=tempB->chengji[0];s[k].chengji[1]=tempB->chengji[1];s[k].chengji[2]=tempB->chengji[2];strcpy(s[k].xuehao,tempB->xuehao);tempB=tempB->next;k++;}int l,m;stud temps;for (l=0;l<cnt-1;l++){for (m=l+1;m<cnt;m++){if(s[l].av<s[m].av){[0]=s[l].chengji[0];[1]=s[l].chengji[1];[2]=s[l].chengji[2];strcpy,s[l].xuehao);s[l].chengji[0]=s[m].chengji[0];s[l].chengji[1]=s[m].chengji[1];s[l].chengji[2]=s[m].chengji[2];strcpy(s[l].xuehao,s[m].xuehao);s[m].chengji[0]=[0];s[m].chengji[1]=[1];s[m].chengji[2]=[2];strcpy(s[m].xuehao,;}}}for (int i=0;i<cnt;i++){printf("学号:%s\n",s[i].xuehao);printf("成绩:%f\n",s[i].chengji[0]);printf("成绩:%f\n",s[i].chengji[1]);printf("成绩:%f\n",s[i].chengji[2]);}return 0;}==》07年的华科招收研究生上机试题一、编写一个程序输入一个5X6的矩阵存储并输出,并且求出每行的最大值和每行的总和要求把每行总和放入每行最大值的位置,最后把结果矩阵,每行最大值及其原下标及其总和输出。

我的代码:#include<>#include<>int getMat(int a[5][6],int n,int m){int i,j;for(i=0;i<n;i++)for(j=0;j<m;j++)scanf("%d",&a[i][j]);}int getMax(int a[5][6],int n,int m,int b[5],int c[5],int d[5],int sum[5]){int i,j;for(i=0;i<n;i++){b[i]=0;c[i]=0;d[0]=0;sum[i]=0;}for(i=0;i<n;i++){int r,col;int max=a[i][0];sum[i]=a[i][0];for(j=1;j<m;j++){if(max<a[i][j])max=a[i][j];r=i;col=j;sum[i]+=a[i][j];}b[i]=max;c[i]=r;d[i]=col;}for(i=0;i<n;i++){a[c[i]][d[i]]=sum[i];}}void display(int a[5][6]){int i,j;for(i=0;i<5;i++){printf("\n");for(j=0;j<6;j++){printf("%d ",a[i][j]);}}printf("\n");}int main(){int a[5][6];getMat(a,5,6);int b[5],c[5],d[5],sum[5];getMax(a,5,6,b,c,d,sum);display(a);printf("每一行最大值为:\n");int i;for(i=0;i<5;i++){printf("第%d行:%d,其下标:(%d,%d)\n",i,b[i],c[i],d[i]);}printf("每一行的总和为:\n");for(i=0;i<5;i++){printf("第%d行:%d\n",i,sum[i]);}system("pause");}二、编写程序判断输入的任意字符,任意长度的字符串是否回文(顺读,逆读均相同),最后输出原字符串和判断结果。

#include <>#include <>#include <>void main(){int i;int bIsSame = 1;.功能:复制…的内容到中#include <>#include <>#include <>#define BUFFERSIZE 1000int main(int argc, char *argv[]){if (argc<3){printf("参数不足\n");return 0;}入n个职工的信息,找出3个年龄最小的职工打印出来,n可以取6。

#include<>#include<>struct node{ge-(*(struct node *)b).age;}int main(){int n,i;printf("请输入职工数及其各职工的职工号、姓名、年龄:\n");scanf("%d",&n);for(i=0;i<n;i++){scanf("%d %s %d",&emp[i].id,emp[i].name,&emp[i].age); }qsort(emp,n,sizeof(node),cmp);printf("年龄最小的三位职工是:\n");for(i=0;i<3;i++){printf("%d %s %d\n",emp[i].id,emp[i].name,emp[i].age); }system("pause");}(5)n个人排一圈123报数,报到3的人退到圈外,直到剩最后一个人为止。

#include <>#include <>struct node {int data;struct node * link;}*list,*p,*r;void JOSEPHUS(int n,int m,int k);int main(){int n,k;printf("请输入人数:");scanf("%d",&n);printf("\n请输入从哪里开始:");scanf("%d",&k);/*printf("\n请输入数到:");scanf("%d",&m); */if(n!=0)JOSEPHUS(n,3,k);system("PAUSE");return 0;}void JOSEPHUS(int n,int m,int k){int i;for (i=1;i<=n;i++){p=(struct node * )malloc(sizeof(struct node));p->data=i;if(list==NULL)list=p;elser->link=p;r=p;}p->link=list;p=list;for (i=1;i<k;i++){r=p;p=p->link;}while(p->link!=p){for(i=1;i<m;i++){r=p;p=p->link;}r->link=p->link;printf("%d\n",p->data);free(p);p=r->link;}printf("\n最后被删除结点是%d\n",p->data);}(6)冒泡排序。

相关主题