华中科技大学计算机考研复试机试题(含代码)资料
华科计算机考研复试历年上机题汇总
华科历年上机题汇总(欢迎补全)代码都很多是我自己写的,不一定正确啊!错了可不负责任的,呵呵~~~仅供参考!==》10年保送生上机试题1、不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。
#include<stdio.h>#include<stdlib.h>int main(){char s1[200],s2[100];int i,len1,len2;scanf("%s %s",s1,s2);for(i=0;i<200;i++){if(s1[i]=='\0'){len1=i;break;}}for(i=0;i<100;i++){if(s2[i]=='\0'){len2=i;break;}}for(i=len1;i<len1+len2;i++){s1[i]=s2[i-len1];}printf("%s\n",s1);system("pause");}2、输入一串数,要求建平衡二叉排序树,然后先序遍历。
3.、有4个小问,是超长整数的存储、计算、输出。
要把超长整数存在一个单向循环链表中,是每四位一个节点。
注:我是用单链表写的!感觉单循环链表没有什么用处么~~~#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAXLEN 100typedef struct node{int data;struct node *next;}LNode,*LinkList;int changeString(char s[],int len){//把字符串长度变成4的整数倍;int i,temp;char ss[MAXLEN];if(len%4!=0){temp=4-len%4;//需要在前面添加的0的个数;for(i=0;i<len;i++){ss[i]=s[i];}for(i=0;i<temp;i++){s[i]='0';}for(i=temp;i<temp+len;i++){s[i]=ss[i-temp];}}return temp;}LinkList createList(char *s,int len){//创建单链表;int i,temp,add_len;LinkList L,p,start;if(len<=0){return NULL;}add_len=changeString(s,len);len+=add_len;i=0;temp=0;while(i<4&&i<len){//给头结点赋值;temp=temp*10+s[i]-'0';i++;}L=(LinkList)malloc(sizeof(LNode));//头结点;L->data=temp;L->next=NULL;start=L;temp=0;while(i<len){//继续创建单链表;if((i+1)%4==1){//需新建一个结点;p=(LinkList)malloc(sizeof(LNode));}temp=temp*10+s[i]-'0';if((i+1)%4==0||i==len-1){//一个结点结束;p->data=temp;p->next=NULL;start->next=p;//插入结点;start=p;temp=0;//重新计数;}i++;}start->next=NULL;return L;}LinkList reverse(LinkList L){//逆转单循环链表;LinkList p,q,r;if(L!=NULL){p=L->next;L->next=NULL;while(p!=NULL){q=p;p=p->next;q->next=L;L=q;//printf("**%d\n",L->data);}return L;}return NULL;}void display(LinkList L){//打印输出单链表;LinkList p;printf("%d ",L->data);p=L->next;while(p!=NULL){printf("%d ",p->data);p=p->next;}printf("\n");}LinkList add_LNumber(LinkList L1,LinkList L2){//2大数相加,单链表实现;LinkList L,p,q,head,r;int c;//进位;int temp;L=(LinkList)malloc(sizeof(LNode));head=(LinkList)malloc(sizeof(LNode));head->next=NULL;L=head;p=L1;q=L2;c=0;while(p!=NULL&&q!=NULL){r=(LinkList)malloc(sizeof(LNode));temp=p->data+q->data+c;r->data=temp%10000;//printf("***%d\n",r->data);r->next=NULL;c=temp/10000;head->next=r;head=r;p=p->next;q=q->next;}while(p!=NULL){//L1剩余部分非空;r=(LinkList)malloc(sizeof(LNode));temp=p->data+c;r->data=temp%10000;r->next=NULL;c=temp/10000;head->next=r;head=r;p=p->next;}while(q!=NULL){//L2剩余部分非空;r=(LinkList)malloc(sizeof(LNode));temp=q->data+c;r->data=temp%10000;r->next=NULL;c=temp/10000;head->next=r;head=r;q=q->next;}if(c!=0){//还有进位;r=(LinkList)malloc(sizeof(LNode));r->data=c;r->next=NULL;head->next=r;}return L->next;}int main(){char s1[MAXLEN],s2[MAXLEN];int len1,len2,add_len,i;LinkList L1,L2,L;L1=(LinkList)malloc(sizeof(LNode)); L2=(LinkList)malloc(sizeof(LNode)); printf("请输入第一个大数:\n"); scanf("%s",s1);len1=strlen(s1);L1=createList(s1,len1);printf("请输入第二个大数:\n"); scanf("%s",s2);len2=strlen(s2);L2=createList(s2,len2);L1=reverse(L1);L2=reverse(L2);//display(L1);//display(L2);L=add_LNumber(L1,L2);//display(L);L=reverse(L);display(L);}==》09年09华中科技大学复试有关题目嵌入式方向笔试是数据库和算法概论数据库考了查询语言,死锁,等等算法概论:1题:好像是螺丝和螺母问题,每个螺丝对应一个螺母,大概有100对吧,找出相应对,最后计算时空复杂度。
华中科技大学834计算机专业基础综合考研真题试题2017年
华中科技大学2017年招收攻读硕士研究生入学考试自主命题试题考试科目及代码: 834计算机专业基础综合(数据结构、计算机网络) 适用专业: 计算机系统结构、计算机软件与理论、计算机应用技术、网络空间安全、计算机技术、项目管理、控制科学与工程(所有答案都必须写在答题纸上,写在试题纸上及草稿纸上无效,考完后试题随答题纸交回)数据结构部分(90分)一、选择题(20分,每题2分)1.二元组形式表为A=(D,R),D={01,02,03,04,05}R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,03>,<03,04>},则数据结构A 是( )。
A.集合B.树形结构C.线性结构D.图形结构2.下列存储结构中,()适合作为队列的存储结构。
A.采用尾指针的单链表B.采用头指针的循环单链表C.采用尾指针的循环单链表D.采用头指针的单链表3.如下程序段的时间复杂度为()。
viod main(){ int s=0,i=0;do{ i=i+1;s=s+i; }while( i<=n);};A.O(nLog2n)B.O(n)C.O(n ^2)D.(n ^3/2)4.下列类型中不直用顺序结构存储的是( )。
A.树B.数组C.图D.广义表5.设指针变量p指向双链表结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点的操作序列为()。
A.p->next=s;s=->pre=p;p->next->pre=s;s->next=p->next;B.s->pre=p;s->next=p->next;p->next=s;p->next->pre=s;C.s->pre=p;s->next=p->next;p->next->pre=s;p->next=s;D.p->next=s;p->next->pre=s;s->pre=p;s->next=p->next;6.已知s=”abacbabcaccab”,串t1=“aba”串t2=“cba”,函数index(s,t)的返回值为串t在串s中首次出现的位置。
华中科技大学-考研复试-上机题-标准答案
{
inti=0,j,k,temp;
do{
printf("请输入学号:");
scanf("%d",&a[i].sno);
if(a[i].sno==0)
ﻩbreak;
printf("请输入成绩:");
scanf("%d",&a[i].grade);
i++;
}
while(1);
for(j=0;j<i;j++)
main()
{
inti=0;
FILE *fp1,*fp2;
charch;
char*[2]={"test2.txt","test3.txt"};
if((fp1=fopen("test1.txt","a"))==NULL)
{
ﻩ printf("Error!");
return;
}
while(i<2)
{
if((fp2=fopen([i],"r"))==NULL)
{
ﻩ printf("Error!");
return;
}
else
while((ch=fgetc(fp2))!=EOF)
fputc(ch,fp1);
fputs("\n",fp1);
L=(structlinknode*)malloc(sizeof(linknode));
L->next=NULL;
p=L;
scanf("%d",&a);
while(a!=0)
{
ﻩq=(structlinknode*)malloc(sizeof(linknode));
计算机考研复试题目及答案
计算机考研复试题目及答案计算机考研复试作为考生进入硕士研究生阶段的重要一环,对考生的计算机专业知识以及解决问题的能力进行全面考察。
下面将给大家介绍一些常见的计算机考研复试题目及答案,希望能够对考生们的备考有所帮助。
一、综合知识与技术能力1. 请简述计算机系统结构并指出其中的关键组成部分。
计算机系统结构由四个主要组成部分构成:中央处理器(CPU)、存储器、输入设备和输出设备。
其中,中央处理器是计算机的核心,负责进行数据的计算和操作;存储器用于存储数据和程序;输入设备用于将外部信息输入计算机系统;输出设备则是将计算机处理的结果显示给用户。
2. 请说说主流操作系统的分类及其特点。
主流操作系统主要分为四类:分时操作系统、实时操作系统、网络操作系统和分布式操作系统。
分时操作系统以时间片轮转的方式实现多个用户同时使用计算机系统,具有良好的用户体验和资源管理能力;实时操作系统主要用于对时间要求严格的任务处理,能够满足实时性要求;网络操作系统则是针对网络环境下的计算机系统,强调对网络资源的管理和协同工作;分布式操作系统则是将多台计算机组成一个整体共享资源的系统,实现了资源共享和负载均衡的优点。
二、数据结构与算法1. 请简述常见的排序算法并给出它们的时间复杂度。
常见的排序算法有冒泡排序、选择排序、插入排序、快速排序和归并排序。
冒泡排序的时间复杂度为O(n^2);选择排序的时间复杂度也为O(n^2);插入排序的时间复杂度为O(n^2);快速排序的时间复杂度为O(nlogn);归并排序的时间复杂度也为O(nlogn)。
2. 请解释什么是动态规划算法,并给出一个应用实例。
动态规划算法是指通过对问题进行划分和确定状态转移方程,将问题分解为若干子问题的求解得到最优解的方法。
一个经典的动态规划应用实例是求解斐波那契数列。
斐波那契数列定义为:F(0) = 0,F(1) = 1,F(n) = F(n-1) + F(n-2)。
我们可以使用动态规划算法以时间复杂度O(n)求解斐波那契数列中的第n项。
华科计算机复试数据库考试范围
华科计算机复试数据库考试范围“哎呀,这华科计算机复试数据库考试到底考些啥呀?”我着急地跟我的小伙伴们抱怨着。
那天,阳光透过教室的窗户洒在课桌上,形成一片片光影。
我和我的几个好朋友围坐在课桌旁,正为这华科计算机复试数据库考试的范围而头疼。
“我也不知道呀,感觉心里好没底。
”小明皱着眉头说。
“可不是嘛,要是知道个大概范围,我们也好有针对性地复习呀。
”小红也附和道。
我挠挠头,思索着:“要不我们去问问老师吧?”“嗯,也只能这样了。
”大家纷纷点头。
于是,我们一群人风风火火地跑到老师办公室。
“老师,老师,华科计算机复试数据库考试范围到底是什么呀?”我迫不及待地问。
老师看着我们着急的样子,笑了笑说:“别着急呀,孩子们。
数据库考试的范围主要包括数据库的基本概念、数据模型、关系数据库、SQL 语言、数据库设计、数据库管理等等。
”“哇,这么多呀!”我惊叹道。
“那这些内容里哪些是重点呀?”小明紧接着问。
老师耐心地解答着我们的问题:“像关系数据库和 SQL 语言就是很重要的部分,你们一定要好好掌握。
”我们一边听一边认真地做着笔记,心里渐渐有了底。
从老师办公室出来后,我们又围在一起讨论。
“这下好了,知道范围了,我们就可以好好复习啦!”我兴奋地说。
“对呀,加油,我们一定能行的!”小红鼓励着大家。
在接下来的日子里,我们就像上了发条一样,拼命地复习着数据库的知识。
遇到不懂的地方,我们就互相讨论,或者再去请教老师。
那段时间,我们仿佛置身于一个知识的海洋中,努力地游向彼岸。
虽然辛苦,但我们都知道,这是为了实现我们的梦想。
终于,到了复试的那一天。
我深吸一口气,走进考场。
当看到试卷上的题目时,我心中一阵窃喜,因为很多都是我们复习过的内容。
考完试后,我和小伙伴们再次聚在一起。
“这次感觉还不错呢!”小明笑着说。
“是呀,多亏了我们之前那么努力地复习。
”我说。
我们都开心地笑了,因为我们为了这个目标付出了很多,而现在,我们期待着一个好的结果。
我想说,努力真的不会白费呀!只要我们朝着目标前进,就一定能收获属于我们的成功!原创不易,请尊重原创,谢谢!。
谢希仁 计算机网络 华科考研复试 习题
习题二
1、模拟传输和数字传输各有何优缺点?为什么数字化是 今后通信的发展方向? 2、用香农公式计算一下,假定信道带宽为3100Hz,最大 信息传输速率为35kbps,那么若想使最大信息传输速率增 加60%,问信噪比S/N应增大到多少倍?如果在刚才计算 出的基础上将信噪比S/N再增大到10倍,问最大信息速率 能否再增加20%? 3、简要说明为什么T1的速率为1.544Mbps,E1的速率为 2.048Mbps? 4、画出信息“101011”的不归零码 曼彻斯特编码 差 不归零码、曼彻斯特编码 不归零码 曼彻斯特编码、差 分曼彻斯特编码波形图。 分曼彻斯特编码
?2用香农公式计算一下假定信道带宽为3100hz最大信息传输速率为35kbps那么若想使最大信息传输速率增加60问信噪比sn应增大到多少倍
习题一
1、试从多个方面比较电路交换、报文交换和分组交换的主要优缺点。 2、试在下列条件下比较电路交换和分组交换。要传送的报文共 x(bit)。从源站到目的站共经过k段链路,每段链路的传播时延为d(s)。 数据率为b(b/s)。在电路交换时电路的建立时间为s(s)。在分组交换 时分组长度为p(bit),且各结点的排队等待时间可忽略不计。问在怎 样的条件下,分组交换的时延比电路交换的要小? 3、举出OSI参考模型和TCP/IP参考模型的两个共同点及两个不同点。 4、OSI的哪一层分别处理以下问题: 把传输的比特流划分为帧; 决定使用哪条路径通过通信子网。
习题三
1、要发送的数据为1101011011。采用CRC的生成多项式是 P(X)=X4+X+1。试求应添加在数据后面的余数。数据在传输 过程中最后一个1变成了0,问接收端能否发现?若数据在传 输过程中最后两个1都变成了0,问接收端能否发现? 2、双工停等协议中为什么采用“背回”技术? 3、有一比特串0110111111111100用HDLC协议传送。经过 零比特填充后变成怎样的比特串?若接收端收到的HDLC帧 的数据部分是0001110111110111110110,问删除发送端加 入的零比特后变成怎样的比特串?
华科计算机保研复试机试题目2
华中科技大学复试机试题目2008年一.1、狼过河问题(运用到回溯)2、统计文件中单词数目3、N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。
(递归)4、链表操作二.第一个是一个上楼梯的种数的统计,本来是一个用递归可以解决的问题,但是题目偏偏要求编写快速算法,言下之意就是要求你把递归转化成非递归。
第二个题是链表的,要求依照给出的结构体依次实现输入链表,保存链表,删除链表,从磁盘读取链表,显示链表这几个操作。
做这个题,如果不记得保存文件的函数,很可能做不全或者做不出来。
第三个是要求根据- | \ / 四个字符来实现题目所规定的一个长方体。
并能使这个长方体适当的放大。
这个是一个递归问题,但是我想了半天也没有做出来。
20061.输入一个数列以0位结束标志,建立链式线性表,查找其中最大的数并输出删除释放节点,然后对剩余的进行排序,并输出释放节点2.输入一个数列以0位结束标志,建立二叉遍历数,并对其进行逆中序遍历,释放空间第一题是对输入的5个数排序,输出的结果到文件里。
第二题是用链表去对上面的5个数字排序。
第三题是输入一个ip地址串,判断是否合法。
2005第一题:对给定的一个字符串,找出有重复的字符,并给出其位置,如:输入:abcaaAB12ab12输出:a,1;a,4;a,5;a,10b,2;b,111,8;1,122,9;2,13第二题:输入一个四行五列的矩阵,找出每列最大的两个数,如:输入:1 2 3 4 9-1 4 9 8 812 9 8 7 07 8 9 7 0输出:12 9 9 8 97 8 9 7 8第三题:输入一个字符串,建立一个二叉排序树,并中序遍历输出;其它年份题目1.给出年分m和一年中的第n天,算出第n天是几月几号(提示中给出了判断闰年的方法),按yyyy-mm-dd的格式打印出来2.职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来,n可以取63.n个人排一圈123报数,报到3的人退到圈外,直到剩最后一个人为止4.冒泡排序。
华中科技大学计算机考研复试机试题(含代码)
上机考试。
一般网站上公布上机环境要求是,但实际上是可以使用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()的参数进行调度任务函数。
华科计算机考研复试上机题目
2000-2010机试题见九度OJ:/graoldexamset.php2011机试题2012机试题1(1)输入一个无符号长整数,将最高字节与最低字节互换,然后再输出。
(2)将这个长整数中间两个字节循环左移n位(n要输入),然后再输出。
(3)将长整数按照二进制输出,每8位输出一个空格2.(1)输入n个字符串,字符串只能是纯字母或者纯数字,不能事先指定字符串个数,最后将输入字符串倒序输出(2)将纯字母的字符串按照字典顺序排序,纯数字的字符串按照数值大小排序,最后在输出。
3.就是一个有关城市间的公路建设,图我忘记了,就是一个带权值的无向图,不过其中的边和顶点都有编号。
有两问,第一问是将所有的边按权值排序输出,第二问是就是求最小生成树,求出具体路径,和最小代价补充:/thread-88089-1-1.html2013机试题1.孪生素数(30分)如果n和n+2都是素数,则称它们是孪生素数。
输入m,输出2个均不超过m的最大孪生素数。
5<=m<=1000。
例如m=20时候,答案为17、192.顺转数组(30分)输入一个数字n,输出一个n阶顺转数组如输入:5输出:123451617181961524252071423222181312111093.最长子回文串(40分)、输入一个字符串,求出其中最长的回文子串。
子串的含义是:在原串连续出现的字符串片段。
回文的含义是:正着看和倒着看是相同的,如abba和abbebba。
在判断是要求忽略所有的标点和空格,且忽略大小写,但输出时按原样输出(首尾不要输出多余的字符串)。
输入字符串长度大于等于1小于等于5000样例输入She say:Madam,I'm Adam.样例输出Madam,I'm Adam附:试题照片编译环境有VC、codeblocks,要求编写纯c语言代码编译环境有VC、codeblocks,要求编写纯c语言代码1.输入一串字符,并验证其是否为正确的电话号码。
计算机考研复试面试题库及答案
计算机考研复试面试题库及答案一、专业基础知识1. 计算机组成原理题目:简述冯·诺伊曼体系结构的基本原理。
答案:冯·诺伊曼体系结构是一种计算机系统的设计原则,也是现代计算机的基础。
它的基本原理包括以下几点:- 存储程序:计算机通过将指令和数据存储在同一个存储器中,实现了程序的自动执行。
- 二进制系统:计算机使用二进制表示数据和指令,简化了计算机系统的设计和实现。
- 指令流水线:计算机通过将指令的执行过程划分为多个阶段,并同时进行不同指令的执行,提高了计算机的执行效率。
- 内存层次结构:计算机通过多层次的存储器结构,包括高速缓存、内存和外部存储器,提供了不同速度和容量的存储器选择。
2. 算法与数据结构题目:什么是二叉搜索树?如何实现插入和删除操作?答案:二叉搜索树(BST)是一种特殊的二叉树,满足以下条件:- 对于树中的每个节点,其左子树的所有节点的值小于该节点的值,右子树的所有节点的值大于该节点的值。
- 对于树中的每个节点,其左子树和右子树也是二叉搜索树。
实现插入操作的步骤:- 从根节点开始,将待插入的值与当前节点的值进行比较。
- 如果待插入的值小于当前节点的值,且当前节点的左子树为空,则将待插入的值作为当前节点的左子节点。
- 如果待插入的值大于当前节点的值,且当前节点的右子树为空,则将待插入的值作为当前节点的右子节点。
- 如果待插入的值小于当前节点的值,且当前节点的左子树不为空,则将当前节点更新为其左子节点,重复上述步骤。
- 如果待插入的值大于当前节点的值,且当前节点的右子树不为空,则将当前节点更新为其右子节点,重复上述步骤。
实现删除操作的步骤:- 如果待删除的节点为叶子节点,直接删除。
- 如果待删除的节点只有一个子节点,将子节点连接至待删除节点的父节点。
- 如果待删除的节点有左右子节点,找到其右子树中的最小节点,用该节点替换待删除节点,并删除最小节点。
二、算法设计与分析1. 动态规划题目:请简述动态规划算法的基本思想,并给出一个应用动态规划算法的例子。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华科历年复试机试题汇总上机考试。
一般网站上公布上机环境要求是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行,最后一道会达到150~200行。
上机时做题速度一定要快,不要总抓着一个不放,时间在不知不觉中过的是很快的。
2010年的机试题:a、输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数!(如‘3’,输出:10110011);#include <stdio.h>#include <string.h>#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<stdio.h>#include<string.h>#include<stdlib.h>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 fun[9]={task0,task1,task2,task3,task4,task5,task6,task7,};void execute(ptask* fun,int len){//执行函数for(int i=0;i<len;i++){ptask pfun=fun[i];pfun();}}void schedule(){//调度函数;ptask fun[100];//定义函数指针数组;int len;//字符串长度;char s[1000];printf("请输入字符串:\n");scanf("%s",s);len=strlen(s);for(int i=0;i<len;i++){int temp;temp=s[i]-'0';if(temp==0)fun[i]=task0;else if(temp==1)fun[i]=task1;else if(temp==2)fun[i]=task2;else if(temp==3)fun[i]=task3;else if(temp==4)fun[i]=task4;else if(temp==5)fun[i]=task5;else if(temp==6)fun[i]=task6;else if(temp==7)fun[i]=task7;}execute(fun,len);}int main(){schedule();system("pause");}c、实现一个加法器,保证两个加数是任意长的整数。
(这个题的加数由于是任意长所以把它声明成什么类型(long、int)的都是不对的,要用到结构体)。
(所以这应该是个串行加法器)#include <stdio.h>#include <string.h>#define max 1000void add(char buff1[max],char buff2[max],int len1,int len2){int num[max];int s1,s2,flag=0,i;for(i=0;i<max;i++)num[i]=0;int n1=len1-1,n2=len2-1;int k=max-1;while((n1>=0)&&(n2>=0)){s1=buff1[n1]-'0';s2=buff2[n2]-'0';if(s1+s2+flag>9){num[k]=(s1+s2+flag)%10;flag=1;}else{num[k]=(s1+s2+flag)%10;flag=0;}n1--;n2--;k--;}if(n1>=0){while(n1>=0){s1=buff1[n1]-'0';if(s1+flag>9){num[k]=(s1+flag)%10;flag=1;}else{num[k]=(s1+flag)%10;flag=0;}n1--;k--;}}if(n2>=0){while(n2>=0){s1=buff2[n1]-'0';if(s1+flag>9){num[k]=(s1+flag)%10;flag=1;}else{num[k]=(s1+flag)%10;flag=0;}n2--;k--;}}if(flag){num[k]=1;k--;}for(i=k+1;i<=max-1;i++)printf("%d",num[i]);printf("\n");}void main(){char buff1[max];char buff2[max];int len1,len2;scanf("%s",buff1);scanf("%s",buff2);len1=strlen(buff1);len2=strlen(buff2);add(buff1,buff2,len1,len2);}==》08年的华科招收研究生上机试题:(1)输入一个十进制数,将其先转化为八进制数,然后再输出#include <stdio.h>main(){int a = 0 ;printf ("Please enter a decimal number:") ;scanf ("%d",&a) ;printf ("%d's octal number is %o\n",a,a) ;}(2)用户输入一个文本名,编程实现输出文本中最长的一行和最短的一行。
如果最长和最短的不止一行,请全部输出。
#include<stdio.h>#include<string.h>#include<stdlib.h>#define BUFFSIZE 1000int main(){FILE *fp;char filename[255];printf("Please input the name of the file:\n");scanf("%s",filename);if((fp=fopen(filename,"r"))==NULL){printf("File open error!");}char Line[BUFFSIZE][BUFFSIZE];int i,cnt;i=0;cnt=0;while((fgets(Line[i],BUFFSIZE,fp))&&i<BUFFSIZE){i++;cnt++;}char tempMax[BUFFSIZE];char tempMin[BUFFSIZE];strcpy(tempMax,Line[0]);strcpy(tempMin,Line[0]);for(i=1;i<cnt;i++){if(strlen(Line[i])>strlen(tempMax))strcpy(tempMax,Line[i]);if(strlen(Line[i])<strlen(tempMin))strcpy(tempMin,Line[i]);}printf("The longest string :\n");for(i=0;i<cnt;i++){if(strlen(Line[i])==strlen(tempMax))printf("%s\n",Line[i]);}printf("The shortest string :\n");for(i=0;i<cnt;i++){if(strlen(Line[i])==strlen(tempMin))printf("%s\n",Line[i]);}//system("pause");}本文来自CSDN博客,转载请标明出处:/xiajun07061225/archive/2011/03/18/6259774.aspx(3)输入学生信息:学号,三门课程的成绩,学号为0时结束,将其存储在链表A中,从中找出分数大于平均分的学生,并将该学生信息按平均分降序排列存入到链表B中,最后输出链表B。