Loading...
  所在位置:论坛首页 -> 计算机科学与技术 -> 程序设计 -> c语言习题答案(第10章,新版第11章)(潭浩强,清华出版社)
回复

c语言习题答案(第10章,新版第11章)(潭浩强,清华出版社)

作者:pp 时间:2007-12-15 15:03:28 收藏 编辑

第十章  结构体与共用体
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);
}

高级回复

操作选项: 评分 加精 解精 奖惩 设专题 设公告 解公告 固顶 总固顶 解固顶 结帖 解结帖 锁帖 解锁 移帖 删帖
  首页
Copyright 2006-2012 HistoryCreator.com Powered By: BBSGood 5
吉ICP备06005902号