C程序开发经典实例之8

王朝c/c++·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

【程序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<N; i++)

{

printf("\n please input %d of %d\n", 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("\n");

}

}

print(stu)

struct student stu[];

{

int i, j;

printf("\nNo. Name Sco1 Sco2 Sco3\n");

for(i=0; i<N; i++)

{

printf("%-6s%-10s", stu[i].num, stu[i].name);

for(j=0;j<3;j++)

printf("%-8d", stu[i].score[j]);

printf("\n");

}

}

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==>\n");

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\n", 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("\nplease input 5 data==>\n");

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\n", 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<num; 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\n", 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<num; i++)

{

tmp2 = (link)malloc(sizeof(node));

tmp2->next =&

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航