西工大c语言实验100题07.docx
《西工大c语言实验100题07.docx》由会员分享,可在线阅读,更多相关《西工大c语言实验100题07.docx(20页珍藏版)》请在冰豆网上搜索。
西工大c语言实验100题07
第七次
CH1112
#include
#include
intmain()
{
structdata
{doublea;
structdata*q;
}*head,*p1,*p2,*p3,*p;
intn=0,i=1;
doublet;
p1=(structdata*)malloc(sizeof(structdata));
scanf("%lf",&p1->a);
head=NULL;
while(p1->a>0)
{
p2=p1;
if(n==0)head=p1;
p1=(structdata*)malloc(sizeof(structdata));
scanf("%lf",&p1->a);
p2->q=p1;
n++;
}
if(head!
=NULL)p2->q=NULL;
p1=p3=head;
printf("原始表:
");
while(p3!
=NULL)
{
if(i==1)printf("%.0lf",p3->a),i++;
elseprintf("->%.0lf",p3->a);
p3=p3->q;
}
printf("\n");
if(head!
=NULL)
{p=p1->q;
while(p!
=NULL)
{p3=p1;
p1=p;
p=p1->q;
p1->q=p3;
if(p3==head)head->q=NULL;
}
p1->q=p3;
}
i=1;
printf("反转表:
");
while(p1!
=NULL)
{
if(i==1)printf("%.0lf",p1->a),i++;
elseprintf("->%.0lf",p1->a);
p1=p1->q;
}
printf("\n");
return0;
}
CH1205
#include
intmain()
{
shortintn,f=1,i=0,a[16]={0};
scanf("%hd",&n);
if(n<0)n=-n,f=0;
while(n!
=0)
{
a[i]=n%2;
n=n/2;
i++;
}
if(f==0)
{
for(i=0;i<16;i++)
if(a[i]==0)a[i]=1;
elsea[i]=0;
a[0]=a[0]+1;
for(i=0;i<16;i++)
if(a[i]==1)break;
elsea[i]=0,a[i+1]=a[i+1]+1;
}
for(i=15;i>=0;i--)
printf("%hd",a[i]);
printf("\n");
return0;
}
T1102
#include
structstu
{longxh;
charname[50];
intage;
doublea[7];
doublesum;
doubleaver;
}b[10],*p;
intmain()
{inti,j;
doublemax;
max=0;
for(i=0;i<10;i++)
{b[i].sum=0;
scanf("%ld%s%d",&b[i].xh,b[i].name,&b[i].age);
getchar();
for(j=0;j<7;j++)
{scanf("%lf",&b[i].a[j]);
getchar();
b[i].sum=b[i].sum+b[i].a[j];
}
b[i].aver=b[i].sum/7;
if(b[i].sum>max)max=b[i].sum,p=&b[i];
}
printf("%ld%s%d",p->xh,p->name,p->age);
for(i=0;i<7;i++)
printf("%.2lf",p->a[i]);
printf("\n");
return0;
}
T1103
#include
typedefstructcomplex{
doubler;
doublei;
}COMPLEX;
intmain()
{COMPLEXa,b;
scanf("%lf%lf",&a.r,&a.i);
scanf("%lf%lf",&b.r,&b.i);
printf("(%.2lf%+.2lfi)+(%.2lf%+.2lfi)=(%.2lf%+.2lfi)\n",a.r,a.i,b.r,b.i,a.r+b.r,a.i+b.i);
printf("(%.2lf%+.2lfi)-(%.2lf%+.2lfi)=(%.2lf%+.2lfi)\n",a.r,a.i,b.r,b.i,a.r-b.r,a.i-b.i);
printf("(%.2lf%+.2lfi)*(%.2lf%+.2lfi)=(%.2lf%+.2lfi)\n",a.r,a.i,b.r,b.i,a.r*b.r-a.i*b.i,a.i*b.r+a.r*b.i);
printf("(%.2lf%+.2lfi)/(%.2lf%+.2lfi)=(%.2lf%+.2lfi)\n",a.r,a.i,b.r,b.i,(a.r*b.r+a.i*b.i)/(b.r*b.r+b.i*b.i),(a.i*b.r-a.r*b.i)/(b.r*b.r+b.i*b.i));
return0;
}
T1105
#include
#include
structstu
{intxh;
charname[50];
intage;
structstu*p;
};
structstu*creat()
{structstu*head,*p1,*p2;
p1=(structstu*)malloc(sizeof(structstu));
scanf("%d",&p1->xh);
if(p1->xh==0)head=NULL;
else
{
head=p1;
getchar();
scanf("%s%d",p1->name,&p1->age);
while(p1->xh!
=0)
{p2=p1;
p1=(structstu*)malloc(sizeof(structstu));
scanf("%d",&p1->xh);
if(p1->xh==0)break;
getchar();
scanf("%s%d",p1->name,&p1->age);
p2->p=p1;
}
p2->p=NULL;
}
returnhead;
}
voidprint(structstu*p1)
{inti=1;
if(p1==NULL);
else{
for(;p1!
=NULL;p1=p1->p,i++)
if(i==1)printf("%d",p1->xh);
elseprintf("%d",p1->xh);
printf("\n");
}
}
structstu*del(structstu*p1,intd)
{structstu*p2,*head;
head=p1;
if(p1==NULL);
else
{
if(p1->xh==d)head=p1->p;
while(p1!
=NULL)
{p2=p1;
p1=p1->p;
if(p1!
=NULL&&p1->xh==d){p2->p=p1->p;}
}
}
returnhead;
}
intmain()
{structstu*p0;
intd;
p0=creat();
scanf("%d",&d);
print(p0);
p0=del(p0,d);
print(p0);
return0;
}
T1108
#include
#include
structlinka{
intdata;
structlinka*next;
};
structlinka*creat()
{
structlinka*p1,*p2,*head;
p1=(structlinka*)malloc(sizeof(structlinka));
head=NULL;
scanf("%d",&p1->data);
if(p1->data!
=0)
head=p1;
elsereturnhead;
while(p1->data!
=0){
p2=p1;
p1=(structlinka*)malloc(sizeof(structlinka));
p2->next=p1;
scanf("%d",&p1->data);
}
p2->next=NULL;
returnhead;
}
voidshow(structlinka*head)
{
if(head==NULL)return;
for(;head!
=NULL;head=head->next){
if(head->next==NULL){
printf("%d",head->data);
}
else{
printf("%d",head->data);
}
}
printf("\n");
}
staticintn=1;
staticstructlinka*pp;
structlinka*lixu(structlinka*p)//只需要完成该链表反序递归逆序即可···
{
structlinka*p1,*p2;
if(p==NULL||p->next==NULL||(p->next->next==NULL&&n!
=1)){
if(p==NULL)
returnp;
pp=p->next;
returnp;
}
else{
if(n==1){
n++;
p1=p->next;
p2=p;
p1->next=lixu(p);
p2->next=NULL;
returnpp;
}
else{
p2=p;
p=p->next;
p1=p->next;
p1->next=lixu(p);
returnp2;
}
}
}
intmain()
{
structlinka*p;
p=creat();
p=lixu(p);
show(p);
return0;
}
T1109
#include
#include
intmain()
{
structlian{
inti;
structlian*next;
}*head,*p1,*p2;
intj;
head=p1=(structlian*)malloc(sizeof(structlian));
scanf("%d",&head->i);
if(head->i==0){
head=NULL;
}
else
head->next=NULL;
while(p1->i!
=0){
p2=p1;
p1=(structlian*)malloc(sizeof(structlian));
scanf("%d",&p1->i);
p2->next=p1;
}
p2->next=NULL;
scanf("%d",&j);
while(head!
=NULL){
if(head->i==j){
p2->next=head;
break;
}
head=head->next;
}
if(p2->next!
=NULL){
printf("yes\n");
}
else{
printf("no\n");
}
return0;
}
SXK01
#include
#include
structclike
{inth;
structclike*next;
};
structclike*creat(void)
{structclike*head,*p1,*p2;
inti;
head=p1=p2=(structclike*)malloc(sizeof(structclike));
for(i=1;i<=4;i++)
{p2=p1;
p1=(structclike*)malloc(sizeof(structclike));
p2->next=p1;
}
p1->next=NULL;
returnhead;
}
voidlist(structclike*head)
{inti=1;
for(;head!
=NULL;head=head->next)
if(i==1)printf("%d",head->h),i++;
elseprintf("%d",head->h);
printf("\n");
}
intmain()
{inta[5]={101,103,105,107,109};
structclike*head,*p;
inti;
head=p=creat();
for(i=0;p!
=NULL;p=p->next,i++)
p->h=a[i];
list(head);
return0;
}
SXK02
#include
#include
structclike
{inth;
structclike*next;
};
structclike*creat(void)
{structclike*head,*p1,*p2;
inti;
head=p1=p2=(structclike*)malloc(sizeof(structclike));
for(i=1;i<=4;i++)
{p2=p1;
p1=(structclike*)malloc(sizeof(structclike));
p2->next=p1;
}
p1->next=NULL;
returnhead;
}
voidlist(structclike*head)
{inti=1;
for(;head!
=NULL;head=head->next)
if(i==1)printf("%d",head->h),i++;
elseprintf("%d",head->h);
printf("\n");
}
structclike*insert(structclike*head,structclike*xin)
{structclike*p1,*p2;
p1=head;
if(head==NULL)head=xin,xin->next=NULL;
else
{while(p1->hh&&p1!
=NULL)
p2=p1,p1=p1->next;
p2->next=xin;
if(p1!
=NULL)xin->next=p1;
elsexin->next=NULL;
}
returnhead;
}
intmain()
{inta[5]={101,103,105,107,109};
structclike*head,*p,xin;
inti;
xin.h=106;
head=p=creat();
for(i=0;p!
=NULL;p=p->next,i++)
p->h=a[i];
list(head);
head=insert(head,&xin);
list(head);
return0;
}
SXK03
#include
#include
structclike
{inth;
structclike*next;
};
structclike*creat(void)
{structclike*head,*p1,*p2;
inti;
head=p1=p2=(structclike*)malloc(sizeof(structclike));
for(i=1;i<=4;i++)
{p2=p1;
p1=(structclike*)malloc(sizeof(structclike));
p2->next=p1;
}
p1->next=NULL;
returnhead;
}
voidlist(structclike*head)
{inti=1;
for(;head!
=NULL;head=head->next)
if(i==1)printf("%d",head->h),i++;
elseprintf("%d",head->h);
printf("\n");
}
structclike*delet(structclike*head,intj)
{structclike*p,*p1;
if(head->h==j)head=head->next;
else{
p=p1=head;
for(;p->h!
=j&&p!
=NULL;p=p->next)
p1=p;
p1->next=p->next;
}
returnhead;
}
intmain()
{inta[5]={101,103,105,107,109};
structclike*head,*p;
inti;
head=p=creat();
for(i=0;p!
=NULL;p=p->next,i++)
p->h=a[i];
list(head);
head=delet(head,103);
list(head);
return0;
}
SXK04
#include
#include
structlian{
intage;
structlian*next;
};
intmain()
{
structlian*head;
voidnewnode(structlian*,int);
inti,age;
head=(structlian*)malloc(sizeof(structlian));
head->next=NULL;
for(i=0;i<10;i++){
scanf("%d",&age);
newnode(head,age);
}
head=head->next;
while(head!
=NULL){
printf("%d",head->age);
head=head->next;
}
printf("\n");
return0;
}
voidnewnode(structlian*head,intage)
{
structlian*p1=head,*p2;
while(p1&&p1->next){
if(age==p1->next->age){
p1->next=p1->next->next;
return;
}
p1=p1->next;
}
p2=(structlian*)malloc(sizeof(structlian));
p1->next=p2;
p2->age=age;
p2->next=NULL;
}