结构体解题
1定义⼀一个结构体变量(包括年、⽉月、⽇日),计算该⽇日在本年中为第⼏几
天?(注意考虑闰年问题),要求写⼀一个函数days,实现上⾯面的计算。 由主函数将年⽉月⽇日传递给days函数,计算后将⽇日⼦子传递回主函数输出。
2某班有5个学⽣生,三⻔门课。分别编写3个函数实现以下要求: (1) 求各⻔门课的平均分;
(2) 找出有两⻔门以上不及格的学⽣生,并输出其学号和不及格课程的成 绩;
(3) 找出三⻔门课平均成绩在85-90分的学⽣生,并输出其学号和姓名
3模拟n个⼈人参加选举的过程,并输出选举结果:假设候选⼈人有四⼈人,
分别⽤用A、B、C、D表⽰示,当选某候选⼈人时直接输⼊入其编号(编号由计
算机随机产⽣生),若输⼊入的不是A、B、C、D则视为⽆无效票,选举结束 后按得票数从⾼高到低输出候选⼈人编号和所得票数。
//
// main.m
// c62 test
//
// Created by dq on 15/7/22.
// Copyright (c) 2015年 dq. All rights reserved.
//
#import <Foundation/Foundation.h>
//typedef enum name
//{
// int elec1=65,
// int elec3,
// int elec4,
// int elec5,
//}name;
typedef struct years
{
int year;
int month;
int days;
}years;
typedef struct student
{
char name[10];
int score[3];
}student;
typedef struct elector
{
char name;
int num;
}elector;
int days(years a)
{
int sumDays=a.days;
int b[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,28,31,30,31,30,31,31,30,31,30,31}};
int boolYear=(a.year%4==0&&a.year%100!=0)||a.year%400==0;
if (boolYear) {
for (int i=0; i<a.month; i++) {
sumDays+= b[0][i];
}
}
else
{
for (int i=0; i<a.month; i++) {
sumDays+= b[1][i];
}
}
return sumDays;
}
void getAverage(student a[])
{
int sum=0;
for (int i=0; i<3; i++) {
for (int j=0; j<5; j++) {
sum+=a[j].score[i];
}
printf("第%d门平均分%d\n",i+1,sum/5);
sum=0;
}
}
void getName(student a[])
{
for (int i=0; i<5; i++) {
int count=0;
int b[3]={0,0,0};
for (int j=0; j<3; j++) {
if (a[i].score[j]<60) {
count++;
b[j]=a[i].score[j];
}
}
if (count>1) {
printf("%s ",a[i].name);
for (int n=0; n<3; n++) {
if (b[n]!=0) {
printf("第%d课%d分 ",n+1,b[n]);
}
}
}
printf("\n");
}
}
void getA(student a[])
{
for (int i=0; i<5; i++) {
int sum=0;
for (int j=0; j<3; j++) {
sum+=a[i].score[j];
}
if ((sum/3>=85)&&(sum/3<=90)) {
printf("**%s**",a[i].name);
}
}
}
void elector1()
{
elector nn[4]={'A',0,'B',0,'C',0,'D',0};
for (int j=0; j<100; j++) {
int piaoshu=arc4random()%5+65;
switch (piaoshu) {
case 65:
nn[0].num++;
break;
case 66:
nn[1].num++;
break;
case 67:
nn[2].num++;
break;
case 68:
nn[3].num++;
break;
default:
break;
}
}
for (int i=0; i<4; i++) {
for (int j=i+1; j<4; j++) {
if(nn[i].num<nn[j].num)
{
elector temp =nn[i];
nn[i]=nn[j];
nn[j]=temp;
}
}
}
for (int i=0; i<4; i++) {
printf("%c,%d\n",nn[i].name,nn[i].num);
}
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
// years y1={2015,12,15};
// printf("%d",days(y1));//定义⼀一个结构体变量(包括年、⽉月、⽇日),计算该⽇日在本年中为第⼏几
//天?(注意考虑闰年问题),要求写⼀一个函数days,实现上⾯面的计算。 由主函数将年⽉月⽇日传递给days函数,计算后将⽇日⼦子传递回主函数输出。
// student stu[5]={{"xiang",{50,50,50}},
// {"111oming",{80,80,80}},
// {"2iaoming",{80,80,80}},
// {"3iaoming",{80,80,80}},
// {"4iaoming",{85,85,90}}};
//getAverage(stu);
// getName(stu);
//getA(stu);
//某班有5个学⽣生,三⻔门课。分别编写3个函数实现以下要求: (1) 求各⻔门课的平均分;
// (2) 找出有两⻔门以上不及格的学⽣生,并输出其学号和不及格课程的成 绩;
//(3) 找出三⻔门课平均成绩在85-90分的学⽣生,并输出其学号和姓名
elector1();//模拟n个⼈人参加选举的过程,并输出选举结果:假设候选⼈人有四⼈人,
// 分别⽤用A、B、C、D表⽰示,当选某候选⼈人时直接输⼊入其编号(编号由计
// 算机随机产⽣生),若输⼊入的不是A、B、C、D则视为⽆无效票,选举结束 后按得票数从⾼高到低输出候选⼈人编号和所得票数。
}
return 0;
}