C程序开发经典实例之8
【程序71】
题目:编写input()和output()函数输入,输出5个学生的数据记录。
1.程序分析:
2.程序源代码:
#define N 5
strUCt student
{
char num[6];
char name[8];
int score[4];
}stu[N];
input(stu)
struct student stu[];
{
int i, j;
for(i=0; i { printf(" please input %d of %d ", i+1, N); printf("num: "); scanf("%s", stu[i].num); printf("name: "); scanf("%s", stu[i].name); for(j=0; j<3; j++) { printf("score %d.", j+1); scanf("%d", &stu[i].score[j]); } printf(" "); } } print(stu) struct student stu[]; { int i, j; printf(" No. Name Sco1 Sco2 Sco3 "); for(i=0; i { printf("%-6s%-10s", stu[i].num, stu[i].name); for(j=0;j<3;j++) printf("%-8d", stu[i].score[j]); printf(" "); } } main() { input(); print(); } 【程序72】 题目:创建一个链表。 1.程序分析: 2.程序源代码: /* creat a list */ #include "stdlib.h" #include "stdio.h" struct list { int data; struct list *next; }; /* 欢迎访问 C++Builder研究 - www.ccrun.com */ typedef struct list node; typedef node *link; void main() { link ptr, head; int num, i; ptr = (link)malloc(sizeof(node)); ptr = head; printf("please input 5 numbers==> "); for(i=0; i<=4; i++) { scanf("%d", &num); ptr->data = num; ptr->next = (link)malloc(sizeof(node)); if(i==4) ptr->next = NULL; else ptr = ptr->next; } ptr = head; while(ptr != NULL) { printf("The value is ==>%d ", ptr->data); tr = ptr->next; } } 【程序73】 题目:反向输出一个链表。 1.程序分析: 2.程序源代码: /*reverse output a list*/ #include "stdlib.h" #include "stdio.h" struct list { int data; struct list *next; }; typedef struct list node; typedef node *link; void main() { link ptr, head, tail; int num, i; tail = (link)malloc(sizeof(node)); tail->next = NULL; ptr = tail; printf(" please input 5 data==> "); for(i=0; i<=4; i++) { scanf("%d", &num); ptr->data = num; head = (link)malloc(sizeof(node)); head->next = ptr; ptr = head; } ptr = ptr->next; while(ptr != NULL) { printf("The value is ==>%d ", ptr->data); ptr = ptr->next; } } 【程序74】 题目:连接两个链表。 1.程序分析: 2.程序源代码: #include "stdlib.h" #include "stdio.h" struct list { int data; struct list *next; }; typedef struct list node; typedef node *link; link delete_node(link pointer, link tmp) { if(tmp == NULL) /* delete first node */ return pointer->next; else { if(tmp->next->next == NULL) /* delete last node */ tmp->next = NULL; else /* delete the other node */ tmp->next = tmp->next->next; return pointer; } } void selection_sort(link pointer, int num) { link tmp, BTmp; int i, min; for(i=0; i { tmp = pointer; min = tmp->data; btmp = NULL; while(tmp->next) { if(min > tmp->next->data) { min = tmp->next->data; btmp = tmp; } tmp = tmp->next; } printf("40: %d ", min); pointer = delete_node(pointer, btmp); } } link create_list(int array[], int num) { link tmp1, tmp2, pointer; int i; pointer = (link)malloc(sizeof(node)); pointer->data = array[0]; tmp1 = pointer; for(i=1; i { tmp2 = (link)malloc(sizeof(node)); tmp2->next =&
- 上一篇:C程序设计语言概论(2)
- 下一篇:C程序设计例解(03)