| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7455 人关注过本帖
标题:一个最简单的工资表
只看楼主 加入收藏
牛牛的宝贝
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-9-3
收藏
 问题点数:0 回复次数:15 
一个最简单的工资表
麻烦大家帮我看看这个工资表应该怎么做 很简单 但是那些函数还没学
职工工资表
建立一个链表 每个节点包含的成员有:职工号和工资,用malloc函数开辟新结点,要求链表包含5个结点,,从键盘输入结点的有效数据,然后把这些结点的数据打印出来,用creat函数来建立结点,用list函数来输出数据,这五个职工号码为1.2.3.4.5
搜索更多相关主题的帖子: 工资 
2008-09-03 16:38
xujibao
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-6-19
收藏
得分:0 
是很简单,但是为什么不自己做啊?不会的可以查查书嘛
2008-09-03 18:14
妍清舞
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2007-11-12
收藏
得分:0 
[bo][un]xujibao[/un] 在 2008-9-3 18:14 的发言:[/bo]

是很简单,但是为什么不自己做啊?不会的可以查查书嘛

说得有理
2008-09-03 21:42
Lijia3534
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-9-3
收藏
得分:0 
不好意思啊 我刚学C语言 这几个函数我都还没学过 课设的拿到这个题目 我在网上看了看 这个确实很简单 可我还是不会 麻烦各位帮忙看看
2008-09-03 22:02
mythhaha
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2008-3-17
收藏
得分:0 
只有MALLOC函数是系统给定的,可以直接用,create和list都要自己写
2008-09-03 22:06
Lijia3534
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-9-3
收藏
得分:0 
回复 5# mythhaha 的帖子
可是我不会写 能不能麻烦写个程序给我
2008-09-03 22:31
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
/*
职工工资表
建立一个链表 每个节点包含的成员有:职工号和工资,用malloc函数开辟新结点,
要求链表包含5个结点,,从键盘输入结点的有效数据,然后把这些结点的数据打印
出来,用creat函数来建立结点,用list函数来输出数据,
这五个职工号码为1.2.3.4.5
*/

#include <stdio.h>
#include <stdlib.h>

#define MAX 5      // 员工数量

//-- 类型声明 & 函数声明 --
typedef struct ls {     // 链表结构
    int     Gong_Hao;
    double  Gong_Zi;
    struct ls * next;
} ls;

ls * creat(int n);         // 创建链表,同时creat函数调用key 函数进行数据输入
void key(ls * p);          // 数据输入函数
void list(ls * p);         // 显示链表数据


//-- Main 函数 --
int main(void)
{
    ls * pl = creat(MAX);
    list(pl);
   
    getchar();
    return 0;
}


//-- 函数定义 --
ls * creat(int n)
{
    ls * pl = NULL;
   
    if(n-- > 0)
    {
        pl = (ls *)malloc(sizeof(ls));
        pl->Gong_Hao = MAX - n;
        key(pl);
        pl->next = creat(n);
    }
   
    return pl;
}

void key(ls * p)
{
    printf("请输入员工 %d 的工资: ", p->Gong_Hao);
    while(scanf("%lf", &p->Gong_Zi) != 1)
    {
        while(getchar() != '\n');
        printf("[!]请正确输入员工 %d 的工资: ", p->Gong_Hao);
    }
    while(getchar() != '\n');
}

void list(ls * p)
{
    printf("\n\n----------------------------------\n");
    while(p)
    {
        printf("员工%3d    工资 %10.2lf\n", p->Gong_Hao, p->Gong_Zi);
        p = p->next;
    }
    printf("----------------------------------\n\n");
}

—>〉Sun〈<—
2008-09-03 23:46
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
程序代码:
/*******************************************************************************

        职工工资表
        建立一个链表 每个节点包含的成员有:职工号和工资,用malloc函数开辟新结点,
    要求链表包含5个结点,,从键盘输入结点的有效数据,然后把这些结点的数据打印出
    来,用creat函数来建立结点,用list函数来输出数据,这五个职工号码为1.2.3.4.5

*******************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define C {char c;while(c=getchar()!='\n');}
struct ST
{
    int ID;
    float money;
    struct ST *next;
}*p,*pr,*head;
void creat()
{
    int i=1;
    float _money;
    while(i<6)
    {
        printf("input NO.%d wage:\n",i);
        scanf("%f",&_money);
        C;
        if(_money<=0)
            continue;
        p=(struct ST*)malloc(sizeof(struct ST));
        if(p==NULL) exit(0);
        p->ID=i;
        p->money=_money;
        p->next=NULL;
        if(i==1)
        {
            head=p;
            pr=p;
        }
        else
        {
            pr->next=p;
            pr=p;
        }
        i++;
        p->next=NULL;
    }
}
void list()
{
    int i=0;
    for(p=head;i<5;p=p->next,i++)
        printf("%5d%10.2f\n",p->ID,p->money);
}
int main(void)
{
    creat();
    list();
    p=head;
    while(p->next!=NULL) /*也不知道这么释放内存对不对?请各位指教 */
    {
        free(p);
        p=p->next;
    }

}

2008-09-04 01:08
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
[bo][un]广陵绝唱[/un] 在 2008-9-4 01:08 的发言:[/bo]
int main(void)
{
    creat();
    list();
    p=head;
    while(p->next!=NULL)  // (1)当 p == NULL 时,内存被错误的访问。
    {                     // (2)最后一个元素时(p->next == NULL)所以最后一个元素没有被释放。
        free(p);
        p=p->next;
    }

}


struct ST * temp;

while(p != NULL)
{
    temp = p;
    p = p->next;
    free(temp);
}

—>〉Sun〈<—
2008-09-05 00:01
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 9# cosdos 的帖子
谢谢指教。
2008-09-05 00:27
快速回复:一个最简单的工资表
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019143 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved