首页 > 学院 > 开发设计 > 正文

C程序开发经典实例之8

2019-11-17 05:40:44
字体:
来源:转载
供稿:网友

【程序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 =&

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表