else {
loc_head = (struct s_list *)malloc(sizeof(struct s_list)); loc_head -> data = *p++; tail = loc_head; while(*p){
temp = (struct s_list *)malloc(sizeof(struct s_list)); temp -> next = loc_head; loc_head = temp;
loc_head -> data = *p++; }
tail -> next = NULL; }
*headp = loc_head; }
程序运行结果如下:
3.程序设计的实验步骤及结果 (1)
1)创建一个工程
建立名为prj2的工程。 2)编辑源文件和保存 程序如下
#include
unsigned char bit0:1, bit1:1, bit2:1, bit3:1, bit4:1, bit5:1, bit6:1, bit7:1; }a;
union w{
unsigned char t; struct bits a; }m;
void f0(struct bits b) {
printf(\}
void f1(struct bits b) {
printf(\}
void f2(struct bits b) {
- 6 -
printf(\}
void f3(struct bits b) {
printf(\}
void f4(struct bits b) {
printf(\}
void f5(struct bits b) {
printf(\}
void f6(struct bits b) {
printf(\}
void f7(struct bits b) {
printf(\}
void main() {
unsigned int n;
void (*p_fun[8])(struct bits b); printf(\ scanf(\ m.t = n;
m.a.bit0 = 1; p_fun[0] = f0; p_fun[1] = f1; p_fun[2] = f2; p_fun[3] = f3; p_fun[4] = f4; p_fun[5] = f5; p_fun[6] = f6; p_fun[7] = f7; if(m.a.bit0)
p_fun[0](m.a); if(m.a.bit1)
p_fun[1](m.a); if(m.a.bit2)
- 7 -
p_fun[2](m.a); if(m.a.bit3)
p_fun[3](m.a); if(m.a.bit4)
p_fun[4](m.a); if(m.a.bit5)
p_fun[5](m.a); if(m.a.bit6)
p_fun[6](m.a); if(m.a.bit7)
p_fun[7](m.a); }
运行结果如下所示:
结果正确! (2)
1)创建一个工程
建立名为prj3工程。 2)编辑源文件和保存 程序如下
#include
char num[8]; char name[9]; int english; int math; int phy; int c;
struct list *next; }*p, *q;
struct list *creat_list(int n) {
int i;
struct list *head = NULL;
- 8 -
for(i = 0; i < n; i++) {
p = (struct list *)malloc(sizeof(struct list)); if(i == 0)
head = p; else
q -> next = p; printf(\
scanf(\ printf(\
scanf(\
printf(\
scanf(\ printf(\ q = p;
p -> next = NULL; }
return head; }
void output(struct list *head, int n) {
printf(\ name english math phy c\\n\ for (p = head; n > 0; n--, p = p -> next) {
printf(\-> math, p -> phy, p -> c); } }
void xiugai(struct list *head) {
char a[8]; int s;
int k, i, m;
printf(\您想修改第几个学生的信息?\\n\ scanf(\
for(q = head, i = 0; i < k - 1; i++) q = q -> next;
printf(\您想修改哪项信息?\\n\
printf(\ scanf(\ switch(m) {
- 9 -
case 1:
printf(\输入新学号:\ scanf(\
strcpy(q -> num, a);
printf(\确认新学号:%s\ break; case 2:
printf(\输入新姓名:\ scanf(\
strcpy(q -> name, a);
printf(\确认新姓名:%s\ break; case 3:
printf(\输入新英语成绩:\ scanf(\ q -> english = s;
printf(\确认新英语成绩:%d\ break; case 4:
printf(\输入新数学成绩:\ scanf(\ q -> math = s;
printf(\确认新数学成绩:%d\ break; case 5:
printf(\输入新物理成绩:\ scanf(\ q -> phy = s;
printf(\确认新物理成绩:%d\ break; case 6:
printf(\输入新c成绩:\ scanf(\ q -> c = s;
printf(\确认新c成绩:%d\ break; default:
printf(\ }
printf(\}
void aver(struct list *head, int n) {
- 10 -