华中科技大学计算机学院上机复试题目

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

上机考试。一般网站上公布上机环境要求是TC2.0,但实际上是可以使用VC的。这里有一点特别要大家注意:TC2.0只支持纯C代码,不支持C++风格代码。华科的计算机学生称,不管你是用VC还是TC,老师都要在TC2.0上进行验收程序,以确认你的代码是纯C。比如:p=newNode;的代码写法在TC2.0下是通不过的,只能写p=(Node*)malloc(sizeof(Node));。另外TC2.0不支持引用,如:Pop(Stack&s,ElemType&e)中含有“&”的引用,在TC2.0下无法通过。华科的上机题目每年都差不多,经常考的就是排序、链表和树的操作等。建议在去复试前一定要进行专门练习上机。08年的华科招收研究生上机试题:(1)输入一个十进制数,将其先转化为八进制数,然后再输出#includestdio.hmain(){inta=0;printf(Pleaseenteradecimalnumber:);scanf(%d,&a);printf(%d'soctalnumberis%o\n,a,a);}(2)用户输入一个文本名,编程实现输出文本中最长的一行和最短的一行。如果最长和最短的不止一行,请全部输出。#includestdio.h#includestdlib.h#includestring.h#defineBUFFSIZE1000intmain(){FILE*fp;charfilename[255];printf(inputfilename:);scanf(%s,filename);if(NULL==(fp=fopen(filename,r))){printf(fileopenerror!);return0;}charLine[BUFFSIZE][BUFFSIZE];inti=0;intcnt=0;while((fgets(Line[i],BUFFSIZE,fp))&&iBUFFSIZE){//printf(%s,Line[i]);i++;cnt++;}chartempMax[BUFFSIZE];chartempMin[BUFFSIZE];strcpy(tempMax,Line[0]);strcpy(tempMin,Line[0]);//printf(%s\n,tempMax);for(i=1;icnt;i++){if(strlen(Line[i])strlen(tempMax))strcpy(tempMax,Line[i]);if(strlen(Line[i])strlen(tempMax))strcpy(tempMin,Line[i]);}intj=-1;printf(longeststring:\n);for(i=0;icnt;i++){if(strlen(Line[i])==strlen(tempMax)){printf(%s\n,Line[i]);}}printf(\n\nshorteststring:\n);for(i=0;icnt;i++){if(strlen(Line[i])==strlen(tempMin)){printf(%s,Line[i]);}}fclose(fp);return0;}(3)输入学生信息:学号,三门课程的成绩,学号为0时结束,将其存储在链表A中,从中找出分数大于平均分的学生,并将该学生信息按平均分降序排列存入到链表B中,最后输出链表B。#includestdio.h#includestdlib.h#includestring.htypedefstructnode{charxuehao[20];intchengji[3];floatav;structnode*next;}stud,*UerInfo;intmain(){UerInfoui;ui=(UerInfo)malloc(sizeof(stud));UerInfop=ui;UerInfoq=ui;UerInfotempB=ui;printf(inputstudents'information:\n);intcnt=0;while(1){printf(input学号:);scanf(%s,ui-xuehao);if(strcmp(ui-xuehao,0)==0)break;printf(input成绩:);scanf(%d,&ui-chengji[0]);printf(input成绩:);scanf(%d,&ui-chengji[1]);printf(input成绩:);scanf(%d,&ui-chengji[2]);ui-av=((ui-chengji[0]+ui-chengji[1]+ui-chengji[2])/3);ui-next=(UerInfo)malloc(sizeof(stud));ui=ui-next;cnt++;}intchengji1=0;intchengji2=0;intchengji3=0;while(p&&strcmp(p-xuehao,0)!=0){chengji1+=p-chengji[0];chengji2+=p-chengji[1];chengji3+=p-chengji[2];p=p-next;}floatchengji1av=0.0;floatchengji2av=0.0;floatchengji3av=0.0;floatavfinal=0.0;if(cnt){chengji1av=(float)chengji1/(float)cnt;chengji2av=(float)chengji2/(float)cnt;chengji3av=(float)chengji3/(float)cnt;avfinal=(chengji1av+chengji2av+chengji3av)/3;}printf(高于平均分的有:\n);while(q&&strcmp(q-xuehao,0)!=0){if(q-avavfinal){printf(%s\n,q-xuehao);printf(%f\n,q-av);}q=q-next;}printf(\n降序排列如下:\n);UerInfos;s=(UerInfo)malloc(cnt*sizeof(stud));intk=0;UerInfotemp=tempB;while(tempB&&strcmp(tempB-xuehao,0)!=0){s[k].av=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++;}intl,m;studtemps;for(l=0;lcnt-1;l++){for(m=l+1;mcnt;m++){if(s[l].avs[m].av){temps.chengji[0]=s[l].chengji[0];temps.chengji[1]=s[l].chengji[1];temps.chengji[2]=s[l].chengji[2];strcpy(temps.xuehao,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]=temps.chengji[0];s[m].chengji[1]=temps.chengji[1];s[m].chengji[2]=temps.chengji[2];strcpy(s[m].xuehao,temps.xuehao);}}}for(inti=0;icnt;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]);}return0;}07年的华科招收研究生上机试题一、编写一个程序输入一个5X6的矩阵存储并输出,并且求出每行的最大值和每行的总和要求把每行总和放入每行最大值的位置,最后把结果矩阵,每行最大值及其原下标及其总和输出。#includestdio.h#includestdlib.hintgetMat(inta[5][6],intn,intm){inti;intj;for(i=0;in;i++){for(j=0;jm;j++){scanf(%d,&a[i][j]);}}return0;}intgetMax(inta[5][6],intn,intm,intb[5],intc[5],intd[5],intsum[5]){inti;intj;for(i=0;in;i++){b[i]=0;c[i]=0;d[i]=0;sum[i]=0;}for(i=0;in;i++){intmax=a[i][0];intcol=0;intr=0;for(j=0;jm;j++){sum[i]+=a[i][j];if(maxa[i][j])max=a[i][j];r=i;col=j;}b[i]=max;c[i]=r;d[i]=col;}for(i=0;in;i++){a[c[i]][d[i]]=sum[i];}return0;}voiddisplayMat(inta[5][6]){inti;intj;for(i=0;i5;i++){printf(\n);for(j=0;j6;j++){printf(%d,a[i][j]);}}printf(\n);}intmain(){inta[5][6];getMat(a,5,6);intc[5],d[5],b[5],sum[5];getMax(a,5,6,b,c,d,sum);printf(每行最大值:\n);for(inti=0;i5;i++){printf(第%d行:\n最大值:%d\n列:%d\n和:%d\n,i+1,b[i],d[i],sum[i]);}printf(结果矩阵:\n);displayMat(a);return0;}二、编写程序判断输入的任意字符,任意长度的字符串是否回文(顺读,逆读均相同),最后输出原字符串和判断结果。#includestdio.h#includestdlib.h#includestring.hvoidmain(){inti;intbIsSame=1;//是否相同的标志inta=0,b;charf[255];scanf(%s,f);//读入字符串b=strlen(f)-1;//获得最后一个字符的序号(字符串总长度减)for(i=0;ib/2;i++)//循环,从到字符串中间的字符{if(f[a++]!=f[b--])//首尾比较是否相同字符{bIsSame=0;//有不同的就把标志置,并跳出循环break;}}if(bIsSame)//相同就输出Yprintf(Y);else//不同就输出Nprintf(N);getchar();//按任意键退出}三、输入一个6X6的矩阵并存储,把该矩阵逆置并输出。要求:不得使用任何数组(就地逆置)。#includestdio.h#includestdlib.hvoidTwoDto1D(inta[6][6],intb[36]){inti,j;for(i=0;i6;i++){for(j=0;j6;j++){b[6*i+j]=a[i][j];}}}voidTransposeInplace(intb[36],int&width,int&height

1 / 49
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功