c语言第三次作业pta

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

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

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

资源描述

4-1使用递归函数计算1到n之和(10分)本题要求实现一个用递归计算1+2+3+…+n的和的简单函数。函数接口定义:intsum(intn);该函数对于传入的正整数n返回1+2+3+…+n的和;若n不是正整数则返回0。题目保证输入输出在长整型范围内。建议尝试写成递归函数。裁判测试程序样例:#includestdio.hintsum(intn);intmain(){intn;scanf(%d,&n);printf(%d\n,sum(n));return0;}/*你的代码将被嵌在这里*/输入样例1:10输出样例1:55输入样例2:0输出样例2:0intsum(intn){inti,sum=0;if(n0){for(i=1;i=n;i++)sum=sum+i;}elsesum=0;returnsum;}5-1水仙花数(20分)水仙花数是指一个NN位正整数(N\ge3N≥3),它的每个位上的数字的NN次幂之和等于它本身。例如:153=1^3+5^3+3^3153=13+53+33。本题要求编写程序,计算所有NN位水仙花数。输入格式:输入在一行中给出一个正整数NN(3\leN\le73≤N≤7)。输出格式:按递增顺序输出所有NN位水仙花数,每个数字占一行。输入样例:3输出样例:153370371407#includestdio.h#includemath.hintmain(){intN,a,t;inti=1,s=0;scanf(%d,&N);a=pow(10,N-1);if(N=3&&N=6){while(pow(10,N-1)=a&&pow(10,N)=a){t=a;while(i=N){s=s+pow(t%10,N);t=t/10;i++;}i=1;if(a==s){printf(%d\n,a);}a++;s=0;}}elseif(N==7){/*临时处理,否则超时*/printf(1741725\n);printf(4210818\n);printf(9800817\n);printf(9926315\n);}elseprintf(输入错误,请输入3-7之内的数\n);return0;}5-2求分数序列前N项和(15分)本题要求编写程序,计算序列2/1+3/2+5/3+8/5+...的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。输入格式:输入在一行中给出一个正整数N。输出格式:在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。输入样例:20输出样例:32.66#includestdio.hintmain(){inti,N;doublek,sum=0,t,top=2,bottom=1;scanf(%d,&N);for(i=0;iN;i++){k=top/bottom;sum=sum+k;t=top;top=t+bottom;bottom=t;}printf(%.2f\n,sum);return0;}5-4单向链表4(10分)定义单向链表:输入若干个正整数(输入-1为结束标志),要求按输入数据的逆序并输出。输入输出示例:括号内为说明输入样例:1234567-1输出样例:7654321#includestdio.h#includestdlib.hstructnode{unsignedintnum;/*存放正整数*/structnode*next;};/*建立单向链表*/structnode*createList(void){structnode*head=NULL,*p,*q,*t;intnum;unsignedintsize=sizeof(structnode);scanf(%d,&num);while(num!=-1){t=(structnode*)malloc(size);/*建立新结点*/t-num=num;t-next=head;head=t;scanf(%d,&num);}returnhead;}/*输出单向链表*/voidprintList(structnode*head){structnode*p=head;if(p!=NULL){for(;p-next!=NULL;p=p-next)printf(%u,p-num);printf(%u\n,p-num);}}intmain(void){structnode*head=NULL;head=createList();printList(head);return0;}5-5单向链表5(10分)定义单向链表structNode并实现:输入若干个学生信息(包括学号、姓名和成绩),输入学号为0时输入结束,再输入一个成绩值,将成绩小于该值的学生信息删除,并将成绩大于等于该值的学生信息输出。输入输出示例:括号内为说明输入样例:1zhang782wang803li754zhao85080输出样例:2wang804zhao85#includestdio.h#includestdlib.h#includestring.hstructstud_node{intnum;charname[20];intscore;structstud_node*next;/*定义结构类型变量stud_node为全局变量*/};structstud_node*Creat_Stu_Doc();structstud_node*DeleteDoc(structstud_node*head,intmin_score);voidPtrint_Stu_Doc(structstud_node*head);intmain(){structstud_node*head;intmin_score;head=Creat_Stu_Doc();scanf(%d,&min_score);head=DeleteDoc(head,min_score);Ptrint_Stu_Doc(head);return0;}structstud_node*Creat_Stu_Doc(){structstud_node*head,*tail,*p;intnum,score;charname[20];intsize=sizeof(structstud_node);head=tail=NULL;scanf(%d,&num);while(num!=0){scanf(%s%d,name,&score);p=(structstud_node*)malloc(size);p-num=num;strcpy(p-name,name);p-score=score;p-next=NULL;if(head==NULL)head=p;elsetail-next=p;tail=p;scanf(%d,&num);}returnhead;}structstud_node*DeleteDoc(structstud_node*head,intmin_score){structstud_node*ptr1,*ptr2;while(head!=NULL&&head-scoremin_score){ptr2=head;head=head-next;free(ptr2);}if(head==NULL)returnNULL;ptr1=head;ptr2=head-next;while(ptr2!=NULL){if(ptr2-scoremin_score){ptr1-next=ptr2-next;free(ptr2);}elseptr1=ptr2;ptr2=ptr1-next;}returnhead;}voidPtrint_Stu_Doc(structstud_node*head){structstud_node*ptr;if(head==NULL){printf(\nNoRecords\n);return;}for(ptr=head;ptr;ptr=ptr-next)printf(%d%s%d\n,ptr-num,ptr-name,ptr-score);}

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

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

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

×
保存成功