西工大C语言终极第八季修订版.docx
《西工大C语言终极第八季修订版.docx》由会员分享,可在线阅读,更多相关《西工大C语言终极第八季修订版.docx(23页珍藏版)》请在冰豆网上搜索。
![西工大C语言终极第八季修订版.docx](https://file1.bdocx.com/fileroot1/2022-12/1/3b087a72-88ef-4653-88f0-c47dd24b2a48/3b087a72-88ef-4653-88f0-c47dd24b2a481.gif)
西工大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