所在位置:论坛首页 -> 计算机科学与技术 -> 程序设计 -> c语言习题答案(第10章,新版第11章)(潭浩强,清华出版社) |
第十章 结构体与共用体
10.1
struct
{int year;
int month;
int day;
}date;
main()
{int days;
scanf("%d,%d,%d",&date.year,&date.month,&date.day);
switch(date.month)
{case 1:days=date.day;break;
case 2:days=date.day+31;break;
case 3:days=date.day+59;break;
case 4:days=date.day+90;break;
case 5:days=date.day+120;break;
case 6:days=date.day+151;break;
case 7:days=date.day+181;break;
case 8:days=date.day+212;break;
case 9:days=date.day+243;break;
case 10:days=date.day+273;break;
case 11:days=date.day+304;break;
case 12:days=date.day+334;break;
}
if((date.year%4==0&&date.year%100!=0||date.year%400==0)
&&date.month>=3)
days+=1;
printf("days=%d\n",days);
}
10.2
struct dt
{int year;
int month;
int day;
}date;
main()
{
scanf("%d,%d,%d",&date.year,&date.month,&date.day);
printf("\n%d\n",days(date.year,date.month,date.day));
}
days(year,month,day)
int year,month,day;
{int daysum=0,i;
static int daytab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}
for(i=1;i<month;i++)
daysum+=daytab[i];
daysum+=day;
if((year%4==0&&year%100!=0||year%400==0)&&month>=3)
daysum+=1;
return(daysum);
}
10.3
10.4
#define N 5
struct student
{char num[6];
char name[8];
int score[4];
}stu[N];
main()
{
input(stu);
print(stu);
}
input(stu)
struct student stu[];
{int i,j;
for(i=0;i<N;i++)
{printf("number");
scanf("%s",stu[i].num);
printf("name");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{printf("\nscore\n");
scanf("%d",&stu[i].score[j]);
}
printf("\n");
}
}
print(stu)
struct student stu[];
{int i,j;
printf("\nnumber name score1 score2 score3 \n");
for(i=0;i<N;i++)
{printf("%8s%10s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%7d",stu[i].score[j]);
printf("\n");
}
}
10.5
struct student
{char num[6];
char name[8];
int score[4];
float avr;
}stu[5];
main()
{int i,j,max,maxi,sum;
float average;
for(i=0;i<5;i++)
{printf("number");
scanf("%s",stu[i].num);
printf("name");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{printf("\nscore\n");
scanf("%d",&stu[i].score[j]);
}
}
average=0;
max=0;
maxi=0;
for(i=0;i<5;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/=5;
printf("number name score1 score2 score3 average\n");
for(i=0;i<5;i++)
{printf("%8s%10s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%7d",stu[i].score[j]);
printf("%6.2f\n",stu[i].avr);
}
printf("average=%5.2f\n",average);
printf("The best student is %s,sum=%d\n",stu[maxi].name,max);
}
操作选项: 评分 加精 解精 奖惩 设专题 设公告 解公告 固顶 总固顶 解固顶 结帖 解结帖 锁帖 解锁 移帖 删帖 |
|