| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 696 人关注过本帖
标题:C程序有个小问题请教哥哥们
只看楼主 加入收藏
xiaoyuewuhen
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-6-18
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:8 
C程序有个小问题请教哥哥们
职员工资统计(1)用结构指针数组设计一个公司职员的数据结构,包括年龄,姓名,工资三项。并定义一结构数组。(2) 编写怀函数实现对结构数据的值进行输入。(3) 编写一函数实现求全体职工及某一年龄段职工的工资求和。(4) 编写一函数实现求平均工资。(5) 进行菜单设计。
搜索更多相关主题的帖子: 平均工资 年龄段 哥哥 统计 
2013-06-18 16:50
夜长风
Rank: 2
等 级:论坛游民
帖 子:46
专家分:37
注 册:2013-6-12
收藏
得分:0 
这个跟刚才那个医院挂号问题好像差不多吧,完全看不懂
2013-06-18 17:00
xiaoyuewuhen
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-6-18
收藏
得分:0 
回复 2楼 夜长风
长风有没有什么建议呀

[ 本帖最后由 xiaoyuewuhen 于 2013-6-18 18:11 编辑 ]
2013-06-18 17:03
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
这个作业量有点大   一般人都不愿意做滴...   你得给个代码雏形啊

三十年河东,三十年河西,莫欺少年穷!
2013-06-18 21:59
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:0 
呵呵,最近都到了课设的时段,这种帖子也多了起来。

其实就是很简单的只是拼凑在一起就好了,要说复杂就是大量的代码摞在一块看起来烦点而已,真正的技术点就那么几个。

而且,如果不是闲的蛋疼或者对写代码有特殊的嗜好,没人会给你写出你想要的代码的。

你去网上找这种代码的话,要不就是不适合,要不就是适合但又错误。

所以呢,还是自己构思吧,等你明确问题是什么了再来论坛问。

Edsger Dijkstra:算法+数据结构=程序
2013-06-19 10:20
xiaoyuewuhen
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-6-18
收藏
得分:0 
回复 5楼 雪狼MJ
谢谢····
2013-06-20 17:19
夜长风
Rank: 2
等 级:论坛游民
帖 子:46
专家分:37
注 册:2013-6-12
收藏
得分:10 
#include <stdio.h>
#include <stdlib.h>

#define EMP_NUM 10

typedef struct employee {
    int age;
    char name[20];
    unsigned salary;
}*PEMP;  

typedef enum sel_analy{
    TOTAL,  
        AVERAGE
}sel_c;

void update_msg(PEMP company[]);
void display_msg(PEMP company[]);
void salary_analysis(PEMP company[], sel_c which);


int main(int argc, char *argv[])
{
    int i = 0;
    PEMP company[EMP_NUM];
    char select;
    sel_c which;
    memset(company, NULL, sizeof(company));
   
   
    do
    {
        printf("    <-----工资统计系统------->/n");
        printf("1:更新职工信息        2:工资求和/n");
        printf("3:工资求平均值        4:显示职工信息/n");
        printf("0:退出/n");
        
        select = getch();
        switch(select){
        case '1':
            update_msg(company);
            break;
        case '2':
            salary_analysis(company, TOTAL);
            break;
        case '3':
            salary_analysis(company, AVERAGE);
            break;
        case '4':
            display_msg(company);  
            break;
        default:
            break;
        };
        
    }while(select != '0');   
   
    return 0;
}

void update_msg(PEMP company[])
{
    int sel = 0;
    int id;
   
    while(1){
        
        PEMP new_emp = (PEMP)malloc(sizeof(*new_emp));
        
        printf("请输入员工信息,当需要退出输入时设ID为-1:/n");
        printf("ID:");
        scanf("%d", &id);
        
        while((id<-1) || (id>EMP_NUM-1)){
            printf("输入信息错误,输入的ID范围应为0到%d之间的数:/n", EMP_NUM-1);
            printf("ID:");
            scanf("%d", &id);
        }
        
        if(id == -1){
            free(new_emp);
            return;  
        }
        
        
        printf("姓名:");
        scanf("%s", new_emp->name);
        
        printf("年龄:");
        scanf("%d", &new_emp->age);
        
        while((new_emp->age<0) || (new_emp->age>60)){
            printf("输入信息错误,输入的年龄范围应为0到60之间的数:/n");
            printf("年龄:");
            scanf("%d", &new_emp->age);
        }
        
        printf("薪水:");
        scanf("%d", &new_emp->salary);
        
        while((new_emp->age<0) || (new_emp->age>20000)){
            printf("输入信息错误,输入的薪水范围应为0到20000之间的数:/n");
            printf("薪水:");
            scanf("%d", &new_emp->salary);
        }
        
        company[id] = new_emp;
    }
   
}
void salary_analysis(PEMP company[], sel_c which)
{
    char sel=0;
    int age1, age2;
    int low_age, high_age, i, j=0;
   
    unsigned long sum = 0;
   
    while(1){
        if(which == TOTAL)
            printf("1:计算某一年龄段员工的薪水总和    2:计算全部员工薪水总和/n");
        else
            printf("1:计算某一年龄段员工的薪水平均值   2:计算全部员工薪水平均值/n");
        
        printf("0:返回上一层/n");
        sel = getch();
        if((sel != '0') && (sel != '1') && (sel != '2')){
            printf("输入错误,请重新输入:/n");
            continue;
        }
        
        if(sel == '0')
            return;
        
        if(sel == '1'){
            printf("开始年龄:");
            scanf("%d", &age1);
            while(age1<0 || age1>60){
                printf("输入错误,请重新输入/n");
                printf("开始年龄:");
                scanf("%d", &age1);
            }
            
            printf("结束年龄:");
            scanf("%d", &age2);  
            while(age2<0 || age2>60){
                printf("输入错误,请重新输入/n");
                printf("结束年龄:");
                scanf("%d", &age2);
            }
            
            if(age1>age2){
                low_age = age2;
                high_age = age1;
            }
            else{
                low_age = age1;
                high_age = age2;
            }
            
            for(i=0; i<EMP_NUM; i++){
                if(company[i])
                    if((company[i]->age>=low_age) && (high_age>=company[i]->age)){
                        sum += company[i]->salary;  
                        j++;
                    }
            }
            if(sum != 0)
                if(which == TOTAL)
                    printf("从%d到%d年龄段的员工薪水总和为%ld/n", low_age, high_age, sum);
                else
                    printf("从%d到%d年龄段的员工薪水平均值为%ld/n", low_age, high_age, (sum/j));
                else
                    printf("没有该年龄段的员工!/n");  
                return ;
               
        }
        
        if(sel == '2'){
            for(i=0; i<EMP_NUM; i++){
                if(company[i]){
                    sum += company[i]->salary;
                    j++;
                }
               
            }
            if(sum != 0)
                if(which == TOTAL)
                    printf("所有员工薪水总和为%ld/n", sum);
                else
                    printf("所有员工薪水平均值为%ld/n", sum/j);
                else
                    printf("没有员工信息!/n");
                return;
        }
    }
}


void display_msg(PEMP company[])
{
    int i;
   
    for(i=0; i<EMP_NUM; i++)
    {
        if(company[i])
            printf("ID:%d       姓名:%s       年龄:%d   薪水:%d/n", i, company[i]->name,/
            company[i]->age, company[i]->salary );
    }
   
}
2013-06-20 17:35
夜长风
Rank: 2
等 级:论坛游民
帖 子:46
专家分:37
注 册:2013-6-12
收藏
得分:0 
有点错误
2013-06-20 17:37
xiaoyuewuhen
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-6-18
收藏
得分:0 
回复 8楼 夜长风
谢谢师兄哦~以后得自己写了~有问题还得向你请教呢
2013-06-20 23:12
快速回复:C程序有个小问题请教哥哥们
数据加载中...
 
   



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

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