c程序设计语言 题解,C程序设计语言综合设计》 解题报告

本文详细介绍了C语言中链表的构建、操作及转换,包括非降序到非升序的转换,并提供了合并两个非升序链表的算法。同时,文章探讨了高精度整数的四则运算,包括加、减、乘,以及大整数的存储和处理方法。此外,还涉及到了文件操作,讲解了解N元一次方程组的方法。
摘要由CSDN通过智能技术生成

《C程序设计语言综合设计》 解题报告》由会员分享,可在线阅读,更多相关《C程序设计语言综合设计》 解题报告(16页珍藏版)》请在人人文库网上搜索。

1、程序设计语言综合设计解题报告学号 姓名 许佳钰 班级 五班 (正文) (一)题目:实验目的:学习指针构造链表,操作链表。实验内容:输入两个非降序列,转换成两个非升序列,合并成一个非升序列。基本要求:用链表实现,完成解题报告。分析(解题思路及流程图):定义Struct lineint num;struct line*next;创建两个非降链表Head=creat();Headt=creat();Struct line*creat()p=pt=(struct line*)malloc(LEN);;n=0;head初始NULL;输入p-num;n+;p=(struct line*)malloc(LE。

2、N);输入转折符号?否释放多开辟的空间;并返回链表头headhead标记为链表头;N=1?是否head=turnback(head);headt=turnback(headt);pt-next=p;pt=p;p=(struct line*)malloc(LEN);是i struct line* turnback(struct line *head)/*链表反指,实现非降转非升*/p=NULL;下一个不为NULL?pt=head;head=pt-next;pt-next=p;p=pt;head-next=p;并返回head;是否开始连接下页左print(head);print(headt);he。

3、ad=together(head,headt);struct line*together(struct line *head,struct line*headt)head标记两链表头中最大的;headt=head; p标记另一条链表头;headt-next!=NULL?pt=headt-next;pt-num num?headt-next=p;headt=p;p=pt;headt=pt;headt-next=p;并返回head;是否否是print(head);结束void print(struct line*head)head!=NULL?printf(%d ,head-num);head=h。

4、ead-next;printf(n);是否程序代码(核心代码):while(headt-next)pt=headt-next;if (pt-numnum)headt-next=p;headt=p;p=pt;else headt=pt;测试方案:2 3 4 5 5 8 25 65 881 3 5 25 98 100输入:2 3 4 5 5 8 25 65 881 3 5 25 98 100输出:88 65 25 8 5 5 4 3 2100 98 25 5 3 1100 98 88 65 25 25 8 5 5 5 4 3 3 2 1心得:在函数together 中,p/headt/head三者。

5、关系一开始没有处理好(二)题目:实验目的:学习数组的应用。实验内容:高精度整数的四则运算(200位以内)。基本要求:对给定的大整数,做相关运算。必做:+(加法)-(减法)(乘法);选做:(除法)%(求余)gcd(最大公约数)lcm(最小公倍数)完成解题报告。分析(解题思路及流程图):开始num10=length(s1);num20=length(s2);scanf(%s%s,s1,s2);Sun(s1,s2,s3,num1,num2,num3);Delete1(s1,s2,s4,num1.num2.num4);Multiplication(s1,s2,s5,num1,num2,num5);pr。

6、intf(两数和为%sn两数之差%sn两数之积%sn,s3,s4,s5);结束/*简单函数Length函数:测量数字除去符号(负号)的长度;Compare函数:比较两个数字s1,s2对应大整数的绝对值大小,并返回较大的编号;e 函数:通过导入0,1,2,3对应返回1,10,100,1000的*/change2函数:与putin相反;即实现把numtnum1找到飞零,然后开始单个存放void sum(char*s1,char*s2,char*s3,int*num1,int*num2,int*num3)Void putin(char* s,int*num,int base,int i)t=0;de。

7、c=num0;/*putin函数实现把字符串反过来base位从num1开始存放,不足四位,前面补零, i=0表示s0不是负号,i=1表示s0是负号*/dec i?Temp=0;add=0;addi?Temp=Temp+(sdec-1-0)*eadd;add+;dec-;dec-;t+;numt=temp;回到调用该函数的地方否是否是num1,num2清零;负+负正+正s30=-; i=1;num10+;num20+;putin(s1,num1,4,i);putin(s2,num2,4,i);num10-;num20-;t=dealsum(num1,num2,num3);i=0;putin(s1。

8、,num1,4,i);putin(s2,num2,4,i);t=dealsum(num1,num2,num3);正+负负+正经处理Putin(s1); Putin(s2);通过compare函数,决定t=dealdelete1(num1,num2,num3);还是t=dealdelete1(num2,num1,num3);且确定s30;change2(num3,s3,t,i);if (length(s3)=0) s30=0; /* 处理 -0 =0 */void delete1(char*s1,char*s2,char*s4,int*num1,int*num2,int*num4)num1,nu。

9、m2清零;负-正正-负S40=-; i=1;num10+;putin(s1,num1,4,i);putin(s2,num2,4,0);num10-;t=dealsum(num1,num2,num4);i=1;num10+;putin(s1,num1,4,i);putin(s2,num2,4,0);num10-;s40=-;t=dealsum(num1,num2,num4);正+负负+正经处理putin(s1,num1,4,i);putin(s2,num2,4,0);通过compare函数,决定t=dealdelete1(num1,num2,num4);还是t=dealdelete1(num2,。

10、num1,num4);且判断s30是否为-;change2(num4,s4,t,i);if (length(s4)=0) s40=0; /* 处理-0=0 */void multiplication(char*s1,char*s2,char*s5,int*num1,int*num2,int*num5)num10=length(s1);num20=length(s2);两数同号?i=0;s50=-; i=1;t=dealmult(num1,num2,num5);change2(num5,s5,t,i);if (if (length(s5)=0)s50=0;否是int dealmult(int*n。

11、um1,int*num2,int*num5)t1=(num10+3)/4;t2=(num20+3)/4; add1=1;add1n20?t=(n10+3)/4;t=(n20+3)/4;inc=1;temp=0;inc,inc,ainc);inc+;printf(end);a0+;printf(n);返回主函数是否是否是否是否i+;int judge(int*a,int n)add=1add,inc,ainc);printf(end);a0+;printf(n);测试方案:N=4输入:. . . .输出:1,2-2,4-3,1-4,3-end1,3-2,1-3,4-4,2-endThe tota。

12、l number is 2心得:. . . .(四)题目:实验目的:学习文件的使用实验内容:解N元一次方程(1-1?line=row+1;linen?line1=row,head=numrowlineline1n+1?temp=numrowline1*numlineline;temp-=head*numlineline1;line1+; numrowline1=temp;line+;row-;row=0rown?num0row=numrown/numrowrow;return 1;count1?return 2;return 3;是否是否是否是否是否是否int findno0(float(*n。

13、um)N+1,int n,int line)add=line;addn?numaddline!=0inc=0;incn+1&add!=line?temp=numlineinc;numlineinc=numaddinc;numaddinc=temp;inc+;return line;add+;linen?return(findno0(num,n,line+1);return (n+1);是是是否否否是否void write(float(*num)N+1,int n,int i)FILE*out;(out=fopen(F:xujiayuC+answerdestination.txt,w)=NULL。

14、?printf(can not open this file!n);exit(0);i=1?add=0;addn?fprintf(out,X%d=%f ,add+1,num0add); add+;i=2?fprintf(out,there are lots of roots);fprintf(out,NO ROOT!);fclose(out);是否是否是否是否程序代码(核心代码):if (fp=fopen(F:xujiayuC+numberdestination.txt,r)=NULL)printf(can not open thie filen);exit(0);fscanf(fp,%d,&n);for(row=0;rown;row+)for(line=0;linen+1;line+)fscanf(fp,%f,&numrowline); fclose(fp); 测试方案:31 1 1 0-3 3 0 40 -3 6 2131 0 2 -12 0 3 13 0 4 321 2 32 1 342 -1 -1 1 21 1 -2 1 44 -6 2 -2 43 6 -9 7 9输入:31 1 1 0-3 3 0 40 -3 6 21输出:X1=-2. X2=-0. X3=3.心得。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值