-- 作者:admin
-- 发布时间:2015/11/30 10:55:46
-- [推荐]第十课代码讲义:结构体
结构体基本用法 #include "math.h" int main() { struct Date { int year; int month; int day; }; struct Student { int id; char name[100]; char gender; int age; struct Date birthday; char addr[100]; }; struct Student s1= {1,"张三",\'M\',18,{1997,8,27},"南京仙林大学城"}; struct Student s2= {2,"李四",\'M\',19,{1996,1,10},"南京仙林大学城"}; printf("第一个学生ID是%d,姓名是%s,性别是%c,年龄是%d,出生日期是%d年%d月%d日,住址是%s", s1.id,s1.name,s1.gender,s1.age,s1.birthday.year,s1.birthday.month,s1.birthday.day,s1.addr);
return 0; }
投票1: #include <stdio.h> #include <string.h>
struct person { char name[20]; int count; } leader[3]= {"Li",0,"Zhang",0,"Wang",0};
void main() { int i,j; char leader_name[20]; for(i=1; i<=10; i++) { scanf("%s",leader_name); for(j=0; j<3; j++) if(strcmp(leader_name,leader[j].name)==0) leader[j].count++; } printf("\\n"); for(i=0; i<3; i++) printf("%5s:%d\\n",leader[i].name,leader[i].count); }
投票2: #include <stdio.h> #include <string.h>
struct person { char name[20]; int count; } leader[3]= {"Li",0,"Zhang",0,"Wang",0};
void main() { int i,j; int id; for(i=0; i<3; i++) printf("%d:%s\\n",i,leader[i].name); printf("请输入序号!\\n"); for(i=1; i<=10; i++) { scanf("%d",&id); leader[id].count++; } printf("\\n"); for(i=0; i<3; i++) printf("%5s:%d\\n",leader[i].name,leader[i].count); }
成绩统计1: #include <stdio.h> #define N 5
struct student { char num[6]; char name[8]; int score[4]; } stu[N];
int main() { void input(struct student stu[]); void print(struct student stu[]); input(stu); print(stu); return 0; }
void input(struct student stu[]) { int i,j; for (i=0; i<N; i++) { printf("input scores of student %d:\\n",i+1); printf("NO.: "); scanf("%s",stu[i].num); printf("name: "); scanf("%s",stu[i].name); for (j=0; j<3; j++) { printf("score %d:",j+1); scanf("%d",&stu[i].score[j]); } printf("\\n"); } }
void print(struct student stu[]) { int i,j; printf("\\n NO. name score1 score2 score3\\n"); for (i=0; i<N; i++) { printf("%5s%10s",stu[i].num,stu[i].name); for (j=0; j<3; j++) printf("%9d",stu[i].score[j]); printf("\\n"); } }
指针写法 #include <stdio.h> #define N 3
struct student { char num[6]; char name[8]; int score[3]; } stu[N];
int main() { void input(struct student *stu); void print(struct student *stu); input(stu); print(stu); return 0; }
void input(struct student *stu) { int i,j; for (i=0; i<N; i++) { printf("input scores of student %d:\\n",i+1); printf("NO.: "); scanf("%s",stu->num); printf("name: "); scanf("%s",stu->name); for (j=0; j<3; j++) { printf("score %d:",j+1); scanf("%d",&stu->score[j]); } printf("\\n"); stu++; } }
void print(struct student *stu) { int i,j; printf("\\n NO. name score1 score2 score3\\n"); for (i=0; i<N; i++) { printf("%5s%10s",stu->num,stu->name); for (j=0; j<3; j++) printf("%9d",stu->score[j]); printf("\\n"); stu++; } }
成绩统计2: #include <stdio.h> #define N 3
struct student { char num[6]; char name[8]; int score[3]; } stu[N];
int main() { void input(struct student stu[]); void print(struct student stu[]); input(stu); print(stu); return 0; }
void input(struct student *stu) { int i,j; for (i=0; i<N; i++) { printf("input scores of student %d:\\n",i+1); printf("NO.: "); scanf("%s",stu->num); printf("name: "); scanf("%s",stu->name); for (j=0; j<3; j++) { printf("score %d:",j+1); scanf("%d",&stu->score[j]); } stu++; printf("\\n"); } }
void print(struct student *stu) { int i,j; printf("\\n NO. name score1 score2 score3\\n"); for (i=0; i<N; i++) { printf("%5s%10s",stu->num,stu->name); for (j=0; j<3; j++) printf("%9d",stu->score[j]); stu++; printf("\\n"); } }
增加统计功能: #include <stdio.h> #define N 3 struct student { char num[6]; char name[8]; float score[3]; float avr; } stu[N];
int main() { int i,j,maxi; float sum,max,average; for (i=0; i<N; i++) { printf("input scores of student %d:\\n",i+1); printf("NO.:"); scanf("%s",stu[i].num); printf("name:"); scanf("%s",stu[i].name); for (j=0; j<3; j++) { printf("score %d:",j+1); scanf("%f",&stu[i].score[j]); } }
average=0; max=0; maxi=0; for (i=0; i<N; 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/=N;
printf(" NO. name score1 score2 score3 average\\n"); for (i=0; i<N; i++) { printf("%5s%10s",stu[i].num,stu[i].name); for (j=0; j<3; j++) printf("%9.2f",stu[i].score[j]); printf(" %8.2f\\n",stu[i].avr); } printf("average=%5.2f\\n",average); printf("The highest score is : student %s,%s\\n",stu[maxi].num,stu[maxi].name); printf("his scores are:%6.2f,%6.2f,%6.2f,average:%5.2f.\\n", stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr); return 0; }
[此贴子已经被作者于2015-12-08 12:40:45编辑过]
|