C语言编程问题,请大家帮帮忙 15
程序中输入数据是通过键盘的,请把它改成由磁盘文件读入。把测试数据事先用“记事本”编辑成磁盘文件,存好。在程序中,通过键盘给出文件名(DOS路径),程序自动读入数据#inc...
程序中输入数据是通过键盘的,请把它改成由磁盘文件读入。把测试数据事先用“记事本”编辑成磁盘文件,存好。在程序中,通过键盘给出文件名(DOS路径),程序自动读入数据
#include<stdio.h> //预编译命令
#include<string.h> //预编译命令
#define N 10 //预编译命令
struct worker
{ int num[10],wage,avr;
char name[8];
}wor[N];
void input(int num[],char name[N][8],int wage[]) //输入数据的函数
{
int i;
for(i=0;i<N;i++)
{
printf("\n输入职工号:");
scanf("%d",&num[i]);
printf("输入职工姓名:");
getchar();
gets(name[i]);
printf("输入工资:");
scanf("%d",&wage[i]);
}
}
void main()
{
int i,c,num[N],number,wage[N],flag=1,sum=0,avr;
char name[N][8];
FILE *fp;//文件指针
input(num,name,wage);
sort(num,name,wage);
for(i=0;i<N;i++)//求出总工资
sum+=wage[i];
printf("\n该公司共为职员给出的工资为:%d\n",sum);
avr=sum/N;//求平均工资
printf("该公司的平均工资为:%d",avr);
fp=fopen("d:\\stud","w");//指针指向文件stud
if(fwrite(&wor[i],sizeof(struct worker),1,fp)!=1)//数据存入磁盘文件中
printf("file write error\n");
fclose(fp);//关闭文件
} 展开
#include<stdio.h> //预编译命令
#include<string.h> //预编译命令
#define N 10 //预编译命令
struct worker
{ int num[10],wage,avr;
char name[8];
}wor[N];
void input(int num[],char name[N][8],int wage[]) //输入数据的函数
{
int i;
for(i=0;i<N;i++)
{
printf("\n输入职工号:");
scanf("%d",&num[i]);
printf("输入职工姓名:");
getchar();
gets(name[i]);
printf("输入工资:");
scanf("%d",&wage[i]);
}
}
void main()
{
int i,c,num[N],number,wage[N],flag=1,sum=0,avr;
char name[N][8];
FILE *fp;//文件指针
input(num,name,wage);
sort(num,name,wage);
for(i=0;i<N;i++)//求出总工资
sum+=wage[i];
printf("\n该公司共为职员给出的工资为:%d\n",sum);
avr=sum/N;//求平均工资
printf("该公司的平均工资为:%d",avr);
fp=fopen("d:\\stud","w");//指针指向文件stud
if(fwrite(&wor[i],sizeof(struct worker),1,fp)!=1)//数据存入磁盘文件中
printf("file write error\n");
fclose(fp);//关闭文件
} 展开
2个回答
展开全部
有若干错误,我已经给你改正了。你自己对一对
1)worker存储每一个员工的信息,所以应该没有avr。num应该是一个数,不是数组。
2)主函数main中,worker的数据没有记录就存储了。我把它放在了for循环中
3)求avr,应该转换为float
#include<stdio.h> //预编译命令
#include<string.h> //预编译命令
#define N 10 //预编译命令
struct worker {
int num, wage;
char name[8];
}wor[N];
void input(int num[], char name[N][8], int wage[]) {
int i;
for(i=0; i<N; i++) {
printf("\n输入职工号:");
scanf("%d",&num[i]);
printf("输入职工姓名:");
getchar();
gets(name[i]);
printf("输入工资:");
scanf("%d",&wage[i]);
}
}
void main() {
int i, num[N], wage[N], sum=0;
float avr;
char name[N][8];
FILE *fp;//文件指针
input(num,name,wage);
fp = fopen("d:\\stud.txt","w");//指针指向文件stud
for(i=0;i<N;i++) {
sum += wage[i];
wor[i].num = num[i];
strcpy(wor[i].name, name[i]);
// wor[i].name = name[i];
wor[i].wage = wage[i];
if(fwrite(&wor[i],sizeof(struct worker),1,fp)!=1)//数据存入磁盘文件中
printf("file write error\n");
}
printf("\n该公司共为职员给出的工资为:%d\n",sum);
avr = sum / (float)N;//求平均工资
printf("该公司的平均工资为:%f",avr);
fclose(fp);//关闭文件
getch();
}
1)worker存储每一个员工的信息,所以应该没有avr。num应该是一个数,不是数组。
2)主函数main中,worker的数据没有记录就存储了。我把它放在了for循环中
3)求avr,应该转换为float
#include<stdio.h> //预编译命令
#include<string.h> //预编译命令
#define N 10 //预编译命令
struct worker {
int num, wage;
char name[8];
}wor[N];
void input(int num[], char name[N][8], int wage[]) {
int i;
for(i=0; i<N; i++) {
printf("\n输入职工号:");
scanf("%d",&num[i]);
printf("输入职工姓名:");
getchar();
gets(name[i]);
printf("输入工资:");
scanf("%d",&wage[i]);
}
}
void main() {
int i, num[N], wage[N], sum=0;
float avr;
char name[N][8];
FILE *fp;//文件指针
input(num,name,wage);
fp = fopen("d:\\stud.txt","w");//指针指向文件stud
for(i=0;i<N;i++) {
sum += wage[i];
wor[i].num = num[i];
strcpy(wor[i].name, name[i]);
// wor[i].name = name[i];
wor[i].wage = wage[i];
if(fwrite(&wor[i],sizeof(struct worker),1,fp)!=1)//数据存入磁盘文件中
printf("file write error\n");
}
printf("\n该公司共为职员给出的工资为:%d\n",sum);
avr = sum / (float)N;//求平均工资
printf("该公司的平均工资为:%f",avr);
fclose(fp);//关闭文件
getch();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询