西工大c语言poj作业39101274_第1页
西工大c语言poj作业39101274_第2页
西工大c语言poj作业39101274_第3页
西工大c语言poj作业39101274_第4页
西工大c语言poj作业39101274_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、T071、大数乘法#include <stdio.h>#include <string.h>#include <stdlib.h>void cheng(char a,char b) int i,j,ca,cb,*s; ca=strlen(a); cb=strlen(b); s=(int *)malloc(sizeof(int)*(ca+cb); /分配存储空间 for (i=0;i<ca+cb;i+) si=0; / 每个元素赋初值0 for (i=0;i<ca;i+) for (j=0;j<cb;j+) si+j+1+=(ai-'

2、0')*(bj-'0'); for (i=ca+cb-1;i>=0;i-) / 这里实现进位操作 if (si>=10) si-1+=si/10; si%=10; i=0; while(si=0) i+; / 跳过头部0元素 for (;i<ca+cb;i+) printf("%d",si); printf("n"); free(s);int main() char a100,b100; gets(a),gets(b); if(a0='-'&&b0!='-') pr

3、intf("-"); cheng(&a1,b); else if(a0='-'&&b0='-') cheng(&a1,&b1); else if(a0!='-'&&b0='-') printf("-"); cheng(a,&b1); else cheng(a,b); return 0;T072、创建与遍历职工链表#include <stdio.h>#include <stdlib.h>struct mem

4、ber int data; struct member*next;struct member *creat(struct member*head) struct member *p1,*p2=NULL; int i,n; scanf("%d",&n); for(i=0;i<n;i+) p1=(struct member*)malloc(sizeof(struct member); scanf("%d",&p1->data); if(i=0) head=p1; else p2->next=p1; p2=p1; p2->

5、;next=NULL; return head;void list(struct member*head) struct member *p=head; while(p!=NULL) printf("%d ",p->data); p=p->next; printf("n");int main() struct member *head; head=creat(head); list(head); return 0;T073、幸运儿#include <stdio.h>int main() int a51=0,b20,x,count=

6、0,num=0,j=0,n,i,flag=0; scanf("%d%d",&n,&x); for(i=0;i<20;i+) scanf("%d",&bi); while(1) for(i=1;i<=n;i+) if(ai=0) num+; if(num=bj) ai=1; num=0; count+; if(count=n-x) flag=1; break; if(flag=1) break; j+; num=0; for(i=1;i<=n;i+) if(ai=0) printf("%d ",

7、i); printf("n"); return 0;T074、插入链表节点#include <stdio.h>#include <stdlib.h>struct member int data; struct member*next;struct member *creat(struct member*head) struct member *p1,*p2=NULL; int i,n; scanf("%d",&n); for(i=0;i<n;i+) p1=(struct member*)malloc(sizeof(s

8、truct member); scanf("%d",&p1->data); if(i=0) head=p1; else p2->next=p1; p2=p1; p2->next=NULL; return head;struct member *insert(struct member*head) struct member *p0=head,*p1; p1=(struct member *)malloc(sizeof(struct member); scanf("%d",&p1->data); while(p0-&

9、gt;next!=NULL) if(p0->data<p1->data&&p0->next->data>p1->data) p1->next=p0->next; p0->next=p1; p0=p0->next; return head;void list(struct member*head) struct member *p=head; while(p!=NULL) printf("%d ",p->data); p=p->next; printf("n");

10、int main() struct member *head; head=creat(head); head=insert(head); list(head); return 0;T075、毕业设计论文打印#include <stdio.h>int main() int n,m,a100=0,count=0,flag=0,i,j; scanf("%d%d",&n,&m); for(i=0;i<n;i+) scanf("%d",&ai); while(1) for(i=0;i<n&&ai!=0

11、;i+) for(j=i;j<n;j+) if(aj>ai) break; if(j=n) ai=0; count+; if(i=m) flag=1; break; if(flag=1) break; printf("%dn",count); return 0;T076、链表动态增长或缩短#include <stdio.h>#include <stdlib.h>#define LEN sizeof(struct student)int a10000;struct studentint age;struct student *next;in

12、t n;struct student *creat(int num) struct student *head; struct student *p1,*p2; n=0; p1=p2=(struct student*)malloc(LEN); scanf("%d",&p1->age); head=NULL; while(n<num) n=n+1; if(n=1) head=p1; else p2->next=p1; p2=p1; p1=(struct student *) malloc(LEN); if(n<num) scanf("

13、%d",&p1->age); p2->next=NULL; return head;struct student *del(struct student *head) struct student *p1,*p2,*p3,*p4,*p5; p1=head; p5=head; do if(ap1->age=1&&p1->next!=NULL) p2->next=p1->next; p3=p5; while(p3!=NULL) if(p3->age=p1->age) if(p3=head) head=p3->n

14、ext; else p4->next=p3->next; p4=p3; p3=p3->next; else if(ap1->age=1&&p1->next=NULL) p2->next=NULL; p3=p5; while(p3!=NULL) if(p3->age=p1->age) if(p3=head) head=p3->next; else p4->next=p3->next; p4=p3; p3=p3->next; else ap1->age=1; p2=p1; p1=p1->next;

15、while(p1!=NULL); return head;int main() int num; scanf("%d",&num); struct student *p; p=creat(num); p=del(p); do printf("%d ",p->age); p=p->next; while(p!=NULL); return 0;T077、大数减法#include <stdio.h>#include <string.h>#define max(a,b) a>b?a:b#define min(a,

16、b) a>b?b:aint sum101;void jia(char a,char b) int flag=0,i,len1,len2,lenmax,lenmin; len1=strlen(a),len2=strlen(b); lenmax=max(len1,len2),lenmin=min(len1,len2); for(i=1;i<=lenmax;i+) if(i<=lenmin) sumlenmax-i=alen1-i+blen2-i-'0'-'0'+flag; if(sumlenmax-i>=10) sumlenmax-i=sum

17、lenmax-i-10; flag=1; else flag=0; else if(len1>len2) sumlenmax-i=alen1-i-'0'+flag; if(sumlenmax-i>=10) sumlenmax-i=sumlenmax-i-10; flag=1; else flag=0; else sumlenmax-i=blen2-i-'0'+flag; if(sumlenmax-i>=10) sumlenmax-i=sumlenmax-i-10; flag=1; else flag=0; if(flag=1) printf(&

18、quot;1"); for(i=0;i<lenmax;i+) printf("%d",sumi); printf("n");void jian(char a,char b) int flag=0,i; int len1,len2; len1=strlen(a),len2=strlen(b); for(i=1;i<=len1;i+) if(i<=len2) if(alen1-i-blen2-i-flag>=0) sumlen1-i=alen1-i-blen2-i-flag; flag=0; else sumlen1-i=a

19、len1-i-blen2-i-flag+10; flag=1; else if(alen1-i-flag-'0'>=0) sumlen1-i=alen1-i-flag-'0' flag=0; else sumlen1-i=alen1-i-flag+10-'0' flag=1; for(i=0;i<len1&&sumi=0;i+); for(;i<len1;i+) printf("%d",sumi); printf("n");void compare(char a,char

20、b) int len1,len2; len1=strlen(a),len2=strlen(b); if(len1>len2|(len1=len2&&strcmp(a,b)>0) jian(a,b); else if(strcmp(a,b)!=0) printf("-"); jian(b,a); else printf("0n");int main() char a100,b100; gets(a); gets(b); if(a0='-'&&b0!='-') printf(&quo

21、t;-"); jia(&a1,b); else if(a0='-'&&b0='-') compare(&b1,&a1); else if(a0!='-'&&b0='-') jia(a,&b1); else compare(a,b); return 0;T078、大数除法#include<stdio.h>#include<string.h>int len1,len2;int re105;void sub(char s1,char s2)

22、 int i=0; int j; while(1) if(s1i='0') i+; else j=i; break; for(;i<len2;i+) s1i=s1i-s2i+'0' for(i=len2-1;i>j;i-) /低位开始检测是否小于0 if(s1i<'0') s1i+=10; s1i-1-; void chu(char s1,char s2) int p,i; len1=strlen(s1); len2=strlen(s2); if(len1<len2|(len1=len2&&strncmp(

23、s1,s2,len2)<0) /如果a<b,直接输出0 printf("0n"); return; p=0; while(1) rep=0; while(strncmp(s1,s2,len2)>=0) /一直进行减法,直到不能减为止 sub(s1,s2); rep+; p+; if(len1=len2) break; for(i=len2-1;i>=0;i-) /在s2前面补0,以便进行减法运算 s2i+1=s2i; s20='0' len2+; s2len2='0' i=0; while(1) if(rei=0) i

24、+; else break; for(;i<p;i+) printf("%d",rei); printf("n");int main(void) char s1105; char s2105; gets(s1),gets(s2); if(s10='-'&&s20!='-') printf("-"); chu(&s11,s2); else if(s10='-'&&s20='-') chu(&s11,&s21);

25、else if(s10!='-'&&s20='-') printf("-"); chu(s1,&s21); else chu(s1,s2); return 0;T079、链表节点删除#include <stdio.h>#include <stdlib.h>struct student int no; char name12; int age; struct student *next;struct student *deletelist(struct student *head,int n) s

26、truct student *p=head,*q; if(p->no=n) head=p->next; free(p); else while(p->next!=NULL&p->next->no!=n) p=p->next; if(p->next->no=n) q=p->next; p->next=q->next; free(q); return head;void list(struct student *head) struct student *p=head; while(p->next!=NULL) pri

27、ntf("%d ",p->no); p=p->next; printf("n");int main() int n,i=0; struct student *head,*p1,*p2; p1=p2=(struct student *)malloc(sizeof(struct student); for(i=0;i+) if(i=0) head=p1; else p2->next=p1; p2=p1; scanf("%d",&p1->no); if(p1->no=0) break; scanf("%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论