直播网站建设方案,php网站开发数据列表排重,软件开发包括哪些阶段,开发一个电商网站1. 结构体#xff1a; 1. 结构体类型定义#xff1a;
嵌入式学习第十三天#xff01;#xff08;const指针、函数指针和指针函数、构造数据类型#xff09;-CSDN博客 2. 结构体变量的定义#xff1a;
嵌入式学习第十三天#xff01;#xff08;const指针、函数指针和…1. 结构体 1. 结构体类型定义
嵌入式学习第十三天const指针、函数指针和指针函数、构造数据类型-CSDN博客 2. 结构体变量的定义
嵌入式学习第十三天const指针、函数指针和指针函数、构造数据类型-CSDN博客 3. 结构体元素的访问
嵌入式学习第十三天const指针、函数指针和指针函数、构造数据类型-CSDN博客 4. 结构体的存储 内存对齐 char 按照1字节对齐 short 按照2字节对齐 int 按照4字节对齐 double 按照4字节对齐 结构体整体的大小必须为最大基本类型长度的整数倍 5. 结构体作为函数参数
struct student stu;GetAllStuInfo(stu);
int GetAllStuInfo(struct student *pstu); 6. 结构体数组 练习定义一个学生的类型封装一个函数GetStuInfo获得学生信息放入结构体中再封装一个函数PutStuInfo打印学生信息
#include stdio.hstruct student
{char name[100];char sex;int age;int score;
};int GetAllStuInfo(struct student *pstu, int maxlen)
{int i 0;int curlen 0;printf(请输入学生个数\n);scanf(%d,curlen); for(i 0; i curlen; i){scanf(%s, pstu[i].name);scanf( %c, pstu[i].sex);scanf(%d, pstu[i].age);scanf(%d, pstu[i].score);}return curlen;
}int PutAllStuInfo(struct student *pstu, int len)
{int i 0;for(i 0; i len; i){printf(姓名%s\n, pstu[i].name);printf(性别%c\n, pstu[i].sex);printf(年龄%d\n, pstu[i].age);printf(分数%d\n, pstu[i].score);}
}int main(void)
{struct student s[100];int n 0;n GetAllStuInfo(s, 100);PutAllStuInfo(s, n);return 0;
} 2. 共用体
union 共用体名
{数据类型1 成员变量1数据类型2 成员变量2数据类型3 成员变量3...
} 共同体所有成员变量共享同一片空间 内存大小端 1. 内存小端 内存低地址存放低数据位 内存高地址存放高数据位 2. 内存大端 内存低地址存放高数据位 内存高地址存放低数据位 举例应用
#include stdio.hunion s
{char a;int b;
};int main(void)
{union s s1;s1.b 1;if(s1.a){printf(小端\n);}else{printf(大端\n);}#if 0int num 0x11223344;char *p NULL;p (char *)num;if(*p 0x11){printf(大端\n);}else{printf(小端\n);}
#endifreturn 0;
} 3.枚举
enum 枚举类型名
{枚举常量1,枚举常量2,枚举常量3, }; 1. 枚举类型一般说明将来变量的值在给定的常量中选择其一作为它的值 2. 枚举常量的值总是前一个枚举常量的值1第一个默认为0值 3. 枚举常量默认为int类型可以直接在程序中使用
4. 位运算运算符
按位与与0得0|按位或或1置1^按位异或相同为0相异为1~按位取反右移右移n位等价于让该数 /2^n左移z左移n位等价于让该数 *2^n 按位异或实现数据交换:
a a ^ b;
b a ^ b; //b a ^ b ^ b a ^ 0 a;
a a ^ b; //a a ^ b ^ (a ^ b ^ b) a ^ b ^ a ^ b ^ b a ^ b ^ a ^ 0// a ^ b ^ a a ^ a ^ b 0 ^ b b 将变量的第n位置0: num num ~(1 n) 将变量的第n位置1:
num num | (1 n)
作业 有一个班的5个学生有3门课程。 1、求第一门课的平均分 2、找出有两门以上课程不及格的学生输出他们的学号和全部课程成绩及平均分 3、找出平均分在90分以上或全部课程成绩在85分以上的学生。 分别编写三个函数来实现以上三个要求
#include stdio.h
#include string.hstruct student
{char name[32];int no;int score[3];
};double GetAvgScore(struct student *pstu, int len)
{int i 0;int sum 0;for(i 0; i len; i){sum pstu[i].score[0];}return sum / (len0.0);
}int OutputFailStuInfo(struct student *pstu, int len, int num)
{int i 0;int j 0;int k 0;int cnt 0;double sum 0;printf(\n两门以上不及格学生为\n);for(j 0; j len; j){for(i 0; i num; i){if(pstu[j].score[i] 60){cnt;}sum pstu[j].score[i];}if(cnt 2){printf(姓名%s\n, pstu[j].name);printf(学号%d\n, pstu[j].no);for(k 0; k num; k){printf(第%d门分数为%d\n, k2, pstu[j].score[k]);}printf(平均分数为%.2lf\n, sum/(num0.0));printf(\n);}cnt 0;sum 0;}return 0;
}int OutputBestStuInfo(struct student *pstu, int len, int num)
{int i 0;int j 0;int k 0;int cnt 0;int sum 0;printf(平均分在90分以上或全部成绩在85分以上的学生为\n);for(j 0; j len; j){for(i 0; i num; i){sum pstu[j].score[i];if(pstu[j].score[i] 85){cnt;}}if(cnt 3 || sum/num 90){printf(%s\n, pstu[j].name);}cnt 0;sum 0;}
}int main(void)
{struct student stu[5]{{zhangsan, 202401, {78, 69, 81}},{lisi, 202402, {49, 57, 73}},{wangwu, 202403, {32, 53, 67}},{maliu, 202404, {95, 94, 99}},{zhaoqi, 202405, {87, 91, 86}}};double avg 0;avg GetAvgScore(stu, 5);printf(所有学生第一门课的平均分为 %.2lf\n, avg);OutputFailStuInfo(stu, 5, 3);OutputBestStuInfo(stu, 5, 3);return 0;
}