版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课后习题答案-第四版-谭浩强(8-12)
C语言课后习题答案-第四版-谭浩强(8-12)
第八章
#include<stdio.h>
intmain()
{voidswap(int*pl,int*p2);
intnl,n2,n3;
int*pl,*p2,*p3;
printf("inputthreeintegernl,n2,n3:〃);
scanf(z/%d,%d,%d〃,&nl,&n2,&n3);
pl=&nl;
p2=&n2;
p3=&n3;
if(nl>n2)swap(pl,p2);
if(nl>n3)swap(pl,p3);
if(n2>n3)swap(p2,p3);
printfC'Now,theorderis:%d,%d,%d\nz,,nl,n2,n3);
return0;
)
voidswap(int*pl,int*p2)
{intp;
p=*p1;*pl=*p2;*p2=p;
)
#include<stdio.h>
#include<string.h>
intmain()
{voidswap(char*,char*);
charstr1[20],str2[20],str3[20];
printf("inputthreeline:\n〃);
gets(strl);
gets(str2);
gets(str3);
if(strcmp(strl,str2)>0)swap(strl,str2);
if(strcmp(strl,str3)>0)swap(strl,str3);
if(strcmp(str2,str3)>0)swap(str2,str3);
printf(""Now,theorderis:\n〃);
printf(z/%s\n%s\n%s\n,z,strl,str2,str3);
return0;}
voidswap(char*pl,char*p2)
{charp[20];
strcpy(p,pl);strcpy(pl,p2);strcpy(p2,p);}
#include<stdio.h>
intmainO
{voidinput(int*);
voidmax_min_value(int*);
voidoutput(int*);
intnumber[10];
input(number);max_min_value(number);output(number);
return0;
)
voidinput(int*number)(inti;
printf("input10numbers:");
for(i=0;i<10;i++)
scanf(z,%d,z,&number[i]);
}
voidmax_min_va1ue(int*number){int*max,*min,*p,temp;
max=min=number;
for(p=number+l;p<number+10;p++)if(*p>*max)max=p;elseif(*p〈*min)min=p;
temp=number[01;number[0]=*min;*min=temp;if(max二二number)max=min;
temp=number[9];number[9]=*max;*max二temp;}
voidoutput(int*number){int*p;
printf("Now,theyare:〃);
for(p=number;p<number+10;p++)
printfC%d〃,*p);
printf(〃\n〃);}
^include<stdio.h>
intmain()
{voidmove(int[20],int,int);
intnumber[20],n,m,i;
printf(z,howmanynumbers?");
scanf("%d",&n);
printf("'input%dnumbers:\n/z,n);for(i=0;i<n;i++)
scanf(〃%d〃,&number[i]);
printfC'howmanyplaceyouwantmove?");scanf("%d",&m);
move(number,n,m);
z,
printf(Now,theyare:\n〃);
for(i=0;i<n;i++)
printf(〃%d〃,number[i]);
printf(〃\n〃);
return0;
)
voidmove(intarray[20],intn,intm){int*p,array_end;
array_end=*(array+n-1);
for(p二array+n-l;p>array;p-)*p=*(p-1);
*array=array_end;
m——;
if(m>0)move(array,n,m);
)
#include<stdio.h>
intmain()
{inti,k,m,n,num[50],*p;
printf(〃\ninputnumberofperson:n=〃);scanf(〃%d〃,&n);
p=num;
for(i=0;i<n;i++)
*(p+i)=i+l;
i=0;
k=0;m=0;
while(m<n-l)
{if(*(p+i)!=0)k++;
if(k==3){*(p+i)=0;
k=0;
m++;
)
i++;
if(i=n)i=0;}
while(*p=0)p++;
printf(/zThelastoneisNO.%d\n〃,*p);return0;
#include<stdio.h>
intmain()
{intlength(char*p);
intlen;
charstr[20];
printf("inputstring:〃);
scanf(〃%s〃,str);
len=length(str);
printf(z,Thelengthofstringis%d.\n〃,len);return0;
)
intlength(char*p){intn;
n=0;
while(*p!='\0')
{n++;
p++;
)
return(n);
)
ttinclude<stdio.h>
tfinclude<string.h>
intmainO
{voidcopystr(char*,charint);intm;
charstrl[20],str2[20];
printf("inputstring:");gets(strl);
printf(z,whichcharacterthatbegintocopy?");scanf(〃猊〃,&m);
if(strlen(strl)<m)
printf("inputerror!”);
else
(copystr(strl,str2,m);
printf(〃result:%s\n〃,str2);
)
return0;
)
voidcopystr(char*pl,char*p2,intm){intn;
n=0;
while(n<m-l)
{n++;
pl++;
)
while(*pl!='\0')
{*p2=*pl;
pl++;
p2++;
*p2='\0';
#include<stdio.h>
intmain()
{intupper=O,lower=0,digit=O,space=O,other=0,i=O;char*p,s[20];
printf("inputstring:〃);
while((s[i]=getchar())!=,\n)i++;
p=&s[O];
while(*p!=’\n')
{if(('A'〈=*p)&&(*p<='Z'))
++upper;
elseif(('a'〈=*p)&&(*p<='z'))
++lower;
elseif(*p二二'')
++space;
elseif((*p<='9')&&(*p>='0'))
++digit;
else
++other;p++;
)
printf(z,uppercase:%dlowercase:%d/z,upper,lower);
printf(〃space:%ddigit:%dother:%d\nz,,space,digit,other);return0;
ttinclude<stdio.h>
intmainO
{voidmove(int*pointer);
inta[3][3],*p,i;
printf("inputmatrix:\n〃);
for(i=0;i〈3;i++)
scanfC%d%d%dz,,&a[i][0],&a[i][1],&a[i][2]);
p=&a[0][0];
move(p);
printf("Now,matrix:\n〃);
for(i=0;i<3;i++)
printf(〃%d%d%d\n〃,a[i][0],a[i][1],a[i][2]);
return0;
)
voidmove(int*pointer)
{inti,j,t;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{t=*(pointer+3*i+j);
*(pointer+3*i+j)=*(pointer+3*j+i);
*(pointer+3*j+i)=t;
ttinclude<stdio.h>
intmainO
{voidchange(int*p);
inta[5][5],*p,i,j;
printf("inputmatrix:\n〃);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf&a[i][j]);
P=&a[0][0];
change(p);
printf(^Now,matrix:\nz,);
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
printf(〃%da[i][j]);
printf(〃\n〃);}
return0;
)
voidchange(int*p)
{inti,j,temp;
int*pmax,*pmin;
pmax=p;
pmin=p;
for(i=0;i<5;i++)
for(j=i;j<5;j++)
{if(*pmax<*(p+5*i+j))pmax=p+5*i+j;
if(*pmin>*(p+5*i+j))pmin=p+5*i+j;
)
temp=*(p+12);
*(p+12)=*pmax;
*pmax=temp;
temp=*p;
*p二*pmin;
*pmin=temp;
pmin=p+l;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))pmin=p+5*i+j;
tomp=*pmin;
*pmin=*(p+4);
*(p+4)=temp;
pmin=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if
(((p+5*i+j)!=(p+4))&&((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))pmin=p+5*i+j;
temp=*pmin;
*pmin=*(p+20);
*(p+20)=temp;
pmin=p+l;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&((p+5*i+j)!=(p+20))&&
(*pmin>*(p+5*i+j)))
pmin=p+5*i+j;
temp=*pmin;
*pmin=*(p+24);
*(p+24)=temp;}ttinclude<stdio.h>
intmain()
{voidchange(int*p);
inta[5][5],*p,i,j;
printf("inputmatrix:\nz,);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanfCz%d,z,&a[i][j]);
p=&a[0][0];
change(p);
printf("Now,matrix:\n〃);
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
printf(〃%da[i][j]);
printfCV);
return0;
)
voidchange(int*p)//交换函数
{inti,j,temp;
int*pmax,*pmin;
pmax=p;
pmin=p;
for(i=0;i<5;i++)〃找最大值和最小值的地址,并赋给pmax,pminfor(j=i;j<5;j++)
{if(*pmax<*(p+5*i+j))pmax=p+5*i+j;
if(*pmin>*(p+5*i+j))pmin=p+5*i+j;
)
tcmp=*(p+12);〃将最大值与中心元素互换
*(p+12)=*pmax;
*pmax二temp;
temp=*p;〃将最小值与左上角元素互换
*p二*pmin;
*pmin=temp;
pmin=p+l;
〃将的地址赋给pmin,从该位置开始找最小的元素
for(i=0;i<5;i++)〃找第二最小值的地址赋给pmin
for(j=0;j<5;j++)
{if(i-0&&j==0)continue;
if(*pmin>*(p+5*i+j))pmin=p+5*i+j;}
temp=*pmin;〃将第二最小值与右上角元素互换*pmin=*(p+4);
*(p+4)=temp;
pmin=p+l;
for(i=0;i<5;i++)〃找第三最小值的地址赋给pmin
for(j=0;j<5;j++)
{if((i==0&&j==0)!|(i==0&&j==4))continue;
if(*pmin>*(p+5*i+j))pmin=p+5*i+j;
}
temp=*pmin;//将第三最小值与左下角元素互换*pmin=*(p+20);
*(p+20)=temp;
pmin=p+1;
for(i=0;i<5;i++)//找第四最小值的地址赋给pmin
for(j=0;j<5;j++)
{if((i=0&&j=0)||(i=0&&j==4)(i=4&&j==0))continue;if
(*pmin>*(p+5*i+j))pmin=p+5*i+j;
)
temp=*pmin;〃将第四最小值与右下角元素互换*pmin=*(p+24);
*(p+24)=temp;
)
^include<stdio.h>
#include<string.h>
intmainO
{voidsort(chars[][6]);
inti;
charstr[10][6];
printf(z,input10strings:\nz,);
for(i=0;i<10;i++)
scanf(〃%s〃,str[i]);
sort(str);
printf(""Now,thesequenceis:\n〃);
for(i=0;i<10;i++)
printf(〃%s\n〃,str[i]);
return0;
)
voidsort(chars[10][6])
{inti,j;
char*p,temp[10];p=temp;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(strcmp(s[j],s[j+1])>0){strcpy(p,s[j]);
strcpy(s[j],s[+j+l]);strcpy(s[j+l],p);}
}ttinclude<stdio.h>
#include<string.h>
intmain()
{voidsort(char(*p)[6]);inti;
charstr[10][6];
char(*p)[6];
printf("input10strings:\n,z);for(i=0;i<10;i++)
scanfCz%s,z,str[i]);p=str;
sort(p);
printf(^Now,thesequenceis:\n");for(i=0;i<10;i++)
printf(〃%s\n〃,str[i]);return0;
)
voidsort(char(*s)[6]){inti,j;
chartemp[6],*t=temp;for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(strcmp(s[j],s[j+1])>0){strcpy(t,s[j]);
strcpy(s[j],s[+j+l]);strcpy(s[j+l],t);}
)
#include<stdio.h>
#include<string.h>
intmain()
(voidsort(char*口);
inti;
char*p[10],str[10][20];for(i=0;i<10;i++)
p[i]=str[i];
printf(''input10strings:\n,z);
for(i=0;i<10;i++)
scanf("%s〃,p[i]);
sort(p);
printf("Now,thesequenceis:\n〃);
for(i=0;i<10;i++)
printf("%s\n〃,p[i]);
return0;
)
voidsort(char*s口)
{inti,j;
char*temp;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(strcmp(*(s+j),*(s+j+1))>0)
{temp=*(s+j);
*(s+j)=*(s+j+l);
*(s+j+l)=temp;
)
)
#include<stdio.h>
#include<math.h>
intmainO
{floatintegral(float(*)(float),float,float,int);〃对integarl函数的声明
floatfsin(float);〃对fsin函数的声明
floatfcos(float);〃对fcos函数的声明
floatfexp(float);//对fexp函数的声明
floatal,bl,a2,b2,a3,b3,c,(*p)(float);
intn=20;
printf(''inputal,bl:");
scanf("%f,%f”,&al,&bl);
printf("inputa2,b2:〃);
scanfC%f,%r,&a2,&b2);
printf("inputa3,b3:〃);
scanf(,z%f,%f〃,&n3,&b3);
p=fsin;
『integral(p,al,bl,n);
printf("Theintegralofsin(x)c);
p=fcos;
『integral(p,a2,b2,n);
printf("Theintegralofcos(x)is:%f\n〃,c);p二fexp;
c=integral(p,a3,b3,n);
printf("Theintegralofexp(x)is:%f\n,z,c);return0;
)
floatintegral(float(*p)(float),floata,floatb,intn){inti;
floatx,h,s;
h=(b-a)/n;
x二a;
s=0;
for(i=l;i<=n;i++)
{x=x+h;
s=s+(*p)(x)*h;
)
return(s);
)
floatfsin(floatx)
(returnsin(x);}
floatfcos(floatx)
{returncos(x);}
floatfexp(floatx)
(returnexp(x);)
#include<stdio.h>
intmain()
{voidsort(char*p,intm);
inti,n;
char*p,num[20];
printf("inputn:〃);
scanf(级d”,&n);
printfC'pleaseinputthesenumbers:\n/z);for(i=0;i<n;i++)
scanf(,,%d,z,&num[i]);
p=&num[O];
sort(p,n);
printf("Now,thesequenceis:\n〃);
for(i=0;i<n;i++)
printf(〃%d”,num[i]);printf(〃\n〃);
return0;
)
voidsort(char*p,intm)//将n个数逆序排列函数
{inti;
chartemp,*pl,*p2;
for(i=0;i<m/2;i++)
{pl=p+i;
p2=p+(m-l-i);
temp=*pl;
*pl=*p2;
*p2=temp;
)
)
ftinclude<stdio.h>
intmain()
{voidavsco(float*,float*);
voidavcourl(char(*)[10],float*);
voidfali2(charcourse[5][10],intnum[],float*pscore,floataver[4]);void
good(charcourse[5][10],intnum[4],float*pscore,floataver[4]);int
i,j,*pnum,num[4];
floatscore[4][5],aver[4],*pscore,*paver;
charcourse[5][10],(*pcourse)[10];
printf("inputcourse:\n,z);
pcourse二course;
for(i=0;i<5;i++)
scanf(〃%s〃,course[i]);
printf("inputNO.andscores:\nz,);
printf(〃N0.〃);
for(i=0;i<5;i++)
printf(〃,%s〃,course[i]);
printf(〃\n〃);
pscore=&score[0][0];
pnum=&num[0];
for(i=0;i<4;i++)
{scanf(〃%d〃,pnum+i);
for(j=0;j<5;j++)
scanf(〃%f〃,pscore+5*i+j);
)
paver=&aver[0];
printf(〃\n\n");
avsco(pscore,paver);//求出每个学生的平均成绩avcourl(pcourse,pscore);//
求出第一门课的平均成绩printf(〃\n\n〃);
fali2(pcourse,pnum,pscore,paver);//找出2门课不及格的学生printf("\n\n");
good(pcourse,pnum,pscore,paver);//找出成绩好的学生
return0;
)
voidavsco(float*pscore,float*paver)//求每个学生的平均成绩的函数{int
i,j;
floatsum,average;
for(i=0;i<4;i++)
{sum=0.0;
for(j=0;j<5;j++)
sum=sum+(*(pscore+5*i+j));〃累计每个学生的各科成绩average=sum/5;〃计算平
均成绩
*(paver+i)=average;
)
)
voidavcourl(char(*pcourse)[10],float*pscore)//求第一课程的平均成绩的函
数
{inti;
floatsum,average1;
sum=0.0;
for(i=0;i<4;i++)
sum=sum+(*(pscore+5*i));〃累计每个学生的得分averagel=sum/4;〃计算平均成绩
printf(''course1:%saveragescore:%7.2f\nz/,*pcourse,averagel);
voidfali2(charcourse[5][10],intnum[],float*pscore,floataver[4])
//找两门以上课程不及格的学生的函数
{inti,j,k,label;
printfC========Studentwhoisfailintwocourses=======\n〃);
printf(〃N0.〃);
for(i=0;i<5;i++)
printf(〃%lls〃,course[i]);
printf(〃average\n,z);
for(i=0;i<4;i++)
{label=0;
for(j=0;j<5;j++)
if(*(pscore+5*i+j)<60.0)label++;
if(label>=2)
{printf(〃%d”,num[i]);for(k=0;k<5;k++)
printfC%11.2f〃,*(pscore+5*i+k));
printf("%1L2f\n〃,aver[i]);
voidgood(charcourse[5][10],intnum[4],float*pscore,floataver[4])//找成
绩优秀学生(各门85以上或平均90分以上)的函数{inti,j,k,n;
printf(〃======Studentswhosescoreisgood=====\n〃);printf(,zN0.〃);
for(i=0;i<5;i++)
printf(〃%lls〃,courseEi]);
printfCaverage\n〃);
for(i=0;i<4;i++)
{n=0;
for(j=0;j<5;j++)
if(*(pscore+5*i+j)>85.0)n++;
if((n==5)|(aver[i]>=90))
{printf(〃%d〃,num[i]);
for(k=0;k<5;k++)
printfC%11.2f〃,*(pscore+5*i+k));
printf2f\n〃,aver[i]);
#include<stdio.h>
intmainO
(
charstr[50],*pstr;
inti,j,k,m,elO,digit,ndigit,a[10],*pa;
printf(z,inputastring:\nz,);
gets(str);
pstr=&str[0];/*字符指针pstr置于数组str首地址*/pa=&a[0];/*指针pa置于a
数组首地址*/
ndigit=O;/*ndigit代表有多少个整数*/
i=0;/*代表字符串中的第几个字符*/
j=0;
while(*(pstr+i)!='\0')
{if((*(pstr+i)>="0,)&&(*(pstr+i)<="9'))j++;
else
{if(j>0)
{digit=*(pstr+iT)-48;/*将个数位赋予digit*/
k=l;
while(k<j)/*将含有两位以上数的其它位的数值累计于digit*/{el0=l;
for(m=l;m<=k;m++)
el0=el0*10;/*el0代表该位数所应乘的因子*/digit=digit+(*(pstr+i-l-k)-48)*el0;
/*将该位数的数值'累加于digit*/
k++;/*位数K自增*/
)
*pa=digit;/*将数值赋予数组a*/
ndigit++;
pa++;/*指针pa指向a数组下一元素*/j=0:
)
)
i++;
)
if(j>0)/*以数字结尾字符串的最后一个数据*/{digit=*(pstr+iT)-48;/*将个数
位赋予digit*/
k=l;
while(k<j)/*将含有两位以上数的其它位的数值累加于digit*/{elO=l;
for(m=1;m<=k;m++)
el0=el0*10;/*elO代表位数所应乘的因子*/
digit=digit+(*(pstr+i-l-k)-48)*elO;/*将该位数的数值累加于digit*/k++;/*位
数K自增*/
)
*pa=digit;/*将数值赋予数组a*/
ndigit++;
j=0;
)
printf("Thereare%dnumbersinthisline,theyare:\n〃,ndigit);
j=0;
pa=&a[0];
for(j=O;j<ndigit;j++)/*打印数据*/
printf(级d〃,*(pa+j));
printf(〃\n〃);
return0;
)
#include<stdio.h>intmain()
{intstrcmp(char*pl,char*p2);
intin;
charstrl[20],str2[20],*pl,*p2;
printf("inputtwostrings:\nz,);
scanf(〃%s〃,strl);
scanf(〃%s〃,str2);
pl=&strl[0];
p2=&str2[0];
m=strcmp(pl,p2);
printf("result:%d,\n〃,m);
return0;
)
intstrcmp(char*pl,char*p2)〃两个字符串比较函数
{inti;
i=0;
while(*(pl+i)==*(p2+i))
if(*(pl+i++)='\0')return(0);〃相等时返回结果0
return(*(pl+i)-*(p2+i));〃不等时返回结果为第一个不等字符ASCII码的差值
}
ttinclude<stdio.h>
intmain()
{char*monthname[13]={"illegalmonth","January","February","March","April”,
May","June”,〃july〃,“August","September","October”,
“November","December"};
intn;
printf("inputmonth:\n/z);
scanf(%d〃,&n);
if((n<=12)&&(n>=l))
printf(,zItis%s.\n〃,*(monthname+n));
else
printf("Itiswrong.\n,z);
return0;
}#include<stdio.h>
#defineNEWSIZE1000〃指定开辟存区的最大容量charnewbuf[NEWSIZE];〃定义字
符数组newbuf
char*newp=newbuf;〃定义指针变量newp,指向可存区的始端
char*new(intn)〃定义开辟存区的函数now,开辟存储区后返回指针
{if(newp+n<=newbuf+NEWSIZE)//开辟区未超过newbuf数组的大小
{newp+=n;//newp指向存储区的末尾
return(newp-n);//返回,个指针,它指向存区的开始位置
}
else
return(NULL);//当存区不够分配时,返回一个空指针
)
^include<stdio.h>
ttdefineNEWSIZE1000
charnewbuf[NEWSIZE];
char*newp=newbuf;
voidfree(char*p)〃释放存区函数
{if(p>=newbuf&&p<newbuf+NEWSIZE)
newp=p;
)
SdefineLINEMAX20/*定义字符串的最大长度*/
intmainO
{inti;
char**p,*pstr[5],str[5][LINEMAX];
for(i=0;i<5;i++)
pstr[i]=str[i];/*将第i个字符串的首地址赋予指针数组pstr的第i个元素*/
printf("input5strings:\n,z);
for(i=0;i<5;i++)
scanf(〃%s〃,pstr[i]);
p=pstr;
sort(p);
printf(^stringssorted:\nzz);
for(i=0;i<5;i++)
printf(〃%s\n〃,pstr[i]);
)
sort(char**p)/*冒泡法对5个字符串排序函数*/
{inti,j;
char*temp;
for(i=0;i<5;i++)
{for(j=i+l;j<5;j++)
{if(strcmp(*(p+i),*(p+j))>0)/*比较后交换字符串地址*/
{temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;}
)
)
return0;
}#include<stdio.h>
intmain()
{voidsort(int**p,intn);
inti,n,data[20],**p,*pstr[20];
printf("inputn:\n〃);
scanf("%d",&n);
for(i=0;i<n;i++)
pstr[i]=&data[i];〃将第i个整数的地址赋予指针数组pstr的第i个元素
printf(,zinput%dintegernumbers/7,n);
for(i=0;i<n;i++)
scanf(〃%d〃,pstr[i]);
p=pstr;
sort(p,n);
printf(,zNow,thesequenceis:\n〃);
for(i=0;i〈n;i++)
printf(z/%d",*pstr[i]);
printf("\n〃);
return0;
)
voidsort(int**p,intn)
{inti,j,*temp;
for(i=0;i<n-l;i++)
{for(j=i+l;j<n;j++)
{if(**(p+i)>**(p+j))//比较后交换整数地址
{temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
第九章
#include<stdio.h>struct
{intyear;
intmonth;
intday;
}date;
intmainO
{intdays;
printf("inputyear,month,day:〃);
scanf(z/%d,%d,ftdate.year,&date.month,&date.day);
switch(date,month)
{case1:days二date,day;break;
case2:days=date,day+31;break;
case3:days=date.day+59;break;
case4:days=date.day+90;break;
case5:days=date,day+120;break;
case6:days二date,day+151;break;
case7:days=date.day+181;break;
case8:days=date.day+212;break;
case9:days=date,day+243;break;
case10:days=date.day+273;break;
case11:days=date.day+304;break;
case12:days=date.day+334;break;
if((date,year%4==0&&date,year%100!=0
||date,year%400=0)&&date,month>=3)days+=l;
printf(/z%d/%disthe%dthdayin%d.\n,z,date,month,date,day,days,date,year);
return0;
)
ttinclude<stdio.h>
struct
{intyear;
intmonth;
intday;
}date;
intmainO
{inti,days;
intday_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31);
printf(z,inputyear,month,day:,z);
scanf(〃%d,%d,%d,z,&date.year,&date.month,&date.day);
days=0;
for(i=l;i<date.month;i++)
days=days+day_tab[i];days=days+date.day;
if((date.year%4==0&&date.year%100!=0||date.year%400==0)&&date.month>=3)
days=days+1;
printf(z,%d/%disthe%dthdayin%d.\n,z,date,month,date,day,days,date,year);
return0;
}
^include<stdio.h>
structy_m_d
{intyear;
intmonth;
intday;
}date;
intmainO
{intdays(structy_m_ddatel);
printf("inputyear,month,day:〃);
scanf(〃%d,%d,%d〃,&date.year,&date.month,&date.day);
printf(z,%d/%disthe%dthday
in%d.\n〃,date,month,date,day,days(date),date,year);}
intdays(structymddatel)
{intsum;
switch(datel.month)
{case1:sum=datel.day;break;
case2:sum=datel.day+31;break;
case3:sum=datel.day+59;break;
case4:sum=datel.day+90;break;
case5:sum=datel.day+120;break;
case6:sum=datel.day+151;break;
case7:sum=datel.day+181;break;
case8:sum=datel.day+212;break;
case9:sum=datcl.day+243;break;
case10:sum=datel.day+273;break;
case11:sum=datel.day+304;break;
case12:sum=datel.day+334;break;
)
if((datel.year%4=0&&datel.year%100!=0||datel.year%400二=0)&&
datel.month>=3)
sum+=l;
return(sum);)
#include<stdio.h>
structy_m_d
{intyear;
intmonth;
intday;
}date;
intmain()
{intdays(intyear,intmonth,intday);
intdays(int,int,int);
intday_sum;
printf(z,inputyear,month,day:z,);
scanf(〃%d,%d,%d”,&date.year,&date.month,&date.day);
daysum=days(date,year,date,month,date,day);
printf(z/%d/%disthe%dthday
in%d.\n〃,date,month,date,day,day_sum,date,year);}
intdays(intyear,intmonth,intday)
(intday_sum,i;
intday_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31);
daysum=0;
for(i=l;i<month;i++)
day_sum+二day_tab[i];
day_sum+=day;
if((year%4==0&&year%100!=0|year%4=0)&&month>z:3)
daysum+=l;
return(day_sum);
)
ttinclude<stdio.h>
ftdefineN5
structstudent
{charnum[6];
charname[8];
intscore[4];
}stu[Nh
intmain()
{voidprint(structstudentstu[6]);inti,j;
for(i=0;i<N;i++)
{printf(z,\ninputscoreofstudent%d:\n〃,i+1);printf(〃N0.:〃);
scanf(〃%s〃,stu[i].num);
printf("name:〃);
scanf(〃%s〃,stu[i].name);
for(j=0;j<3;j++)
{printf(z/score%d:〃,j+1);
scanf(绘d〃,&stu[i].score[j]);
printfCV);
print(stu);
return0;
)
voidprint(structstudentstu[6])
{inti,j;
printf(〃\nNO.namescore1score2for(i=0;i<N;i++)
{printf(〃%5s%10s〃,stu[i].num,stu[i].name);for(j=0;j<3;j++)
printf(〃%9d〃,stu[i].score[j]);
printfCV);
)
)
#include<stdio.h>
#defineN5
structstudent
{charnum[6];
charname[8];
intscore[4];
}stu[N];
intmain()
{voidinput(structstudentstu[]);
voidprint(structstudentstu[]);
input(stu);
print(stu);
return0;
)
score3\nz,);voidinput(structstudentstu口)
{inti,j;
for(i=0;i<N;i++)
{printf("inputscoresofstudent%d:\n〃,i+1);printfC^NO.:〃);
scanf(〃%s〃,stu[i].num);
printf("name:〃);
scanf(〃%s〃,stu[i].name);
for(j=0;j<3;j++)
{printf("score%d:〃,j+1);
scanf(〃%d〃,&stu[i].score[j]);
)
printf(〃\n〃);
)
)
voidprint(structstudentstu[61)
{inti,j;
printf(〃\nNO.namescore1score2for(i=0;i<N;i++)
{printf(z/%5s%10s,z,stu[i].num,stu[i].name);for(j=0;j<3;j++)
printf(z/%9dz/,stu[i].score[j]);
printfCV);
}#include<stdio.h>
^defineN10
structstudent
{charnum[6];
charname[8];
floatscore[3];
floatavr;
}stu[N];
intmain()
{inti,j,maxi;
floatsum,max,average;
for(i=0;i<N;i++)
{printf("inputscoresofstudent%d:\n〃,i+1);printf(〃N0.:〃);
scanf(〃%s〃,stu[i].num);
printf("name:〃);
scanf(〃%s〃,stu[i].name);
for(j=0;j<3;j++)score3\nz/);{printf(z,score%d:",j+l);
scanf&stu[i].score[j]);
average=0;
max=O;
maxi=O;
for(i=0;i<N;i++)
{sum=0;
for(j=0;j<3;j++)
sum+=stu[i].score[j];
stu[i].avr=sum/3.0;
average+=stu[i].avr;
if(sum>max)
{max二sum;
maxi=i;
)
)
average/=N;
printf(,zNO.namescorelscore2score3average\n,z);for(i=0;i<N;i++)
{printf(z,%5s%10s,z,stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printfC%9.2f”,stu[i].score[j]);
printf(/z%8.2f\nz,,stu[i].avr);
)
printf("average二%5.2f\n〃,average);
printf(""Thehighestscoreis:
student%s,%s\n〃,stu[maxi].num,stufmaxi].name);printf(〃hisscores
are:%6.2f,%6.2f,%6.2f,average:%5.2f.\n〃,
stu[maxi]•score[0],stu[maxi].score[l],stu[maxi].score[2],stu[maxi].avr);
return0;
)
#include<stdio.h>
#defineN13
structperson
(intnumber;
intnextp;
}link[N+l];
intmainO
{inti,count,h;for(i=l;i<=N;i++)
{if(i==N)
link[i].nextp=l;
else
1ink[i].nextp=i+l;
link[i].number=i;
}
printf(〃\n〃);
count=0;
h二N;
printf(''sequencethatpersonsleavethecircle:\nz,);
while(count<N-l)
{i=0;
while(i!=3)
{h=link[h].nextp;
if(link[h].number)
i++;
)
printf(/z%4dz,,link[h].number);
link[h].number=O;
count++;
)
printf(〃\nThclastoneis〃);
for(i=l;i<=N;i++)
if(link[i].number)
printf(〃%3d〃,link[i].number);
printfC\nz,);
return0;
}#include<stdio.h>
structstudent
{longnum;
floatscore;
structstudent*next;
);
intn;
structstudent*del(structstudent*head,longnum)
{structstudent*pl,*p2;
if(head==NULL)//是空表
{printf('Anlistnull!\n/z);
return(head);
)
pl二head;〃使pl指向第一个结点
while(num!=p1->num&&pl->next!=NULL)//pl指向的不是所要找的结点且后面还有结
点*/
{p2=pl;pl=pl->next;}〃pl后移一个结点
if(num=pl->num)//找到了
{if(pl==head)head二pl->ncxt;〃若pl指向的是首结点,把第二个结点地址赋予head
*/
elsep2->next=pl->next;//否则将下一结点地址赋给前一结点地址
printf(/zdelete:%ld\n/z,num);
n=n-l;
)
elseprintf(,z%ldnotbeenfound!\n,z,num);〃找不到该结点
return(head);
)
ftinclude<stdio.h>
structstudent
{longnum;
floatscore;
structstudent*next;
);
intn;
structstudent*insert(structstudent*head,structstudent*stud)
{structstudent*pO,*pl,*p2;
pl二head;〃使p1指向第一个结点
pO二stud;〃指向要插入的结点
if(head==NULL)〃原来的链表是空表
{head=pO;pO->next=NULL;}〃使P。指向的结点作为头结点else
{while((pO->num>pl->num)&&(pl->next!=NULL))
{p2=pl;〃使p2指向刚才pl指向的结点pl=pl->next;
)〃P1后移一个结点
if(pO->num<=pl->num)
{if(head==pl)head=pO;〃插到原来第一个结点之前elsep2->next=pO;〃插到p2
指向的结点之后pO->next=pl;
}
else
{pl->next=pO;
pO->next=NULL;〃插到最后的结点之后
)
)
n=n+l;〃结点数加1
return(head);)
#include<stdio.h>
^include<malloc.h>
#defineLENsizeof(structstudent)
structstudent
{longnum;
floatscore;
structstudent*next;
);
intn;
intmain()
{structstudent*creat();
structstudent*del(structstudent*,long);
structstudent*insert(structstudent*,structstudent*);void
print(structstudent*);
structstudent*head,stu;
longdel_num;
printf(z,inputrecords:\n,z);
head=creat();
print(head);
printf("inputthedeletednumber:");
scanf(〃%ld〃,&del_num);
head=del(head,delnum);
print(head);
printf(,zinputtheinsertedrecord:,z);
scanf(〃机d,%f〃,&stu.num,&stu.score);
head=insert(head,&stu);
print(head);
return0;
)
structstudent*creat()
{structstudent*head;
structstudent*pl,*p2;
n=0;
pl=p2=(structstudent*)malloc(LEN);
scanf(〃%ld,%f〃,&pl->num,&pl->score);
head=NULL;
while(pl->num!=0)
(n=n+l;
if(n==l)head=pl;
elsep2->next=pl;
p2=pl;
pl=(structstudent*)malloc(LEN);scanf(^Id,%f,z,&pl->num,&pl->score);
)
p2->next=NULL;
return(head);
structstudent*del(structstudent*head,longnum)
{structstudent*pl,*p2;
if(head=NULL)
{printf(z,\nlistnull!\n/z);
return(head);
)
pl=head;
while(num!=p1->num&&pl->next!=NULL)
{p2=pl;pl=pl->next;}
if(num==pl->num)
{if(pl==head)head=pl->ncxt;
elsep2->next=pl->next;
printf(/zdelete:%ld\nz,,num);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【完整版主题班会课件】交通安全教育主题班会课件
- 《石油天然气工程设计防火规范》解读
- 辽宁省鞍山市铁西区2026-2027学年9月上学期学情调查八年级英语试卷(含答案)
- 【2026年9月】健康科普课件:运动与饮食的黄金搭配
- 2026年燃气安检测试题及答案
- 2026年语言智力测试题及答案
- 2026年通信知识基础测试题及答案
- 2026年助学贷款诚信测试题及答案
- 2026年华卫 情商 测试题及答案
- 2026年保守知识测试题及答案
- 车间班组6S评比方案
- 2026年高考数学模拟卷:入门基础
- 小学驻校社工工作制度
- 近5年(2021-2025)高考英语高频词汇编(真题版)
- 多源数据融合预警模型-第2篇-洞察与解读
- 结直肠癌分子病理检测临床实践指南(2025版)
- 矿山三违考核制度
- 西药执业药师药物经济学应用案例集试卷
- 黑龙江大学《审计学》2025 学年第二学期期末试卷
- GB/T 46639.5-2025铸造机械术语第5部分:冲天炉、浇注设备和浇包
- 口腔护士种植课件
评论
0/150
提交评论