C程序设计﹝谭浩强﹞课后习题答案选讲.ppt
文本预览下载声明
Unit 11;11.2,写一个函数days,实现上面的计算。由主函数将年、月、日传递给days 函数,计算后将日数传回主函数输出。 ;case 8:sum=date1.day+212; break;
case 9:sum=date1.day+243; break
case 10:sum=date1.day+273; break
case 11:sum=date1.day+304; break
case 12:sum=date1.day+334; break
}
If((date1.year%4==0date1.year%100!=0||date1.year%400==0)date1.month=3 )
sum+=1;
return sum;
}
void main() //定义主函数
{ printf(“Input year,month,day:”);
scanf(“%d,%d,%d”,date.year,date.month,date.day);
printf(“\n”);
printf(“%d/%d is the %dth day in %d.”,date.month,date.day,days(date),date.year);
}
注意:在main函数中的printf函数用days(date)调用days函数,其返回值就是天数。
;解法二:
struct y_m_d //定义结构体
{ int year:
int month;
int day;
}date;
void main()
{ int days(int,int,int);//对days函数的声明
int i,day_sum;
printf(“Input year,month,day:”);
scanf(“%d,%d,%d”,date.year,date.month,date.day);
day_sum=days(date.year, date.month, date.day);
printf(“%d/%d is the %dth day in d.”,date.month,date.day,day_sum,date.year);
}
Int days(int year,int month,int day)
{int day_sum,i;
int day_tab[12]={0,31,28,31,30,31,30,31,31,30,31,30,31};
day_sum=0;; for(i=1;imonth;i++)
day_sum+=day_tab[i];
day_sum+=day;
If((date1.year%4==0date1.year%100!=0||date1.year%400==0)date1.month=3 )
day_sum+=1;
return day_sum;
11.5 ,有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求输出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分)
解:N-S图如下图
变量说明:
max:当前最好成绩;maxi:当前最好成绩对应的下标序号;sum:第i个学生的总成绩;;#define N 10
struct student
{char num[6]
char name[8]
int score[4]
float avr;
}stu[N];
main()
{int i,j,max,maxi,sum;
float average;
/*输入*/
for(i=0;iN;i++)
{printf(“\nInput scores of student %d:\n”,i+1);
printf(“NO.:”);
scanf(“%s”,stu[i].num);
printf(“name”);
scanf(“%s”,stu[i].name);
;for(j=0;j3;j++)
{printf(“score %d:”,j+1);
scanf(“%d”, stu[i].score[j]);
} }
/*计算*/
average=0;
max=0;
maxi=0;
for(i=0;iN;i++)
{
显示全部