西工大c语言poj作业39101274.doc
文本预览下载声明
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)
显示全部