习题 9.1 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。

ゞ 浴缸里的玫瑰 2022-05-28 02:46 134阅读 0赞

C程序设计(第四版) 谭浩强 习题9.1 个人设计

习题 9.1 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。

代码块:

方法1:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct count_day
  4. {
  5. int year;
  6. int month;
  7. int day;
  8. } dd={2018, 3, 28};
  9. int main()
  10. {
  11. int i, m[12], sum;
  12. for (i=0; i<6; i++)
  13. i<=3 ? m[2*i]=31, m[2*i+1]=30 : m[2*i-1]=31, m[2*i]=30;
  14. (!(dd.year%4)&&dd.year%100!=0)||!(dd.year%400) ? m[1]=29 : m[1]=28;
  15. for (i=0, sum=0; i<dd.month-1; sum+=m[i++]);
  16. printf("%d-%d-%d is No.%d days!\n", dd.year, dd.month, dd.day, sum+dd.day);
  17. system("pause");
  18. return 0;
  19. }

方法2:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct Date{
  4. int year;
  5. int month;
  6. int day;
  7. };
  8. void input(Date *d);
  9. void print(Date *d);
  10. int main()
  11. {
  12. Date *dd=(Date*)malloc(sizeof(Date));
  13. input(dd);
  14. print(dd);
  15. system("pause");
  16. return 0;
  17. }
  18. void input(Date *d)
  19. {
  20. printf("Please enter date: ");
  21. scanf("%d %d %d", &d->year, &d->month, &d->day);
  22. }
  23. void print(Date *d)
  24. {
  25. int m[12], i, y, sum=0;
  26. y=d->year;
  27. (y%4==0&&y%100!=0)||y%400==0 ? m[1]=29 : m[1]=28;
  28. for (i=0; i<12; i++){
  29. if (i==1) continue;
  30. else if (i==0||i==2||i==4||i==6||i==7||i==9||i==11) m[i]=31;
  31. else m[i]=30;
  32. }
  33. for (i=0; i<d->month-1; sum+=m[i++]);
  34. printf("The date is No.%d days!\n", sum+d->day);
  35. }

发表评论

表情:
评论列表 (有 0 条评论,134人围观)

还没有评论,来说两句吧...

相关阅读