C程序设计第四版谭浩强习题例题第9章.docx
《C程序设计第四版谭浩强习题例题第9章.docx》由会员分享,可在线阅读,更多相关《C程序设计第四版谭浩强习题例题第9章.docx(48页珍藏版)》请在冰豆网上搜索。
C程序设计第四版谭浩强习题例题第9章
第9章
例9.1
#include
intmain()
{
structStudent
{
longintnum;
charname[20];
charsex;
charaddr[20];
}a={10101,"LiLin",'M',"123BeijingRoad"};
printf("No.%ld\nname:
%s\nsex:
%c\naddress:
%s\n",a.num,a.name,a.sex,a.addr);
return0;
}
例9.2
#include
intmain()
{
structStudent
{
intnum;
charname[20];
floatscore;
}student1,student2;
scanf("%d%s%f",&student1.num,&student1.name,&student1.score);
scanf("%d%s%f",&student2.num,&student2.name,&student2.score);
printf("Thehigherscoreis:
\n");
if(student1.score>student2.score)
printf("%d%s%6.2f\n",student1.num,student1.name,student1.score);
elseif(student1.scoreprintf("%d%s%6.2f\n",student2.num,student2.name,student2.score);
else
{
printf("%d%s%6.2f\n",student1.num,student1.name,student1.score);
printf("%d%s%6.2f\n",student2.num,student2.name,student2.score);
}
return0;
}
例9.3
#include
#include
structPerspon
{
charname[20];
intcount;
}leader[3]={"Li",0,"Zhang",0,"Sun",0};
intmain()
{
inti,j;
charleader_name[20];
for(i=1;i<=10;i++)
{
scanf("%s",leader_name);
for(j=0;j<3;j++)
if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;
}
printf("\nResult:
\n");
for(i=0;i<3;i++)
printf("%5s:
%d\n",leader[i].name,leader[i].count);
return0;
}
例9.4
#include
structStudent
{
intnum;
charname[20];
floatscore;
};
intmain()
{
structStudentstu[5]={{10101,"Zhang",78},{10103,"Wang",98.5},{10106,"Li",86},
{10108,"Ling",73.5},{10110,"Sun",100}};
structStudenttemp;
constintn=5;
inti,j,k;
printf("Theorderis:
\n");
for(i=0;i{
k=i;
for(j=i+1;jif(stu[j].score>stu[k].score)
k=j;
temp=stu[k];
stu[k]=stu[i];
stu[i]=temp;
}
for(i=0;iprintf("%6d%8s%6.2f\n",stu[i].num,stu[i].name,stu[i].score);
printf("\n");
return0;
}
例9.5
#include
#include
intmain()
{
structStudent
{
longnum;
charname[20];
charsex;
floatscore;
};
structStudentstu_1;
structStudent*p;
p=&stu_1;
stu_1.num=10101;
strcpy(stu_1.name,"LiLin");
stu_1.sex='M';
stu_1.score=89.5;
printf("No.:
%ld\nname:
%s\nsex:
%c\nscore:
%5.1f\n",stu_1.num,stu_1.name,stu_1.sex,stu_1.score);
printf("\n");
printf("No.:
%ld\nname:
%s\nsex:
%c\nscore:
%5.1f\n",(*p).num,(*p).name,(*p).sex,(*p).score);
return0;
}
例9.6
#include
structStudent
{
intnum;
charname[20];
charsex;
intage;
};
structStudentstu[3]={{10101,"LiLin",'M',18},{10102,"ZhangFang",'M',19},{10104,"WangMin",'F',20}};
intmain()
{
structStudent*p;
printf("No.Namesexage\n");
for(p=stu;pprintf("%5d%-20s%2c%4d\n",p->num,p->name,p->sex,p->age);
return0;
}
例9.7
#include
#defineN3
structStudent
{
intnum;
charname[20];
floatscore[3];
floataver;
};
intmain()
{
voidinput(structStudentstu[]);
structStudentmax(structStudentstu[]);
voidprint(structStudentstud);
structStudentstu[N],*p=stu;
input(p);
print(max(p));
return0;
}
voidinput(structStudentstu[])
{
inti;
printf("请输入各学生的信息:
学号、姓名、三门课成绩:
\n");
for(i=0;i{
scanf("%d%s%f%f%f",&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
}
}
structStudentmax(structStudentstu[])
{
inti,m=0;
for(i=0;iif(stu[i].aver>stu[m].aver)m=i;
returnstu[m];
}
voidprint(structStudentstud)
{
printf("\n成绩最高的学生是:
\n");
printf("学号:
%d\n姓名:
%s\n三门成绩:
%5.1f,%5.1f,%5.1f\n平均成绩:
%6.2f\n",stud.num,stud.name,stud.score[0],stud.score[1],stud.score[2],stud.aver);
}
例9.8
#include
#defineN3
structStudent
{
intnum;
floatscore;
structStudent*next;
};
intmain()
{
structStudenta,b,c,*head,*p;
a.num=10101;a.score=89.5;
b.num=10103;b.score=90;
c.num=10107;c.score=85;
head=&a;
a.next=&b;
b.next=&c;
c.next=NULL;
p=head;
do
{
printf("%ld%5.1f\n",p->num,p->score);
p=p->next;
}while(p!
=NULL);
return0;
}
例9.9
#include
#include
#defineLENsizeof(structStudent)
structStudent
{
longnum;
floatscore;
structStudent*next;
};
intn;
structStudent*creat(void)
{
structStudent*head;
structStudent*p1,*p2;
n=0;
p1=p2=(structStudent*)malloc(LEN);
scanf("%ld,%f",&p1->num,&p1->score);
head=NULL;
while(p1->num!
=0)
{
n=n+1;
if(n==1)head=p1;
elsep2->next=p1;
p2=p1;
p1=(structStudent*)malloc(LEN);
scanf("%ld,%f",&p1->num,&p1->score);
}
p2->next=NULL;
return(head);
}
intmain()
{
structStudent*pt;
pt=creat();
printf("\nnum:
%ld\nscore:
%5.1f\n",pt->num,pt->score);
return0;
}
例9.10
#include
#include
#defineLENsizeof(structStudent)
structStudent
{
longnum;
floatscore;
structStudent*next;
};
intn;
structStudent*creat()
{
structStudent*head;
structStudent*p1,*p2;
n=0;
p1=p2=(structStudent*)malloc(LEN);
scanf("%ld,%f",&p1->num,&p1->score);
head=NULL;
while(p1->num!
=0)
{
n=n+1;
if(n==1)head=p1;
elsep2->next=p1;
p2=p1;
p1=(structStudent*)malloc(LEN);
scanf("%ld,%f",&p1->num,&p1->score);
}
p2->next=NULL;
return(head);
}
voidprint(structStudent*head)
{
structStudent*p;
printf("\nNow,These%drecordsare:
\n",n);
p=head;
if(head!
=NULL)
do
{
printf("%ld%5.1f\n",p->num,p->score);
p=p->next;
}while(p!
=NULL);
}
voidmain()
{
structStudent*head;
head=creat();
print(head);
}
例9.11
#include
struct
{
intnum;
charname[10];
charsex;
charjob;
union
{
intclas;
charposition[10];
}category;
}person[2];
intmain()
{
inti;
for(i=0;i<2;i++)
{
printf("pleaseenterthedataofperson:
\n");
scanf("%d%s%c%c",&person[i].num,&person[i].name,&person[i].sex,&person[i].job);
if(person[i].job=='s')
scanf("%d",&person[i].category.clas);
elseif(person[i].job=='t')
scanf("%s",&person[i].category.position);
elseprintf("Inputerror!
");
}
printf("\n");
printf("No.namesexjobcalss/position\n");
for(i=0;i<2;i++)
{
if(person[i].job=='s')
printf("%-6d%-10s%-4c%-4c%-10d\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.clas);
else
printf("%-6d%-10s%-4c%-4c%-10s\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.position);
}
return0;
}
例9.12
#include
intmain()
{
enumColor{red,yellow,blue,white,black};
enumColori,j,k,pri;
intn,loop;
n=0;
for(i=red;i<=black;i++)
for(j=red;j<=black;j++)
if(i!
=j)
{
for(k=red;k<=black;k++)
if(k!
=i&&k!
=j)
{
n=n+1;
printf("%-4d",n);
for(loop=1;loop<=3;loop++)
{
switch(loop)
{
case1:
pri=i;break;
case2:
pri=j;break;
case3:
pri=k;break;
default:
break;
}
switch(pri)
{
casered:
printf("%-10s","red");break;
caseyellow:
printf("%-10s","yellow");break;
caseblue:
printf("%-10s","blue");break;
casewhite:
printf("%-10s","white");break;
caseblack:
printf("%-10s","black");break;
default:
break;
}
}
printf("\n");
}
}
printf("\ntotal:
%d\n",n);
return0;
}
习题(本人很懒,本次作业很多都没写scanf输入数据)
1.
#include
intmain()
{
structDate
{
intyear;
intmonth;
intday;
}a={2015,6,15};
intb[]={31,28,31,30,31,30,31,31,30,31,30,31};
inti,leap=0,sum=0;
if(a.month>2)
{
for(i=0;isum+=b[i];
if(a.year%4==0&&a.year%100!
=0||a.year%400==0)
leap=1;
sum+=a.day+leap;
}
else
{
for(i=0;isum+=b[i];
sum+=a.day;
}
printf("%d年%d月%d日是%d年的第%d天.\n",a.year,a.month,a.day,a.year,sum);
}
2.
#include
structDate
{
intyear;
intmonth;
intday;
};
intmain()
{
intdays(structDatec);
structDatea={2015,6,15};
intsum;
sum=days(a);
printf("%d年%d月%d日是%d年的第%d天.\n",a.year,a.month,a.day,a.year,sum);
}
intdays(structDatec)
{
intb[]={31,28,31,30,31,30,31,31,30,31,30,31};
inti,leap=0,s=0;
if(c.month>2)
{
for(i=0;is+=b[i];
if(c.year%4==0&&c.year%100!
=0||c.year%400==0)
leap=1;
s+=c.day+leap;
}
else
{
for(i=0;is+=b[i];
s+=c.day;
}
return(s);
}
3.
#include
structStudent
{
longnum;
charname[10];
floatscore[3];
};
voidmain()
{
voidprint(structStudent*q);
structStudenta[5]={{10010,"John",88,89,90},{10012,"Jimmy",59,68,47},{10015,"Dorothy",89,78,99},{10020,"Moriarty",100,99.5,95},{10026,"Grace",78,60,75}};
structStudent*p=a;
print(p);
}
voidprint(structStudent*q)
{
inti;
for(i=0;i<5;i++)
{
printf("num:
%ld,name:
%s,scores:
%5.1f,%5.1f,%5.1f\n",q->num,q->name,q->score[0],q->score[1],q->score[2]);
q++;
}
}
4.
#include
structStudent
{
longnum;
charname[10];
floatscore[3];
};
intmain()
{
voidprint(structStudent*q);
voidinput(structStudent*q);
structStudenta[5];
structStudent*p=a;
input(p);
print(p);
return0;
}
voidinput(structStudent*q)
{
inti;
for(i=0;i<5;i++)
{
scanf("%ld%s%f%f%f",&q->num,&q->name,&q->score[0],&q->score[1],&q->score[2]);
q++;
}
}
voidprint(structStudent*q)
{
inti;
for(i=0;i<5;i++)
{
printf("num:
%ld,name:
%s,scores:
%5.1f,%5.1f,%5.1f\n",q->num,q->name,q->score[0],q->score[1],q->score[2]);
q++;
}
}
5.
#include
structStudent
{
longnum;
charname[10];
floatscore[3];
floataver;
};
intmain()
{
voidinput(structStudent*q);
voidprint(structStudent*q);
structStudenta[10];
structStudent*p=a;
inti,j=0,k=0;
input(p);
print(p);
for(i=0;i<=10;i++)
if(k