| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 155 人关注过本帖
标题:请问为什么程序不能执行到scan()??
只看楼主 加入收藏
林康
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2017-10-31
结帖率:14.29%
  问题点数:0  回复次数:1   
请问为什么程序不能执行到scan()??
#include<stdio.h>
#include <stdlib.h>
#include<conio.h>
#include<windows.h>
struct clerk {      /*学生信息结构定义*/

    int id;
    char name[20]; /* 姓名 */
    long jbgz; /* 基本工资 */
    long zwgz; /* 职务工资 */
    long gwjt; /* 岗位津贴 */
    long ylbx; /* 医疗保险 */
    long gjj; /* 公积金 */
    long total;/*总工资*/
}a[100];

int  displayMenu();
void save(int);
int inputData(struct clerk clerks[]);
int scan();
        
int  displayMenu(){
    int myChoice;
    system("cls");
    system("color 2E");
    printf ("\t\t**********************************\n");
    printf("\t\t||        职工信息管理系统      ||\n");
    printf ("\t\t**********************************\n");
    printf("\n");
    printf("\t\t  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    printf("\t\t ||  1.输入记录    2.显示记录  ||\n");   
    printf("\t\t |   3.修改记录    4.查找记录   |\n");
    printf("\t\t |   5.删除记录    6.统计       |\n");
    printf("\t\t ||           7.退出           ||\n");   
    printf("\t\t  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    printf("请选择您需要的操作(1~7):");
    scanf("%d",&myChoice);
    return myChoice;
}        

int inputData(struct clerk clerks[])//输入职工的信息
{

    int i,n;
    system("cls");
    printf("\t\t---------职工信息输入------------\n");
    printf("请输入职工的人数:") ;
    scanf("%d",&n);         /*输入职工的人数*/
    for(i=0;i<n;i++) {
        printf("id号:");
        scanf("%d",&clerks[i].id);
        printf("姓名:");
         
        scanf("%s",clerks[i].name);
        getchar();
        printf("基本工资:");
        scanf("%d",&clerks[i].jbgz);
        printf("职务工资:");
        scanf("%d",&clerks[i].zwgz);
        printf("岗位津贴:");
        scanf("%d",&clerks[i].gwjt);
        printf("医疗保险:");
        scanf("%d",&clerks[i].ylbx);
        printf("公积金:");
        scanf("%d",&clerks[i].gjj);
        printf("\n");
        a[i].total=((a[i].gwjt)+(a[i].zwgz)+(a[i].jbgz)-(a[i].gjj)-(a[i].ylbx));
   
    }   
        save(n);
    }

void save(int n){
    FILE*fp;
    int i;
    if((fp=fopen("clerk_list","wb"))==NULL)//以二进制读,写方式打开文件//
    {
        printf("File open error!\n");
        exit(0);
    }
    for(i=1;i<=n;i++)        /*将内存中输进去的信息存到磁盘中*/
    if(fwrite(&a[i],sizeof(struct clerk),1,fp)!=1)
    printf("File read error!\n");
    fclose(fp);
}
int load()
{
    FILE*fp;
    int i=0;
    if((fp=fopen("clerk_list","rb"))==NULL)
    {
        printf("can not open file\n");
        exit(0);
        }   
    else
    {
        do{
            fread(&a[i],sizeof(struct clerk),1,fp);
            i++;
        }
        while(feof(fp)==0);
    }
    fclose(fp);
    return(i-1);
}


int scan()
{
    int sum=0;
    int n,i;
    n=load();
    system("cls");
    printf("---------显示职工的基本信息------");
    printf("职工号    姓名    基本工资    职务工资    岗位津贴    公积金    总工资\n");
    printf("-------------------------------------------------------------------\n");
    for(i=0;i<n;i++)
    {
        printf("%d %s %d %d %d %d %d",&a[i].id,a[i].name,&a[i].jbgz,&a[i].zwgz,&a[i].gwjt,&a[i].ylbx,&a[i].gjj);
        sum=sum+a[i].total;
    }
    printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~\n");
    printf("\n\n<职工平均工资为:%d >\n",sum/n);
    printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~~\n");
    }


int main(void) {
    int choice;
    struct clerk clerks[100];
    int n1,n2;
    choice=displayMenu();
    while(choice!=0){
        switch(choice){
        case 1:  
            n1=inputData(clerks);
            break;
        case 2:
            n2=scan();
            break;
        }
        choice=displayMenu();
    }
    return choice;
}   
2018-06-13 23:08
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:156
专家分:390
注 册:2011-4-24
  得分:0 
你先看看C教程里的函数讲解吧,你的函数声明有返回值,却定义里没有返回。你的问题跟上一帖问题一样的情况(甚至没改),我就帮你到这了。
2018-06-14 10:19







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

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