#import
#define PI 3.1415926
#define mianji(r) (PI*r*r)
#define avg(a,b) ((a+b)/2)
//定义学生结构体
typedef struct {
int num ;
char name[20];
char gender;
float score;
}Stu;
//定义一个点坐标的结构体CPoint,包含两个float成员x,y
typedef struct{
float x;
float y;
}CPoint;
void find(Stu stus[], long count);
void find(Stu stus[], long count)
{
for (int i = 0; i < count; i++) {
//判断性别是否为'm'
if
(stus[i].gender == 'm') {
stus[i].score+=10;
//判断分数是否超过100分,如果超过了直接记为100分
if
(stus[i].gender == 'm' && stus[i].score > 100){
stus[i].score = 100;
}
}
}
}
void changeStruct(Stu *p,Stu *p1, Stu *p2);
void changeStruct(Stu *p,Stu *p1, Stu *p2)
{
strcpy(p->name, p1->name);
strcpy(p1->name, p2->name);
strcpy(p2->name, p->name);
p->gender = p1->gender;
p1->gender = p2->gender;
p2->gender = p->gender;
p->num = p1->num;
p1->num = p2->num;
p2->num = p->num;
p->score = p1->score;
p1->score = p2->score;
p2->score =
p->score;
}
void print(Stu stu[],long count,int iscore,int hscore);
void print(Stu stu[],long count,int iscore,int hscore)
{
for (int i = 0; i < count; i++) {
if
(stu[i].score >= iscore
&& stu[i].score <=
hscore ) {
printf("%d %s %c %.2f", stu[i].num,stu[i].name,stu[i].gender,stu[i].score);
}
}
}
void sort(Stu *p,long count);
void sort(Stu *p,long count)
{
for (int i = 0; i < count-1; i++) {
for
(int j = 0; j < count - 1 - i; j++) {
if ((p+j)->num > (p+j+1)->num) {
Stu a = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = a;
}
}
}
for (int i = 0; i < count ; i++) {
printf("%d %s
%c %.2f\n", (p+i)->num,(p+i)->name,(p+i)->gender,(p+i)->score);
}
}
void sortname(Stu *p,long count);
void sortname(Stu *p,long count)
{
for (int i = 0; i < count-1; i++) {
for
(int j = 0; j < count - 1 - i; j++) {
if (strcmp((p+j)->name, (p+j+1)->name )> 0) {
Stu a = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = a;
}
}
}
for (int i = 0; i < count ; i++) {
printf("%d %s
%c %.2f\n", (p+i)->num,(p+i)->name,(p+i)->gender,(p+i)->score);
}
}
int main(int argc, const char * argv[])
{
//
// Student stu1 =
{1,"jiayuanfa",'m'};
// Student *p =
&stu1;
// printf("num = %d name = %s
gender = %c", (*p).num,(*p).name,(*p).gender);
// printf("num = %d name = %s
gender = %c", p->num,p->name,p->gender);
// //定义两个CPoint结构体变量m,n
//
// CPoint m = {45.4,56.9};
// CPoint n = {23.5,67.8};
//使用两个结构体指针分别指向m,n
// CPoint *p = &m;
// CPoint *p1 = &n;
// printf("x = %.2f y =
%.2f\n",p->x,p->y);
// printf("x = %.2f y =
%.2f\n", p1->x,p1->y );
// //1.计算两点之间的距离,1.勾弧定理 2.开放函数
sqrt
// float juli =
sqrt((p1->y-p->y)*(p1->y-p->y)+(p1->x-p->x)*(p1->x-p->x));
// printf("两点之间的距离为%.2f",
juli);
//
// //定义一个学生结构体变量stu
// Student stu = {1,"lan
ou",'m',95.6};
// //使用结构体指针指向结构体变量
// Student *p =
&stu;
// //先把所有的空格改变成下划线
// for (int i = 0; i <
strlen(p->name); i++) {
// if(p->name[i] == '
'){//注意用[]来表示name中得每一个元素
// p->name[i] = '_';
//
// } //将name中首字母改成大写 也就是ASCII-32
// if (i == 0) {
// p->name[i]-=32;
// }
// }
//
// printf("num = %d name = %s
gender = %c score = %.2f",
p->num,p->name,p->gender,p->score);
//
//2.使用指针查找学员数组中性别为男的学员,成绩增加10分,超过100分的记为100分
//创建学生结构体数组
// Stu stus [] ={
// {1,"saisai1",'m',120.0},
// {2,"saisai2",'f',88.9},
// {3,"saisai3",'m',67.8},
// {4,"saisai4",'m',89.0},
// {5,"saisai5",'m',34.7}
// };
// Stu *p = stus;
// unsigned long
count = sizeof(stus) /
sizeof(Stu) ;
// find (p,count);
//
// //打印数组中所有元素
// for (int i
= 0; i < count ; i++) {
// printf("num = %d name = %s
gender = %c score = %.2f\n",
stus[i].num,stus[i].name,stus[i].gender,stus[i].score);
// }
//1.写一个函数,交换两个结构体变量
// Stu one =
{1,"zhangsan",'m',78.9};
// Stu two =
{2,"lisi",'m',89.0};
// Stu three
= {0};
// changeStruct(&three, &one, &two);
// printf("%d
%s %c %.2f\n", one.num,one.name,one.gender,one.score);
// printf("%d
%s %c %.2f\n", two.num,two.name,two.gender,two.score);
// 2.有一学生数组,写以函数打印出指定分数段的学生信息
// Stu stu[3]
= {
// {1,"zhangsan",'m',56.8},
// {2,"lisi",'m',78.0},
// {3,"wangwu",'m',89.4}
// };
// int iscore
= 0, hscore = 0;
// printf("请输入指定的分数段:");
// scanf("%d%d",&iscore,&hscore);
// unsigned
long count = sizeof(stu) / sizeof(Stu);
// Stu *p =
stu;
// print(p,
count,iscore,hscore);
//3.有一个学生数组,写包含五个学生的一个函数,对学生排序(按学号从小到大),使用结构体指针操作数组元素
Stu stu[5] = {
{1,"chenwenjie",'m',67.89},
{2,"wangdoudou",'w',98.6},
{3,"xuguang",'m',78.5},
{4,"wangpeiei",'m',67.0},
{5,"lize",'m',89.7}
};
unsigned long count = sizeof(stu) / sizeof(Stu);
Stu *p = stu;
sortname(p, count);
sort(p, count);
//6.定义一个求圆的面积的宏
// int c =
0;
// printf("请输入圆的半径:");
// scanf("%d",&c);
// double a
=mianji(c);
// printf("%f\n",a);
//7.定义一个求两个数平均数的宏
int a = 0,b = 0;
printf("请输入两个数:");
scanf("%d%d",&a,&b);
double c = avg(a, b);
printf("%.2f\n",c);
return 0;
}