结构体基本用法
#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编辑过]