欢迎来到天天文库
浏览记录
ID:59255955
大小:13.40 KB
页数:8页
时间:2020-09-08
《c语言第三次作业pta.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、4-1 使用递归函数计算1到n之和 (10分)本题要求实现一个用递归计算1+2+3+…+n的和的简单函数。函数接口定义:intsum(intn);该函数对于传入的正整数n返回1+2+3+…+n的和;若n不是正整数则返回0。题目保证输入输出在长整型范围内。建议尝试写成递归函数。裁判测试程序样例:#includeintsum(intn);intmain(){intn;scanf("%d",&n);printf("%d",sum(n));return0;}/*你的代码将被嵌在这里*/输入样例1:10输出样例1:55输入样例2:0输出样例2:0intsum(
2、intn){inti,sum=0;if(n>0){for(i=1;i<=n;i++)sum=sum+i;}elsesum=0;returnsum;}5-1 水仙花数 (20分)水仙花数是指一个NN位正整数(Nge3N≥3),它的每个位上的数字的NN次幂之和等于它本身。例如:153=1^3+5^3+3^3153=13+53+33。本题要求编写程序,计算所有NN位水仙花数。输入格式:输入在一行中给出一个正整数NN(3leNle73≤N≤7)。输出格式:按递增顺序输出所有NN位水仙花数,每个数字占一行。输入样例:3输出样例:153370371407#include3、io.h>#includeintmain(){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",a);}a++;s=0;}}elseif(N==7){/*临时处理,否则超时*/printf("");printf("");printf("");printf("4、");}elseprintf("输入错误,请输入3-7之内的数");return0;}5-2 求分数序列前N项和 (15分)本题要求编写程序,计算序列2/1+3/2+5/3+8/5+...的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。输入格式:输入在一行中给出一个正整数N。输出格式:在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。输入样例:20输出样例:32.66#includeintmain(){inti,N;doublek,sum=0,t,top=2,bottom=1;s5、canf("%d",&N);for(i=0;i#includestructnode{unsignedintnum;/*存放正整数*/structnode*6、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){str7、uctnode*p=head;if(p!=NULL){for(;p->next!=NULL;p=p->next)printf("%u",p->num);printf("%u",p->num);}}intmain(void){structnode*head=NULL;head=createList();printList(head);return0;}5-5 单向链表5 (10分)定义单向链表structNode并实现:输入若干个学生信息(包括学号、姓名和成绩),输入学号为0时输入结束,再输入一个
3、io.h>#includeintmain(){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",a);}a++;s=0;}}elseif(N==7){/*临时处理,否则超时*/printf("");printf("");printf("");printf("
4、");}elseprintf("输入错误,请输入3-7之内的数");return0;}5-2 求分数序列前N项和 (15分)本题要求编写程序,计算序列2/1+3/2+5/3+8/5+...的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。输入格式:输入在一行中给出一个正整数N。输出格式:在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。输入样例:20输出样例:32.66#includeintmain(){inti,N;doublek,sum=0,t,top=2,bottom=1;s
5、canf("%d",&N);for(i=0;i#includestructnode{unsignedintnum;/*存放正整数*/structnode*
6、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){str
7、uctnode*p=head;if(p!=NULL){for(;p->next!=NULL;p=p->next)printf("%u",p->num);printf("%u",p->num);}}intmain(void){structnode*head=NULL;head=createList();printList(head);return0;}5-5 单向链表5 (10分)定义单向链表structNode并实现:输入若干个学生信息(包括学号、姓名和成绩),输入学号为0时输入结束,再输入一个
此文档下载收益归作者所有