您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > C语言上机考试复习题key
1、请编写函数merge(inta[],intn,intb[],intm,int*c)实现如下功能:将两个从小到大有序数组a和b复制合并出一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。在主函数中调用merge并输出合并后的数组c。2、有一字符串,包含n个字符,写一函数substrcpy(char*str1,char*str2,intm)实现如下功能:将此字符串str1中从第m个字符开始的全部字符复制到字符串str2中。在主函数中调用substrcpy并输出结果。3、将一个整数字符串转换为一个整数,如“-1234”转换为-1234。要求用指针实现。4、用结构体实现:编写程序将下列数据赋予结构体变量,并将它们输出(直接输出和用结构体数组输出)。姓名年龄月薪李明252500王利222300赵勇3030006、从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test.dat”中保存,再从该文件中读出字符串并显示出来。输入的字符串以“!”结束。(下面有错,第二个文件打开指令改为rb)7、从文件test.txt中读入一批整数,并将它们按照递增的顺序存放在一个数组中。8、将一个磁盘文件中的信息复制到另一个磁盘文件中。9、编程:定义函数求十个数的最大值,并在主调函数中输出。(类比第15题)10、从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个“#”为止。11、编程:输入年、月、日,用子函数判断计算该日期是该年的第几天。5、用结构体实现:有五个学生,每个学生的数据包括学号、姓名、三门课的成绩。从键盘输入5个学生的相关数据,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号,姓名、三门课的成绩,三门课的平均分)。要求使用结构体变量。12、编程:任意输入一个数,定义函数,将其按原来排序的规律将它插入已排好序的数组中。如:原数组为{2,3,5,7,9},输入4,则新数组为{2,3,4,5,7,9}13、定义函数,判断某数是否是水仙花数,调用该函数找出100-999之间的水仙花数14、用行指针法寻找3*4矩阵中的最大值15、任意输入10个数,定义函数,找出其中的最大值和最小值,并在主调函数中输出这两个值(利用指针实现)16、输入两个整数,将他们互换,用带参数的宏来实现。17、输入两个整数,求他们的最大值,定义外部函数来实现。(类比15题)18、通过指针变量来输出九九乘法表。19、通过指针变量实现1+2+3+……+n,在程序中输出改结果。20、将n个数按输入时顺序的逆序排列,用函数实现。21、输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。22、编程实现输入n(n1000)个整数到指定数组,求该数组中最大元素的值和此元素的下标,最大元素值以函数值返回,此元素的下标通过指针形参返回调用处。23、已知节点结构如下:structstudent{Charno[7];Charname[9];Structstudent*next;}(1)定义函数creat,从无到有地创建一个新链表,保存若干节点信息,节点个数不限(2)定义函数show,,输出链表中所有节点信息24、用字符数组存储任意输入的10个字符,在子函数中把该字符数组的小写字母转换成大写字母。(类比6)25、输入一串字符,以‘?’结束,统计各字母出现的次数,并按字母出现的多少输出(先输出字母出现多的,次数相同的按字母表顺序输出,不出现的字母不输出)。例:输入:5b3a+4-hdeh5dh?输出:h3d2a1b1e126、编写函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。(要求利用指针完成,不使用全局变量)27、写一函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。(要求利用指针完成,不使用strlen函数)28、编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中,不用strcpy函数。注意,复制时,’\0’也要复制过去。‘\0’后面的字符不复制。(要求用指针实现)29、输入三个数,用指针变量的方式按由小到大的顺序输30、链表头插,尾插,反序,插入,删除,浏览,存盘,读取。#includestdlib.htypedefintelemtype;typedefstructnode{elemtypedata;structnode*next;}NODE;NODE*h_creat(){NODE*p,*head;intlen;printf(请问要创建几个节点?:);scanf(%d,&len);head=(NODE*)malloc(sizeof(NODE));head-next=NULL;while(len){p=(NODE*)malloc(sizeof(NODE));printf(请输入该节点数据:);scanf(%d,&p-data);p-next=head-next;head-next=p;len--;}returnhead;}voidreverse(NODE*head){NODEstack[1024],*p=head-next;inti=0;while(p){stack[i].data=p-data;i++;p=p-next;}p=head-next;while(i0){p-data=stack[--i].data;p=p-next;}}NODE*t_creat(){NODE*head,*tail,*p;intlen;printf(请问要创建几个节点?:);scanf(%d,&len);tail=head=(NODE*)malloc(sizeof(NODE));head-next=NULL;while(len){p=(NODE*)malloc(sizeof(NODE));printf(请输入该节点数据:);scanf(%d,&p-data);tail-next=p;tail=p;p-next=NULL;len--;}returnhead;}voidview(NODE*head){NODE*p=head-next;printf(链表数据如下:\n);while(p){printf(%d,p-data);p=p-next;}}NODE*search(NODE*head,intkey){NODE*p;p=head-next;while(p){if(p-data==key){returnp;}p=p-next;}returnNULL;}voiddestroylist(NODE*head){NODE*p=head-next,*q;while(p){q=p-next;free(p);p=q;}free(head);}intinsert(NODE*head,NODE*p,intpos){NODE*q=head-next;if(pos==0){printf(插入位置不合理!);return0;}pos--;while(pos){pos--;q=q-next;}p-next=q-next;q-next=p;return1;}voiddele(NODE*head,NODE*p){NODE*q=head-next,*r=head;while(q!=p){q=q-next;r=r-next;//r晚走一步,循环结束,获得的是待删除节点的首地址}r-next=p-next;}voidmain(){NODE*head1,*head2;NODE*p;intdata,pos;printf(开始创建第一条链表:\n);head1=h_creat();view(head1);destroylist(head1);printf(\n开始创建第二条链表:\n);head2=t_creat();view(head2);printf(\n请输入待查找的键值,查找将在第2条链上进行:\n);scanf(%d,&data);if(search(head2,data)==NULL)printf(没有找到该结点!\n);elseprintf(找到该结点!\n);reverse(head2);//反序view(head2);printf(\n准备插入新结点:\n);p=(NODE*)malloc(sizeof(NODE));printf(请输入待插入结点的键值:);scanf(%d,&p-data);printf(请输入待插入的位置:);scanf(%d,&pos);if(insert(head2,p,pos))view(head2);printf(\n准备删除结点:\n);printf(请输入待删除结点的键值:);scanf(%d,&data);if((p=search(head2,data))==NULL)printf(没有找到该结点,不能删除!\n);else{dele(head2,p);printf(删除后);view(head2);}destroylist(head2);}voidsave(NODE*head){FILE*fp;NODE*p=head-next;fp=fopen(line.dat,w);if(fp==NULL){…}while(p){fwrite(p,sizeof(NODE),1,fp);p=p-next;}fclose(fp);}NODE*load(){NODE*p,*head;FILE*fp;fp=fopen(line.dat,r);head=(NODE*)malloc(sizeof(NODE));head-next=NULL;if(fp==NULL){…}while(!feof(fp)){p=(NODE*)malloc(sizeof(NODE));fread(p,sizeof(NODE),1,fp);if(feof(fp)){free(p);break;}p-next=head-next;head-next=p;}fclose(fp);returnhead;}31、堆栈的思想解决计算某数的二进制问题#defineN1024typedefstructstack{intdata[N];inttop;}STACK;STACKs;voidinit_stack(){s.top=0;}voidpush(intn){s.data[s.top]=n;s.top++;}voidconvert(intn){while(n){push(n%2);n/=2;printf(%d,n);}}intpop(){intk;k=s.data[--s.top];returnk;}voidprn(){while(s.top){printf(%d,pop());printf(\n);}}voidmain(){intn;printf(请输入待转换的整数:);scanf(%d,&n);init_stack();convert(n);printf(转换后的数为:);prn();}综合应用三题//门诊#includestdlib.h#includestring.htypedefstructnode{intno;structnode*link;}NODE;NODE*front;NODE*rear;voidinitqueue(){NODE*p;p=(NODE*)malloc(sizeof(NODE));front=rear=p;}intemptyqueue(){if(front==rear)return1;return0;}voidenqueue(intno){NODE*p;p=(NODE*)malloc(sizeof(NODE));p-no=no;p-link=NULL;front-link=p;rear=p;}intdelqueue(){intno;NODE*p=front-link;if(!emptyqueu
本文标题:C语言上机考试复习题key
链接地址:https://www.777doc.com/doc-2907797 .html