西工大C语言终极第八季修订版.docx

上传人:b****6 文档编号:4539801 上传时间:2022-12-01 格式:DOCX 页数:23 大小:625.47KB
下载 相关 举报
西工大C语言终极第八季修订版.docx_第1页
第1页 / 共23页
西工大C语言终极第八季修订版.docx_第2页
第2页 / 共23页
西工大C语言终极第八季修订版.docx_第3页
第3页 / 共23页
西工大C语言终极第八季修订版.docx_第4页
第4页 / 共23页
西工大C语言终极第八季修订版.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

西工大C语言终极第八季修订版.docx

《西工大C语言终极第八季修订版.docx》由会员分享,可在线阅读,更多相关《西工大C语言终极第八季修订版.docx(23页珍藏版)》请在冰豆网上搜索。

西工大C语言终极第八季修订版.docx

西工大C语言终极第八季修订版

第八季,创建与遍历职工链表,排序分析,链表动态增长或缩小,行程编码压缩算法,SymmetricSort,毕业设计论文打印,插入链表节点,火车站没答案

(此题运行正确,但未得到批改后的AC确认)

71.

#include

#include

#pragmacomment(lib,library-search)

classStudent

{

public:

intt;

charname[12];

intage;

Student*next;

Student(){}

Student(inta,charb[12],intc,Student*p){t=a;strcpy(name,b);age=c;next=p;}

};

classList

{

public:

Student*top;

Student*rare;

List(){top=rare=NULL;}

voidpush(inta,charb[12],intc)

{

Student*f=newStudent(a,b,c,NULL);

if(top==NULL){top=rare=f;}

else

{

rare->next=f;

rare=f;

}

}

};

intmain()

{

Listlst;

inta,c;

charb[12];

Student*pp;

do

{

cin>>a;

if(a==0)break;

cin>>b>>c;

lst.push(a,b,c);

}

while

(1);

cin>>a;

pp=lst.top;

while(pp!

=NULL)

{

cout<t<<"";

pp=pp->next;

}

cout<

pp=lst.top;

while(pp!

=NULL)

{

if(pp->t!

=a)cout<t<<"";

pp=pp->next;

}

cout<

return0;

}

72

 

73

#include

#include

#include

voidcheng(chara[],charb[])

{

 inti,j,ca,cb,*s;

   ca=strlen(a);

   cb=strlen(b);

   s=(int*)malloc(sizeof(int)*(ca+cb));  

   for(i=0;i

   for(i=0;i

       for(j=0;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++;  

 for(;i

   printf("\n");

   free(s);

}

intmain()

{

 chara[100],b[100];

 gets(a),gets(b);

 if(a[0]=='-'&&b[0]!

='-')

 {

  printf("-");

  cheng(&a[1],b);

 }

 elseif(a[0]=='-'&&b[0]=='-')

 {

  cheng(&a[1],&b[1]);

 }

 elseif(a[0]!

='-'&&b[0]=='-')

 {

  printf("-");

  cheng(a,&b[1]);

 }

 else

  cheng(a,b);

 return0;

}

74

 

75

#include

#include

intlen1,len2;

intre[105];

voidsub(chars1[],chars2[])

{   

 inti=0;  

 intj;  

 while

(1)  

 {      

  if(s1[i]=='0')

   i++;   

  else    

  {        

   j=i;       

   break;       

  }   

 }  

 for(;i

 {   

  s1[i]=s1[i]-s2[i]+'0';

 }   

 for(i=len2-1;i>j;i--)   

 {     

  if(s1[i]<'0')    

  {          

   s1[i]+=10;    

   s1[i-1]--;   

  }  

 }

}

voidchu(chars1[],chars2[])     

{

 intp,i;

 len1=strlen(s1); 

 len2=strlen(s2);    

 if(len1

 {         

  printf("0\n");   

  return;   

 }     

 p=0;  

 while

(1) 

 {        

  re[p]=0;     

  while(strncmp(s1,s2,len2)>=0)

       

  {               

   sub(s1,s2);       

   re[p]++;    

  }          

  p++;       

  if(len1==len2)  

   break;     

  for(i=len2-1;i>=0;i--)  

       

  {               

   s2[i+1]=s2[i];

  }

  s2[0]='0';    

  len2++;     

  s2[len2]='\0';  

 }     

 i=0;    

 while

(1)   

 {      

  if(re[i]==0)  

   i++;      

  else            

   break;    

 }       

 for(;i

  printf("%d",re[i]); 

 printf("\n");  

}

intmain(void)

{

 chars1[105];

   chars2[105];

 gets(s1),gets(s2);

 if(s1[0]=='-'&&s2[0]!

='-')

 {

  printf("-");

  chu(&s1[1],s2);

 }

 elseif(s1[0]=='-'&&s2[0]=='-')

  chu(&s1[1],&s2[1]);

 elseif(s1[0]!

='-'&&s2[0]=='-')

 {

  printf("-");

  chu(s1,&s2[1]);

 }

 else

  chu(s1,s2);

 return0;

}

 

76

 #include

#include

#definemax(a,b)a>b?

a:

b

#definemin(a,b)a>b?

b:

a

intsum[101];

voidjia(chara[],charb[])

{

 intflag=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)

  {

   sum[lenmax-i]=a[len1-i]+b[len2-i]-'0'-'0'+flag;

           if(sum[lenmax-i]>=10)

   {

   sum[lenmax-i]=sum[lenmax-i]-10;

   flag=1;

   }

     elseflag=0;

  }

  else{

   if(len1>len2)

   {

    sum[lenmax-i]=a[len1-i]-'0'+flag;

    if(sum[lenmax-i]>=10)

    {

           sum[lenmax-i]=sum[lenmax-i]-10;

           flag=1;

    }

    elseflag=0;

   }

   else

   {

    sum[lenmax-i]=b[len2-i]-'0'+flag;

    if(sum[lenmax-i]>=10)

    {

        sum[lenmax-i]=sum[lenmax-i]-10;

        flag=1;

    }

    elseflag=0;

   }

  }

 }

 if(flag==1)

  printf("1");

 for(i=0;i

  printf("%d",sum[i]);

 printf("\n");

}

voidjian(chara[],charb[])

{

   intflag=0,i;

 intlen1,len2;

 len1=strlen(a),len2=strlen(b);

 for(i=1;i<=len1;i++)

 {

  if(i<=len2)

  {

   if(a[len1-i]-b[len2-i]-flag>=0)

   {

    sum[len1-i]=a[len1-i]-b[len2-i]-flag;

    flag=0;

   }

   else

   {

               sum[len1-i]=a[len1-i]-b[len2-i]-flag+10;

    flag=1;

   }

  }

  else

  {

   if(a[len1-i]-flag-'0'>=0)

   {

    sum[len1-i]=a[len1-i]-flag-'0';

    flag=0;

   }

   else

   {

               sum[len1-i]=a[len1-i]-flag+10-'0';

    flag=1;

   }

  }

  

 }

   for(i=0;i

 for(;i

   printf("%d",sum[i]);

       printf("\n");

}

voidcompare(chara[],charb[])

{

 intlen1,len2;

 len1=strlen(a),len2=strlen(b);

   if(len1>len2||(len1==len2&&strcmp(a,b)>0))

  jian(a,b);

 elseif(strcmp(a,b)!

=0)

 {

  printf("-");

  jian(b,a);

 }

 else

  printf("0\n");

}

intmain()

{

 chara[100],b[100];

 gets(a);

 gets(b);

 if(a[0]=='-'&&b[0]!

='-')

  compare(b,&a[1]);

 elseif(a[0]=='-'&&b[0]=='-')

 {

  printf("-");

  jia(&a[1],&b[1]);

 }

 elseif(a[0]!

='-'&&b[0]=='-')

  compare(a,&b[1]);

 else

  jia(a,b);

 return0;

}

 

77

#include

intmain()

{

 chara[10];

 intn,b=0,c[250]={0},i,j,x;

 c[249]=1;

 scanf("%s%d",a,&n);

 for(i=0;a[i]!

='\0';i++)

 {

  if(a[i]=='.')

  {

   x=i;

   continue;

  }

  b=b*10+a[i]-'0';

 }

 x=i-x-1;

   for(i=1;i

 {

      for(j=0;j<250;j++)

          c[j]*=b;

      for(j=249;j>=0;j--)

      if(c[j]>=10)

   {

          c[j-1]+=c[j]/10;

          c[j]%=10;

   }

 }

 if(x==0)

 {

  for(i=0;c[i]==0;i++);

       for(;i<250;i++)

           printf("%d",c[i]);

 }

 elseif(a[0]=='0')

 {

  printf("0.");

  for(i=250-n*x;i<250;i++)

   printf("%d",c[i]);

 }

 else

 {

  for(i=0;c[i]==0;i++);

  for(;i<250-n*x;i++)

   printf("%d",c[i]);

  printf(".");

  for(;i<250;i++)

   printf("%d",c[i]);

 }

 printf("\n");

}

 

78

79

80

81.大数减法

 #include

#include

#definemax(a,b)a>b?

a:

b

#definemin(a,b)a>b?

b:

a

intsum[101];

voidjia(chara[],charb[])

{

 intflag=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)

  {

   sum[lenmax-i]=a[len1-i]+b[len2-i]-'0'-'0'+flag;

           if(sum[lenmax-i]>=10)

   {

   sum[lenmax-i]=sum[lenmax-i]-10;

   flag=1;

   }

     elseflag=0;

  }

  else{

   if(len1>len2)

   {

    sum[lenmax-i]=a[len1-i]-'0'+flag;

    if(sum[lenmax-i]>=10)

    {

           sum[lenmax-i]=sum[lenmax-i]-10;

           flag=1;

    }

    elseflag=0;

   }

   else

   {

    sum[lenmax-i]=b[len2-i]-'0'+flag;

    if(sum[lenmax-i]>=10)

    {

        sum[lenmax-i]=sum[lenmax-i]-10;

        flag=1;

    }

    elseflag=0;

   }

  }

 }

 if(flag==1)

  printf("1");

 for(i=0;i

  printf("%d",sum[i]);

 printf("\n");

}

voidjian(chara[],charb[])

{

   intflag=0,i;

 intlen1,len2;

 len1=strlen(a),len2=strlen(b);

 for(i=1;i<=len1;i++)

 {

  if(i<=len2)

  {

   if(a[len1-i]-b[len2-i]-flag>=0)

   {

    sum[len1-i]=a[len1-i]-b[len2-i]-flag;

    flag=0;

   }

   else

   {

               sum[len1-i]=a[len1-i]-b[len2-i]-flag+10;

    flag=1;

   }

  }

  else

  {

   if(a[len1-i]-flag-'0'>=0)

   {

    sum[len1-i]=a[len1-i]-flag-'0';

    flag=0;

   }

   else

   {

               sum[len1-i]=a[len1-i]-flag+10-'0';

    flag=1;

   }

  }

  

 }

   for(i=0;i

 for(;i

   printf("%d",sum[i]);

       printf("\n");

}

voidcompare(chara[],charb[])

{

 intlen1,len2;

 len1=strlen(a),len2=strlen(b);

   if(len1>len2||(len1==len2&&strcmp(a,b)>0))

  jian(a,b);

 elseif(strcmp(a,b)!

=0)

 {

  printf("-");

  jian(b,a);

 }

 else

  printf("0\n");

}

intmain()

{

 chara[100],b[100];

 gets(a);

 gets(b);

 if(a[0]=='-'&&b[0]!

='-')

 {

  printf("-");

  jia(&a[1],b);

 }

 elseif(a[0]=='-'&&b[0]=='-')

  compare(&b[1],&a[1]);

 elseif(a[0]!

='-'&&b[0]=='-')

  jia(a,&b[1]);

 else

  compare(a,b);

 return0;

}

 

82

83

 

84

85

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1