嵌入式培训学习历程第十一天

1、创建结构体struct person并编写程序,从终端上输入5
个人的年龄、性别和姓名,然后输出。
struct man{
char name[20];
int age;
char gender[7];
};

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 typedef struct man 
 5 {
 6     char name[20];    
 7     int age;
 8     char gender[7];
 9 }person_t;
10 
11 void input_data(person_t input_data[1024], int);
12 void output_data(person_t output_data[1024], int);
13 
14 int main(int argc, char *argv[])
15 {
16     int num;
17     person_t data[1024];
18     
19     printf("Enter you want input's numbers : ");
20     scanf("%d", &num);
21 
22     input_data(data, num);
23     output_data(data, num);
24 
25     printf("
");
26 
27     return 0;
28 }
29 
30 void output_data(person_t output_data[1024], int output_num)
31 {
32     int i;
33     for(i = 0; i != output_num; i ++)
34     {
35         printf("The person's name , age, gender is : %s	%d	%s.
", output_data[i].name, output_data[i].age, output_data[i].gender);
36     }
37     
38     return ;
39 }
40 
41 void input_data(person_t input_data[1024], int input_num)
42 {
43     int i;    
44     for(i = 0; i != input_num; i ++)
45     {
46         printf("Enter name age gender : ");
47         scanf("%s %d %s", input_data[i].name, &input_data[i].age, input_data[i].gender);
48     }
49 
50     return ;
51 }

2、使用结构体知识,实现在屏幕上模拟一个数字时钟。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <unistd.h>
 4 
 5 typedef struct clock
 6 {
 7     int hour;
 8     int minute;
 9     int second;
10 }time__t;
11 
12 int main(int argc, char *argv[])
13 {
14     time__t time = {0, 0 ,0};
15     for( ; ; )
16     {
17         printf("The time is : %d:%d:%d.
", time.hour, time.minute, time.second);
18         sleep(1);
19         ++ time.second;
20         if(60 == time.second)
21         {
22             ++ time.minute;
23             time.second = 0;
24             if(60 == time.minute)
25             {
26                 ++ time.hour;
27                 time.minute = 0;
28                 if(24 == time.hour)
29                 {
30                     time.hour = 0;
31                 }
32             }
33         }
34     }
35 
36     return 0;
37 }

3、用结构体数组实现10个学生的成绩统计。功能包括
 输入学生学号、姓名、成绩
 按成绩由高到低进行排序并打印结果并且前70%的学生
打印出标志”pass”,后30%的学员打印出标志”fail”
结构体为:struct student{
unsigned short id;
char name[10];
int score;
};

 1 #include <stdio.h>
 2 
 3 typedef struct student
 4 {
 5     unsigned short id;
 6     char name[10];
 7     int score;
 8 }stu;
 9 
10 void input_data(stu [], int);
11 void sort_data(stu [], int);
12 void output_data(stu [], int);
13 
14 int main(int argc, char *argv[])
15 {
16     stu stu_data[1024];
17     int num;
18 
19     printf("Enter student's numbers : ");
20     scanf("%d", &num);
21 
22     input_data(stu_data, num);
23     sort_data(stu_data, num);
24     printf("After sort!--------------------------------------
");
25     output_data(stu_data, num);
26 
27     return 0;
28 }
29 
30 void output_data(stu output_data[1024], int output_num)
31 {
32     int i,itemp = 0;
33     itemp = output_num * 0.7;
34     for(i = 0; i != output_num; i ++)
35     {
36         if(i < itemp) {
37             printf("The students's data is : %hu	%s	%d.		pass
", output_data[i].id, output_data[i].name, output_data[i].score);
38         }
39         else {
40             printf("The students's data is : %hu	%s	%d.		fail
", output_data[i].id, output_data[i].name, output_data[i].score);
41         }
42     }
43 }
44 
45 void sort_data(stu sort_data[1024], int sort_num)
46 {
47     int i,j;
48     stu itemp;
49 
50     for(i = 0; i != sort_num - 1; i ++)
51     {
52         for(j = 0; j != sort_num; j ++)
53         {
54             if(sort_data[j].score < sort_data[j + 1].score)
55             {
56                 itemp = sort_data[j];
57                 sort_data[j] = sort_data[j + 1];
58                 sort_data[j + 1] = itemp;
59             }
60 
61         }
62     }
63 
64     return ;
65 }
66 
67 void input_data(stu input_data[1024], int input_num)
68 {
69     int i;
70     for(i = 0; i != input_num; i ++)
71     {
72         printf("The sutdents's id name score : ");
73         scanf("%hu %s %d", &input_data[i].id, input_data[i].name, &input_data[i].score);
74     }
75 
76     return ;
77 }

4、用结构体数组实现10个学生的成绩统计。功能包括
struct stud{
unsigned short id;
char name[10];
int s[4];
double ave;
};
编写:1、(函数readrec把10个学生的学号、姓名、四项成绩以及平
均分放在一个结构体数组中,学生的学号、姓名和四项成绩由键盘
输入,然后计算出平均分放在结构体对应域中。
2、(函数writerec输出10名学生的记录。
3、(main函数调用readrec函数和writerec函数,实现全部程序
功能(不允许使用全局变量,函数之间的数据全部使用参数传递)

 1 #include <stdio.h>
 2 #include <unistd.h>
 3 #include <time.h>
 4 
 5 typedef struct stud
 6 {
 7     unsigned short id;
 8     char name[10];
 9     int s[4];
10     double ave;
11 }stu;
12 
13 void readrec(stu [], int);
14 void writerec(stu [], int);
15 
16 int main(int argc, char *argv[])
17 {
18     stu stu_data[1024];
19     int num;
20 
21     printf("Enter students's numbers : ");
22     scanf("%d", &num);
23 
24     readrec(stu_data, num);
25     printf("After --------------------------=---------------
");
26     writerec(stu_data, num);
27     
28     return 0;
29 }
30 
31 void writerec(stu write_data[1024], int write_num)
32 {
33     int i, j;
34     for(i = 0; i != write_num; i ++)
35     {
36         printf("The students data is : %hu	%s	", write_data[i].id, write_data[i].name);
37         for(j = 0; j != 4; j ++)
38         {
39             printf("%d	", write_data[i].s[j]);
40         }
41         printf("%.2lf", write_data[i].ave);
42         printf("
");
43     }
44 
45     return ;
46 }
47 
48 void readrec(stu read_data[1024], int read_num)
49 {
50     srand(time(NULL));
51     int i,j;
52     int sum;
53     for(i = 0; i != read_num; i ++)
54     {
55         sum = 0;
56         printf("Enter id name :");
57         scanf("%hu %s", &read_data[i].id, read_data[i].name);
58         printf("The student's score jisuanzhong .....
");
59         sleep(1);
60         printf("The score jisuan success-------------
");
61         for(j = 0; j != 4; j ++)
62         {
63             read_data[i].s[j] = rand() % 100;
64             sum += read_data[i].s[j];
65         }
66         printf("sum = %d.
", sum);
67         read_data[i].ave = (double)sum / 4;
68     }
69 
70     return ;
71 }

   老规矩,今天的笔记:

  加油站 : unsigned short   使用%hu匹配符

  1. 结构体:不同类型数据的集合

      (1)定义 : 根据程序的需要把若干种数据描述为一个整体

      (2)struct 关键字 

      typedef struct {      typedef struct record {

        int a;            int a;

        char b;           char b;

        float c;           float c;

        char s[10];         struct record *p;

      }record_t;            char s[10];

                     }record_t;

      注意 : 指针类型不决定指针的大小  指针大小遵循ILP32标准

      (3). 不允许在定义时对成员变量提供初值 

      (4). 能够对结构体数据进行整体初始化,不能够对数组进行整体赋值

      (5). 相同类型的结构体变量可以整体赋值

      (6). 结构体大小遵循结构体对齐原则。(以空间换取时间)大小取整 

  2. 大端系统 : 高位存低地址,地位存高地址

    小端系统 : 高位存高地址, 地位存低地址

    今天的英语 : Compound type (数据类型)   primitive(原始) abstraction(抽象化) 

                                  。。。。。。。。

原文地址:https://www.cnblogs.com/cxw825873709/p/3224137.html