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(抽象化)
。。。。。。。。