C语言中结构体的经典例题

1.给结构体变量赋值并输出其值

#include<stdio.h>
struct stu
{
	long num;
	char name[12];
	float score;
}stu1,stu2;
main()
{
	scanf("%ld%s%f",&stu1.num,&stu1.name,&stu1.score);
	stu2=stu1;
	printf("学号=%ld 姓名=%s 成绩=%5.1f\n",stu1.num,stu1.name,stu1.score);
	printf("学号=%ld 姓名=%s 成绩=%5.1f\n",stu2.num,stu2.name,stu2.score);
}

2.一个学生具有学号、姓名、3门课程成绩共5个信息。定义结构体变量,调用函数求3门课程的平均分。

#include<stdio.h>
struct stu
{
	long num;
	char name[12];
	int score[3];
};
float aver(struct stu ss)
{
	float f;
	f=(ss.score[0]+ss.score[1]+ss.score[2])/3.0;
	return f;
}
main()
{
	struct stu s;
	float a;
	scanf("%ld",&s.num);
	gets(s.name);
	scanf("%d%d%d",&s.score[0],&s.score[1],&s.score[2]);
	a=aver(s);
	printf("学号=%ld 姓名=%s 成绩=%d %d %d\n",s.num,s.name,s.score[0],s.score[1],s.score[2]);
	printf("平均成绩=%5.1f\n",a);
}

3.对5个学生的信息按成绩进行降序排序

#include<stdio.h>
#define N 5
struct student
{
	long num;
	char name[12];
	char sex;
	int age;
	float score;
}stud[N];
main()
{
	int i,j;
	struct student t;
	for(i=0;i<N;i++)
	{
		scanf("ld",&stud[i].num);
		gets(stud[i].name);
		scanf("%c%d%f",&stud[i].sex,&stud[i].age,&stud[i].score);
	}
	for(i=0;i<N-1;i++)
	for(j=i+1;j<N;j++)
	if(stud[i].score<stud[j].score)
	{
		t=stud[i];stud[i]=stud[j];stud[j]=t;
	}
	printf("Num     Name     Sex Age     Score\n");
	for(i=0;i<N;i++)
	printf("%-101d%-12s%c   %d  %-5.1f\n",stud[i].num,stud[i].name,stud[i].sex,stud[i].age,stud[i].score);
}

4.用指针变量输出结构体

 5.有5个学生的信息,每个学生的信息包括学号和成绩,编程序求成绩最高的学生的信息。

#include<stdio.h>
#include<stdlib.h>
main()
{
	struct student
	{
		long num;
		float score;
	};
	struct student s[5]={107153,95.5,107154,70.0,107151,98.0,107155,55.0,107159,75.0
	};
	struct student *ps;
	int i;
	ps=(struct student*)malloc(sizeof(struct student));
	ps->num=s[0].score;
	ps->score=s[0].score;
	for(i=1;i<5;i++)
	if(s[i].score>ps->score)
	{
		ps->num=s[i].num;ps->score=s[i].score;
	}
	printf("最高成绩学生:学号=%1d成绩=%5.1f\n",ps->num,ps->score);
	free(ps);
}

6.用动态数组产生n个[40,100]的随机数,并采用冒泡排序法排序

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
	int i,j,t,*pa,n;
	scanf("%d",&n);
	srand(time(0));
	pa=(int *)calloc(n,sizeof(int));
	for(i=0;i<n;i++)
	{
		*(pa+i)=rand()%61+40;
		printf("%5d",*(pa+i));
	}
	printf("\n");
	for(i=0;i<n-1;i++)
	for(j=0;j<n-1-i;j++)
	if(*(pa+j)>*(pa+j+1))
	{
		t=*(pa+j);*(pa+j)=*(pa+j+1);*(pa+j+1)=t;
	}
	for(i=0;i<n;i++)
	printf("%5d",*(pa+i));
	printf("\n");
	free(pa);
 } 

猜你喜欢

转载自blog.csdn.net/m0_74016429/article/details/129919138