#include <stdio.h>
struct namebiao{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在小组
float score; //成绩
};
// 定义一个结构体 自定义名字 namebiao
struct namebiao shuzu[]= {
{"Li ping", 5, 18, 'C', 145.0},
{"Zhang ping", 4, 19, 'A', 130.5},
{"He fang", 1, 18, 'A', 148.5},
{"Cheng ling", 2, 17, 'F', 139.0},
{"Wang ming", 3, 17, 'B', 144.5}
} ;
// 再次定义一个结构体 shuzu , 有几组元素省略。 对应传入数组赋值。
void average(struct namebiao *ps, int len){
// 定义函数 , 声明指针结构体 ps 内容为 namebiao 结构体,定义 len 变量. len 的值由 main 函数得知。 main 传入的是结构体很多数据,因此需要定义 ps 指针来接收数据
int i, num_140 = 0;
float average, sum = 0; // 小数浮点型
// 初始定义变量的值
for(i=0; i<len; i++){
sum += (ps + i) -> score;
// 定义 sum 成绩相加变量 sum += 理解为: sum = sum + ps 数组指针的下一个score 元素值
printf(" \n \n sum 的值为: %.3f 保留三位小数 \n \n " , sum);
if((ps + i)->score < 140) num_140++;
}
printf("sum=%.2f\naverage=%.2f\nnum_140=%d\n", sum, sum/5, num_140);
}
int jiegouti(){
// 其他测试函数
struct namebiao stu1 = { "Tom", 12, 18, 'A', 136.5 }, *pstu = &stu1;
//读取结构体成员的值
printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", (*pstu).name, (*pstu).num, (*pstu).age, (*pstu).group, (*pstu).score);
printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", pstu->name, pstu->num, pstu->age, pstu->group, pstu->score);
return 0;
}
int main(){
int len = sizeof(shuzu) / sizeof(struct namebiao);
printf("len 的值为: %d shuzu 占用字节数: %ld namebiao 占用字节数 : %ld" , len , sizeof(shuzu), sizeof(struct namebiao) );
// %ld 有符号长整型,int 是整型
average(shuzu, len);
printf("\n 当前执行 结构指针函数,有两种打印结构体的方法: 方法1 (*pstu).name 方法2 pstu->name \n \n ");
jiegouti(); // 执行函数,也需要给类型,否则出现隐形声明。
return 0;
}
// 研究: 寄存器 和 时序Powered by ddoss.cn 12.0
©2015 - 2025 ddoss
渝公网安备50011302222260号
渝ICP备2024035333号
【实验平台安全承诺书】
小绿叶技术社区,优化网络中,点击查看配置信息
主机监控系统: 安全防火墙已开启检查cc攻击-下载文件完成后等待10s 恢复访问,检查连接数低于峰值恢复访问
您的IP:216.73.216.110,2025-12-01 15:25:03,Processed in 0.01046 second(s).