




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
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)//交換函數(shù)
{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函數(shù)的聲明
floatfsin(float);〃對fsin函數(shù)的聲明
floatfcos(float);〃對fcos函數(shù)的聲明
floatfexp(float);//對fexp函數(shù)的聲明
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個數(shù)逆序排列函數(shù)
{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)//求每個學生的平均成績的函數(shù){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)//求第一課程的平均成績的函
數(shù)
{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])
//找兩門以上課程不及格的學生的函數(shù)
{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])//找成
績優(yōu)秀學生(各門85以上或平均90分以上)的函數(shù){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置于數(shù)組str首地址*/pa=&a[0];/*指針pa置于a
數(shù)組首地址*/
ndigit=O;/*ndigit代表有多少個整數(shù)*/
i=0;/*代表字符串中的第幾個字符*/
j=0;
while(*(pstr+i)!='\0')
{if((*(pstr+i)>="0,)&&(*(pstr+i)<="9'))j++;
else
{if(j>0)
{digit=*(pstr+iT)-48;/*將個數(shù)位賦予digit*/
k=l;
while(k<j)/*將含有兩位以上數(shù)的其它位的數(shù)值累計于digit*/{el0=l;
for(m=l;m<=k;m++)
el0=el0*10;/*el0代表該位數(shù)所應乘的因子*/digit=digit+(*(pstr+i-l-k)-48)*el0;
/*將該位數(shù)的數(shù)值'累加于digit*/
k++;/*位數(shù)K自增*/
)
*pa=digit;/*將數(shù)值賦予數(shù)組a*/
ndigit++;
pa++;/*指針pa指向a數(shù)組下一元素*/j=0:
)
)
i++;
)
if(j>0)/*以數(shù)字結尾字符串的最后一個數(shù)據(jù)*/{digit=*(pstr+iT)-48;/*將個數(shù)
位賦予digit*/
k=l;
while(k<j)/*將含有兩位以上數(shù)的其它位的數(shù)值累加于digit*/{elO=l;
for(m=1;m<=k;m++)
el0=el0*10;/*elO代表位數(shù)所應乘的因子*/
digit=digit+(*(pstr+i-l-k)-48)*elO;/*將該位數(shù)的數(shù)值累加于digit*/k++;/*位
數(shù)K自增*/
)
*pa=digit;/*將數(shù)值賦予數(shù)組a*/
ndigit++;
j=0;
)
printf("Thereare%dnumbersinthisline,theyare:\n〃,ndigit);
j=0;
pa=&a[0];
for(j=O;j<ndigit;j++)/*打印數(shù)據(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)〃兩個字符串比較函數(shù)
{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〃指定開辟存區(qū)的最大容量charnewbuf[NEWSIZE];〃定義字
符數(shù)組newbuf
char*newp=newbuf;〃定義指針變量newp,指向可存區(qū)的始端
char*new(intn)〃定義開辟存區(qū)的函數(shù)now,開辟存儲區(qū)后返回指針
{if(newp+n<=newbuf+NEWSIZE)//開辟區(qū)未超過newbuf數(shù)組的大小
{newp+=n;//newp指向存儲區(qū)的末尾
return(newp-n);//返回,個指針,它指向存區(qū)的開始位置
}
else
return(NULL);//當存區(qū)不夠分配時,返回一個空指針
)
^include<stdio.h>
ttdefineNEWSIZE1000
charnewbuf[NEWSIZE];
char*newp=newbuf;
voidfree(char*p)〃釋放存區(qū)函數(shù)
{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個字符串的首地址賦予指針數(shù)組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個字符串排序函數(shù)*/
{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個整數(shù)的地址賦予指針數(shù)組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))//比較后交換整數(shù)地址
{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;〃結點數(shù)加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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個人之間農(nóng)業(yè)貸款借款合同
- 家長與孩子二零二五年度家務勞動責任履行協(xié)議
- 2025年度泳池救生員安全責任及應急響應規(guī)范協(xié)議
- 2025年度智慧城市建設預付款合作合同
- 二零二五年度酒店管理營業(yè)執(zhí)照及品牌加盟轉讓合同
- 二零二五年度房屋維修基金頂賬返還協(xié)議書
- 二零二五年度外墻保溫涂料產(chǎn)品環(huán)保認證與綠色標識合同
- 二零二五年度女方婚前財產(chǎn)協(xié)議婚姻安全與婚姻風險規(guī)避合同
- 二零二五年度裝配行業(yè)產(chǎn)品研發(fā)終止合同
- 石家莊市2025年度勞動合同電子化管理規(guī)范
- 幼兒園公開課:大班語言《相反國》課件(優(yōu)化版)
- 水利設施維護投標方案(技術標)
- 2024屆湖南省長沙市湖南師大附中等校高三上學期月考(二)語文試題(解析版)
- 上??萍及嫘W二年級下冊綜合實踐活動全冊教案
- 氣缸磨損的測量說課教案
- 《高鐵乘務安全管理及應急處置》課程教案-崔藝琳編寫
- 新課程標準2022版初中歷史考試題及答案
- 前言 馬克思主義中國化時代化的歷史進程與理論成果
- 產(chǎn)品可靠性測試計劃
- 心理健康與職業(yè)生涯(中職)PPT完整全套教學課件
- 中國文藝美學要略·論著·《畫學心法問答》
評論
0/150
提交評論