文档详情

西工大c语言poj作业39101274.doc

发布:2018-01-13约1.11万字共22页下载文档
文本预览下载声明
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;ica+cb;i++) s[i]=0; // 每个元素赋初值0 for (i=0;ica;i++) for (j=0;jcb;j++) s[i+j+1]+=(a[i]-0)*(b[j]-0); for (i=ca+cb-1;i=0;i--) // 这里实现进位操作 if (s[i]=10) { s[i-1]+=s[i]/10; s[i]%=10; } i=0; while(s[i]==0) i++; // 跳过头部0元素 for (;ica+cb;i++) printf(%d,s[i]); printf(\n); free(s); } int main() { char a[100],b[100]; gets(a),gets(b); if(a[0]==-b[0]!=-) { printf(-); cheng(a[1],b); } else if(a[0]==-b[0]==-) { cheng(a[1],b[1]); } else if(a[0]!=-b[0]==-) { printf(-); cheng(a,b[1]); } else cheng(a,b); return 0; } T072、创建与遍历职工链表 #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;in;i++) { p1=(struct member*)malloc(sizeof(struct member)); scanf(%d,p1-data); if(i==0) head=p1; else p2-next=p1; p2=p1; } p2-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 a[51]={0},b[20],x,count=0,num=0,j=0,n,i,flag=0; scanf(%d%d,n,x); for(i=0;i20;i++) scanf(%d,b[i]); while(1) { for(i=1;i=n;i++) { if(a[i]==0) num++; if(num==b[j]) { a[i]=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(a[i]==0) printf(%d ,i); printf(\n)
显示全部
相似文档