ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:24.17KB ,
资源ID:6317675      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6317675.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电子科技大学820计算机复试自己编写C复试答案.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电子科技大学820计算机复试自己编写C复试答案.docx

1、电子科技大学820计算机复试自己编写C复试答案1、单链表逆序(考频:5次)不用输入就在函数生成函数生成数据如下:Head=malloc(sizeof(struct LNode);Head-next=NULL;For(i=5;i=0;i-)P=malloc(sizeof(struct LNode);P-val=i;P-next=head-next;Head-next=p;/头插法建立数据#include #includestruct LNode int val; struct LNode *next;LNode5=1,NULL,2,NULL,3,NULL,4,NULL,5,NULL;/建立单链表

2、void reverse(struct LNode *Head) struct LNode *p,*q; p=Head-next; Head-next=NULL; while(p)/注意这里,重点在这里! q=p-next; p-next=Head-next; Head-next=p; p=q; p=Head-next; while(p) printf(%-4d,p-val); p=p-next; printf(n); void main() int i,e,n; struct LNode *p,*Head,*q; Head=(struct LNode *)malloc(sizeof(stru

3、ct LNode); p=Head; printf(输入建立单链表所需的整数个数:); scanf(%d,&n); printf(输入%d个数据,以回车键隔开:n,n); for(i=0;ival=e; p-next=q; p=q; p-next=NULL;/至关重要的一步! p=Head-next; printf(建立单链表的结果如下n); while(p) printf(%-4d,p-val); p=p-next; printf(n);/* for(i=0;i5;i+) printf(%-7d,LNodei.val); printf(n); */ printf(单链表逆序结果如下:n);

4、reverse(Head);2、计算1-x+x2/2!-x3/3!+.+xn/n!,x是单浮点数,n是整数(考频:3次)#include void main() int j,n,flag=-1; float x,sum1=1,sum2=1,sum=1; printf(请输入求和用到的x和n,用英文逗号隔开n); scanf(%f,%d,&x,&n); if(n=0)/等于和赋值弄错了! printf(求和的值为1.0n); return; for(j=1;j=n;j+) sum1*=x; sum2*=j; sum+=flag*(sum1/sum2); flag=-flag; printf(求和

5、的值=%fnn,sum);3、数质因数分解(考频:2次)#include#define N 20int isPrime(int n) int i=2; while(n%i!=0) i+; if(i=n) return 1; else return 0;void main() int num,i,aN,j=-1; printf(请输入需要分解的正整数:n); scanf(%d,&num); printf(%d=,num); if(num=4) for(i=2;i1) a+j=num; for(i=0;i=j;i+) printf(%d,ai); if(ij) printf(*); printf(

6、n);4、字符串逆序,不申请新的数组空间#include #include #define N 100void reverse(char str) int len,i; char temp; len=strlen(str); for(i=0;i(len/2);i+)/次数这里出错,相当于没有交换 temp=stri; stri=strlen-i-1; strlen-i-1=temp; / stri=0; 结束符一直在void main() char strN,*res; printf(请输入字符串:n); scanf(%s,str); reverse(str); printf(逆序的结果如下:

7、n%sn,str);5、file1的容全部复制到file2中,且在file2的每一行都要加上行号,最后返回file1中的字符个数。#include #include /*void main() FILE *fp1,*fp2; fp1=fopen(c:1.txt,r);/重要,不存在不会创建新文件! if(fp1!=NULL) printf(成功打开n);*/*#define MAX 1000void main() FILE *fp1,*fp2; char c=n; fp1=fopen(1.txt,r); fp2=fopen(2.txt,w); while(!feof(fp1) char tem

8、pMAX; fgets(temp,MAX,fp1);/每次都读到换行符结束,换行符算一位,字符串最后面一定是0,有换行符则加在0前面,n=10=换行符 fputs(temp,fp2); fclose(fp1); fclose(fp2); */void main() FILE *fp1,*fp2; char temp; int counts=0,row=1; fp1=fopen(file1.txt,r); fp2=fopen(file2.txt,w+); while(!feof(fp1) temp=fgetc(fp1); if(temp!=32&temp!=n&temp!=EOF)/32代表,1

9、0代表n +counts; if(temp!=n) fputc(temp,fp2); else fprintf(fp2, 行号为:%d,row+); fprintf(fp2,n); fprintf(fp2, 行号为:%d,row); fclose(fp1); fclose(fp2); printf(file1.doc文件中的字符总数为:%dn,counts);5、分数四则运算#includelong gcd(long m,long n) while(n) long t=m%n; m=n; n=t; return m;void count(char flag,long up1,long up2,

10、long down1,long down2) long t; switch(flag) case +: up1=up1*down2+up2*down1; down1=down1*down2; break; case -: up1=up1*down2-up2*down1; down1=down1*down2; break; case *: up1=up1*up2; down1=down1*down2; break; case /: up1=up1*down2; down2=down1*up2; break; t=gcd(up1,down1); if(up1=down1) printf(1n);

11、else printf(%d/%dn,up1/t,down1/t);int main() long up1,up2,down1,down2; char flag; printf(请输入两个正分数n); while(scanf(%ld/%ld%c%ld/%ld,&up1,&down1,&flag,&up2,&down2) count(flag,up1,up2,down1,down2); return 0;7、编写一个函数,使之能完成以下功能:利用递归方法找出一个数组中的最大值和最小值,要求递归调用函数的格式如下:MinMaxValue(arr,n,&max,&min),其中arr是给定的数组,n

12、是数组的个数,max、min分别是最大值和最小值。#include stdio.h#define N 10void MinMaxValue(int arr,int n,int *max,int *min) if(n=0) if(*maxarrn) *min=arrn; MinMaxValue(arr,n-1,max,min); int main() int max=-32768,min=32767; int a=1,54,23,65,87,12,54,87,98,233; MinMaxValue(a,N-1,&max,&min); printf(Max=%d,Min=%dn,max,min);

13、 return 0;8、编写一个完整的程序,使之能完成以下功能:一段名为file.c的程序,该程序中含有括号,现要检查程序中的括号是否配对,提示:利用堆栈实现。(15分)#include #define Stack char#define Max 999int judge(char p) int len=strlen(p); int top=-1,i; Stack sMax; for(i=0;ilen;i+) switch(pi) case (: case : case : s+top=pi;/只要是左括号就放进去 break; case ): if(stop=() top-; else re

14、turn 0; break; case : if(stop=) top-; else return 0; break; case : if(stop=) top-; else return 0; break; if(top=-1) return 1; else return 0;void main() char pMax; FILE * fin; if(!(fin=fopen(file.txt,r) printf(failed); while(!feof(fin) fscanf(fin,%s,p); printf(%dn,judge(p); fclose(fin);9、统计字符串中的数字字符次

15、数,字符串仅由数字字符构成#includevoid main() char temp50; char *str; int i,counts10=0; printf(请输入长度不超过50的字符串(只含有数字字符):n); str=temp; scanf(%s,str); for(i=0;i50;i+) countsstri-0+; for(i=0;i10;i+) printf(数字%d出现的次数-%dn,i,countsi);10、利用结构数组和指向结构的指针,输出学生最低、最高成绩以及相应的学号(若有相同的分数,要输出多个学号)#include #define N 10struct stude

16、ntint num;int score;student_info100,*pS;void main()int i,max,min; printf(请输入学生学号和成绩,以逗号进行隔开n);for(i=0;iN;i+) scanf(%d,%d,&(student_infoi.num),&(student_infoi.score);max=min=student_info0.score;pS=student_info+1;for(i=1;iscoremax) max=pS-score; if(pS-scorescore;/printf(最高分为%d,最低分为%dn,max,min);pS=stud

17、ent_info;for(i=0;iscore=max)/又把等号弄错了 printf(最高分为%d,学号为%dn,pS-score,pS-num); pS=student_info;for(i=0;iscore=min) printf(最低分为%d,学号为%dn,pS-score,pS-num); 11、删除输入的字符串中的大小写字母和数字,并统计有重复的字符及其重复次数#include #include struct charInfochar val;int count;strInfo100;int delChar(char * str,char c) int i=0,count=0;/

18、len=strlen(str);不算结束符 while(stri!=0) if(stri=c) memcpy(&stri,&stri+1,strlen(&stri+1)+1); +count; else +i; return count; void main() char * str,temp1000; int i; str=temp; for(i=0;i10;i+) strInfoi.val=0+i; strInfoi.count=0; for(i=0;i26;i+) strInfoi+10.val=A+i; strInfoi.count=0; for(i=0;i26;i+) strInfo

19、i+36.val=a+i; strInfoi.count=0; scanf(%s,str);/str本来就是地址 for(i=0;i62;i+) strInfoi.count=delChar(str,strInfoi.val); printf(nnresult=%snnn,str); for(i=0;i62;i+) printf(%c出现次数%dn,strInfoi.val,strInfoi.count); printf(nn);12、小括号匹配#include #define MAX 100typedef int BOOL;/注意这个分号,bool是c+独有的#define true 1#d

20、efine false 0BOOL IsPair(FILE *fp) char STACKMAX,temp; int top=-1; while(!feof(fp) temp=fgetc(fp); if(temp=() STACK+top=temp; if(temp=) if(STACKtop=() -top; else return false; if(top=-1) return true; else return false;void main() FILE *fp; fp=fopen(file.txt,r); if(IsPair(fp) printf(配对成功!n); else pri

21、ntf(配对失败!n);13、生日大小比较#include int cmpBirth(char *st1,char *st2) int i; for(i=0;i0) return 1; else return 0; void main() char str120,str220; char *st1,*st2; printf(请输入要进行对比的两个,以回车键进行隔开n); scanf(%s,str1); scanf(%s,str2); if(cmpBirth(str1+6,str2+6) printf(第二个人年龄更大一些n); else printf(第一个人年龄更大一些n); 简洁版答案in

22、t isbothsame(char str119, char str219) int low = 6, hight = 13; while (lowhight & str1low = str2low)low+; return str1low - str2low;14、移动链表最大结点至尾部#include #include struct LNode int data; struct LNode * next;struct LNode * CreateLinklist() struct LNode *p,*Head,*q; int n,i; Head=(struct LNode *)malloc

23、(sizeof(struct LNode); Head-next=NULL; printf(请输入链表结点个数n); scanf(%d,&n); q=Head; printf(输入数据n); for(i=0;idata); q-next=p; q=p; q-next=NULL; printf(输入的链表如下所示n); p=Head-next; while(p) printf(%-4d,p-data); p=p-next; return Head;void LNodeFind(struct LNode * Linklist) struct LNode *p=Linklist-next,*q,*r; int max=p-data,counts=0,flag=1; p=p-next; while(p) if(p-data=max) max=p-data; +counts; p=p-next; while(counts) p=Linklist-next; q=Linklist; flag=1;/利用flag控制不

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1