已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华科历年复试机试题汇总上机考试。一般网站上公布上机环境要求是tc2.0,但实际上是可以使用vc的。这里有一点特别要大家注意:tc2.0只支持纯c代码,不支持c+风格代码。华科的计算机学生称,不管你是用vc还是tc,老师都要在tc2.0上进行验收程序,以确认你的代码是纯c。比如:p = new node ; 的代码写法在tc2.0下是通不过的,只能写p = (node *)malloc (sizeof (node) ; 。另外tc2.0不支持引用,如:pop (stack &s , elemtype &e)中含有“&”的引用,在tc2.0下无法通过。 华科的上机题目每年都差不多,经常考的就是排序、链表和树的操作等。建议在去复试前一定要进行专门练习上机。note:上机时间为1个半小时,题目一般为三道题,前两道一般代码不会超过70行,最后一道会达到150200行。上机时做题速度一定要快,不要总抓着一个不放,时间在不知不觉中过的是很快的。2010年的机试题:a、输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数!(如3,输出:10110011);#include #include #define max 1000int pd(char c)int i=0;int num=0;for(i=0;i7;i+)if(c&(1i)num+;if(num%2=0)return 1;elsereturn 0;void main()char amax;scanf(%s,a);int i,j;int len=strlen(a);for(i=0;ilen;i+)if (pd(ai)ai=ai|(1=0;j-)if(ai&(1j)printf(1);elseprintf(0);printf(n);b、设计8个任务函数task0()-task7()只输出一句话:如task0()输出“task0 is called!”;设计一个调度函数schedule()输入一个字符串如012345然后返回一个函数指针数组和字符串的长度作为执行函数execute()的参数进行调度任务函数。主函数只有调度函数。(这个题难道很多同学因为很多同学不知道函数指针数组怎么用啊!)#include#include#include typedef void (*ptask)();/8个任务函数; void task0() printf(task0 is called!n);void task1() printf(task1 is called!n);void task2() printf(task2 is called!n);void task3() printf(task3 is called!n);void task4() printf(task4 is called!n);void task5() printf(task5 is called!n);void task6() printf(task6 is called!n);void task7() printf(task7 is called!n);ptask fun9=task0,task1,task2,task3,task4,task5,task6,task7,;void execute(ptask* fun,int len)/执行函数 for(int i=0;ilen;i+) ptask pfun=funi; pfun(); void schedule()/调度函数; ptask fun100;/定义函数指针数组; int len;/字符串长度; char s1000; printf(请输入字符串:n); scanf(%s,s); len=strlen(s); for(int i=0;ilen;i+) int temp; temp=si-0; if(temp=0)funi=task0; else if(temp=1)funi=task1; else if(temp=2)funi=task2; else if(temp=3)funi=task3; else if(temp=4)funi=task4; else if(temp=5)funi=task5; else if(temp=6)funi=task6; else if(temp=7)funi=task7; execute(fun,len);int main() schedule(); system(pause);c、实现一个加法器,保证两个加数是任意长的整数。(这个题的加数由于是任意长所以把它声明成什么类型(long、int)的都是不对的,要用到结构体)。(所以这应该是个串行加法器)#include #include #define max 1000void add(char buff1max,char buff2max,int len1,int len2)int nummax;int s1,s2,flag=0,i;for(i=0;i=0)&(n2=0)s1=buff1n1-0;s2=buff2n2-0;if(s1+s2+flag9) numk=(s1+s2+flag)%10; flag=1;elsenumk=(s1+s2+flag)%10; flag=0;n1-;n2-;k-;if(n1=0)while(n1=0)s1=buff1n1-0;if(s1+flag9)numk=(s1+flag)%10;flag=1;elsenumk=(s1+flag)%10;flag=0;n1-;k-;if(n2=0)while(n2=0)s1=buff2n1-0;if(s1+flag9)numk=(s1+flag)%10;flag=1;elsenumk=(s1+flag)%10;flag=0;n2-;k-;if(flag)numk=1;k-;for(i=k+1;i=max-1;i+)printf(%d,numi);printf(n);void main()char buff1max;char buff2max;int len1,len2;scanf(%s,buff1);scanf(%s,buff2); len1=strlen(buff1);len2=strlen(buff2);add(buff1,buff2,len1,len2);08年的华科招收研究生上机试题:(1)输入一个十进制数,将其先转化为八进制数,然后再输出#include main() int a = 0 ; printf (please enter a decimal number:) ; scanf (%d,&a) ; printf (%ds octal number is %on,a,a) ; (2)用户输入一个文本名,编程实现输出文本中最长的一行和最短的一行。如果最长和最短的不止一行,请全部输出。#include #include #include #define buffsize 1000 int main() file *fp; char filename255; printf(please input the name of the file:n); scanf(%s,filename); if(fp=fopen(filename,r)=null) printf(file open error!); char linebuffsizebuffsize; int i,cnt; i=0; cnt=0; while(fgets(linei,buffsize,fp)&ibuffsize) i+; cnt+; char tempmaxbuffsize; char tempminbuffsize; strcpy(tempmax,line0); strcpy(tempmin,line0); for(i=1;istrlen(tempmax) strcpy(tempmax,linei); if(strlen(linei)strlen(tempmin) strcpy(tempmin,linei); printf(the longest string :n); for(i=0;icnt;i+) if(strlen(linei)=strlen(tempmax) printf(%sn,linei); printf(the shortest string :n); for(i=0;icnt;i+) if(strlen(linei)=strlen(tempmin) printf(%sn,linei); /system(pause); 本文来自csdn博客,转载请标明出处:/xiajun07061225/archive/2011/03/18/6259774.aspx (3)输入学生信息:学号,三门课程的成绩,学号为0时结束,将其存储在链表a中,从中找出分数大于平均分的学生,并将该学生信息按平均分降序排列存入到链表b中,最后输出链表b。#include #include #include typedef struct nodechar xuehao20;int chengji3;float av;struct node *next;stud,*uerinfo; int main() uerinfo ui; ui=(uerinfo)malloc(sizeof(stud); uerinfo p=ui; uerinfo q=ui; uerinfo tempb=ui; printf(input students information:n); int cnt=0; while (1) printf(input 学号:); scanf(%s,ui-xuehao); if(strcmp(ui-xuehao,0)=0) break; printf(input 成绩:); scanf(%d,&ui-chengji0); printf(input 成绩:); scanf(%d,&ui-chengji1); printf(input 成绩:); scanf(%d,&ui-chengji2); ui-av=(ui-chengji0+ui-chengji1+ui-chengji2)/3); ui-next=(uerinfo)malloc(sizeof(stud); ui=ui-next; cnt+; int chengji1=0; int chengji2=0; int chengji3=0; while (p&strcmp(p-xuehao,0)!=0) chengji1+=p-chengji0; chengji2+=p-chengji1; chengji3+=p-chengji2; p=p-next; float chengji1av=0.0; float chengji2av=0.0; float chengji3av=0.0; float avfinal=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(%sn,q-xuehao); printf(%fn,q-av); q=q-next; printf(n降序排列如下:n); uerinfo s; s=(uerinfo)malloc(cnt*sizeof(stud); int k=0; uerinfo temp=tempb; while (tempb&strcmp(tempb-xuehao,0)!=0) sk.av=tempb-av; sk.chengji0=tempb-chengji0; sk.chengji1=tempb-chengji1; sk.chengji2=tempb-chengji2; strcpy(sk.xuehao,tempb-xuehao); tempb=tempb-next; k+; int l,m; stud temps; for (l=0;lcnt-1;l+) for (m=l+1;mcnt;m+) if(sl.avsm.av) temps.chengji0=sl.chengji0;temps.chengji1=sl.chengji1;temps.chengji2=sl.chengji2;strcpy(temps.xuehao,sl.xuehao);sl.chengji0=sm.chengji0; sl.chengji1=sm.chengji1;sl.chengji2=sm.chengji2;strcpy(sl.xuehao,sm.xuehao);sm.chengji0=temps.chengji0;sm.chengji1=temps.chengji1;sm.chengji2=temps.chengji2;strcpy(sm.xuehao,temps.xuehao); for (int i=0;icnt;i+) printf(学号:%sn,si.xuehao); printf(成绩:%fn,si.chengji0); printf(成绩:%fn,si.chengji1); printf(成绩:%fn,si.chengji2); return 0;07年的华科招收研究生上机试题一、 编写一个程序输入一个5x6的矩阵存储并输出,并且求出每行的最大值和每行的总和要求把每行总和放入每行最大值的位置,最后把结果矩阵,每行最大值及其原下标及其总和输出。我的代码:#include#includeint getmat(int a56,int n,int m) int i,j; for(i=0;in;i+) for(j=0;jm;j+) scanf(%d,&aij); int getmax(int a56,int n,int m,int b5,int c5,int d5,int sum5) int i,j; for(i=0;in;i+) bi=0; ci=0; d0=0; sumi=0; for(i=0;in;i+) int r,col; int max=ai0; sumi=ai0; for(j=1;jm;j+) if(maxaij)max=aij; r=i; col=j; sumi+=aij; bi=max; ci=r; di=col; for(i=0;in;i+) acidi=sumi; void display(int a56) int i,j; for(i=0;i5;i+) printf(n); for(j=0;j6;j+) printf(%d ,aij); printf(n);int main() int a56; getmat(a,5,6); int b5,c5,d5,sum5; getmax(a,5,6,b,c,d,sum); display(a); printf(每一行最大值为:n); int i; for(i=0;i5;i+) printf(第%d行:%d,其下标:(%d,%d)n,i,bi,ci,di); printf(每一行的总和为:n); for(i=0;i5;i+) printf(第%d行:%dn,i,sumi); system(pause);二、 编写程序判断输入的任意字符,任意长度的字符串是否回文(顺读,逆读均相同),最后输出原字符串和判断结果。#include #include #include void main() int i; int bissame = 1;/是否相同的标志int a=0,b; char f 255; scanf(%s,f); /读入字符串b = strlen(f)-1; /获得最后一个字符的序号(字符串总长度减)for(i=0;ib/2;i+) /循环,从到字符串中间的字符 if(fa+!=fb-) /首尾比较是否相同字符 bissame = 0; /有不同的就把标志置,并跳出循环break; if(bissame) /相同就输出y printf (y); else /不同就输出n printf (n); getchar();/按任意键退出三、 输入一个6x6的矩阵并存储,把该矩阵逆置并输出。要求:不得使用任何数组(就地逆置)。我的代码:#include#includeint main() int a66; printf(请输入矩阵各元素的值【行序优先】:n); int i,j,temp; for(i=0;i6;i+) for(j=0;j6;j+) scanf(%d,&aij); printf(输入的矩阵:n); for(i=0;i6;i+) for(j=0;j6;j+) printf(%3d ,aij); printf(n); for(i=1;i6;i+) for(j=0;j=i;j+) temp=aji; aji=aij; aij=temp; printf(逆置的矩阵:n); for(i=0;i6;i+) for(j=0;j6;j+) printf(%3d ,aij); printf(n); system(pause);数据测试:06年的华科研究生复试上机试题:(1)采用命令行方式复制任意多个文件内容到一个文件中,如下所示:命令行形式:mycopy 1.txt 2.txt 3.txt 4.txt .功能:复制2.txt 3.txt 4.txt 的内容到1.txt中#include #include #include #define buffersize 1000int main(int argc, char *argv) if (argc3) printf(参数不足n); return 0; /int cnt=argc-1;int i;file *fp;if(null=(fp=fopen(argv1,a) printf(目标文件打开失败!); return 0;fprintf(fp,%s,n);file *fpsrc;for (i=2;iargc;i+) if(null=(fpsrc=fopen(argvi,r) printf(源文件打开失败!); return 0; char tempbuffersize+1;while (fgets(temp,buffersize,fpsrc) fprintf(fp,%sn,temp);fclose(fpsrc);printf(内容复制成功!n);fclose(fp);return 0;(2)判定一个c语言变量的命名是否正确(3)建立一种数据结构,可以存储任意个、任意长度的整数,利用这个数据结构,输入一串数,排序,求累加和。【程序有问题】#include #include #include typedef struct node int i; struct node *next; struct node *pre;bigintnode,*bigint;bigint getbigint(char *s) bigint bi; bi=(bigint)malloc(sizeof(bigintnode); bi-pre=null; bigint temp=bi; char *p=s; while(*p!=0) bi-i=*p-48; bi-next=(bigint)malloc(sizeof(bigintnode); bigint t=bi; bi=bi-next; bi-pre=t; p+; bi-next=null; return temp;int display(bigint bi) bigint p=bi; if(p-i) printf(%d,p-i); p=p-next; while(p-next) printf(%d,p-i); p=p-next; printf(n); return 1;bigint add(bigint bi1,bigint bi2) bigint p=bi1; bigint q=bi2; while (p-next) p=p-next; while (q-next) q=q-next; bigint ret=(bigint)malloc(sizeof(bigintnode); ret-next=null; ret-i=0; int finali=0; int add=0; while (p&q) int i=p-i+q-i; int t=0; int j=0; if(i9) j=i/10;t=i%10; else j=0; t=i; ret-i=t; bigint tb=(bigint)malloc(sizeof(bigintnode); tb-i=0; tb-i+=j; ret-pre=tb; tb-next=ret; ret=tb; p=p-pre; q=q-pre; finali=j; if(p) int f=0; while(p) f=p-i+ret-i; int t=0; int j=0; if(f9) j=f/10; t=f%10; else j=0; t=f; ret-i=t; bigint tb=(bigint)malloc(sizeof(bigintnode); tb-i=0; tb-i+=j; ret-pre=tb; tb-next=ret; ret=tb; p=p-pre; if(q) int f=0; while(q) f=q-i+ret-i; int t=0; int j=0; if(f9) j=f/10; t=f%10; else j=0; t=f; ret-i=t; bigint tb=(bigint)malloc(sizeof(bigintnode); tb-i=0; tb-i+=j; ret-pre=tb; tb-next=ret; ret=tb; q=q-pre; ret-pre=null; return ret;int getlength(bigint bi) bigint p=bi; int i=0; while(p) p=p-next; i+; return i;int compare(bigint bi1,bigint bi2) bigint p=bi1; bigint q=bi2; if (getlength(p)getlength(q) return 1; else if (getlength(p)next,q=q-next) if (p-iq-i) return 1; else if (p-ii) return -1; return 0; int sort(bigint *bi,int n) int i; int j; for (i=0;in-1;i+) bigint temp; for (j=i+1;jn;j+) if (compare(bii,bij) memcpy(temp,bii,sizeof(bigint);memcpy(bii,bij,sizeof(bigint);memcpy(bij,bii,sizeof(bigint); return 0;int main() bigint *bia; bia=(bigint*)malloc(1000*sizeof(bigint); int cnt=0; char str1000; printf(输入大数n); for (int i=0;i1000;i+) scanf(%s,str); if(strcmp(str,0)=0) break; biai=getbigint(str); cnt+; bigint sum=bia0; for(int i=1;icnt;i+) sum=add(sum,biai); printf(原来大数:n); for(int i=0;icnt;i+) display(biai); sort(bia,cnt); printf(排序后大数:n); for(int i=0;icnt;i+) display(biai); printf(和:n); display(sum); return 0;05-03年华科招收研究生复试上机试题汇总:(1)输入一个数列以0为结束标志,建立链式线性表,查找其中最大的数并输出删除释放节点,然后对剩余的进行排序,并输出释放节点。#include#includetypedef struct linknode/链表结点结构体定义; int data; struct linknode *next; linknode,*sqlist;void createlist(sqlist &l)/创建单链表的函数; sqlist p=l,q,s; int value; scanf(%d,&value); if(value=0)return; l-data=value; s=null; while(1) int v; scanf(%d,&v); if(v=0) return; q=(sqlist)malloc(sizeof(linknode); q-data=v; q-next=s; p-next=q; p=q; l=l-next;void display(sqlist l)/输出单链表; sqlist p=l; while(p-next!=null) printf(%d-,p-data); sqlist q=p-next; free(p);/释放结点; p=q; printf(%d,p-data); free(p);/释放结点; printf(n);int getmax(sqlist l)/获取最大结点值; int maxnum=0; sqlist p=l; while(p!=null) if(p-datamaxnum)maxnum=p-data; p=p-next; return maxnum;void freemax(sqlist &l)/释放此链表中值最大的结点; if(l!=null) sqlist p,q; p=l; q=l-n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年绿色科技创新孵化器项目可行性研究报告及总结分析
- 2025版设备施工员试题及答案
- 2024年四川阿坝教师招聘考试模拟题及答案
- 2025年城市固体废弃物处理系统可行性研究报告及总结分析
- 2025年体育健身中心建设项目可行性研究报告及总结分析
- 2025年特色小镇建设与运营可行性研究报告及总结分析
- 2025年城市安全与应急管理系统项目可行性研究报告及总结分析
- 2025年智能化农机设备市场可行性研究报告及总结分析
- 2025年绿色出行推广模式研究可行性研究报告及总结分析
- 2025年游戏行业新商业模式研究可行性研究报告及总结分析
- 墓地成本分析报告范文
- 《HTML5+CSS3网站设计基础教程(第3版)》ppt第5章 盒子模型
- 武松的主要事迹概括
- 光缆线路障碍点的定位
- 南瑞集团考试真题
- 小学数学结构化面试经典100题
- T、K、Y管节点焊缝超声波检验缺陷的判定
- ZJ70DB钻机绞车安装、操作及维护保养规程
- GB/T 34940.3-2017静态切换系统(STS)第3部分:确定性能的方法和试验要求
- GB/T 21198.5-2007贵金属合金首饰中贵金属含量的测定ICP光谱法第5部分:999‰银合金首饰银含量的测定差减法
- 现代优化算法-蚁群算法
评论
0/150
提交评论