程序:
#include
#include
struct employ{
char name[10];
int salry;
};
int main()
{
int i,j,k,number;
printf("输入职工总人数:");
scanf("%d",&number);
struct employ *(person[number]),*tmp=NULL;
for(i=0;i {
person[i] = (struct employ *) malloc(sizeof(struct employ));
printf("输入第%d个职工的姓名和工资:",i+1);
scanf("%s %d",&(person[i])->name,&(person[i])->salry);
printf("%s的工资是:%d\n",(person[i])->name,(person[i])->salry);
}
for(i=0;i {
for(j=i+1;j {
if((person[i])->salry < (person[j])->salry)
{
tmp = person[i];
person[i] = person[j];
person[j] = tmp;
}
}
}
for(i=0;i {
printf("%s的工资是:%d\n",(person[i])->name,(person[i])->salry);
k += (person[i])->salry;
}
k = k/float(number);
printf("最高工资为:%d\n",(person[0])->salry);
printf("最低工资为:%d\n",(person[number-1])->salry);
printf("平均工资为:%d\n",k);
大一刚接触c语言?首先你使用了k+=这样的操作,但是你又没有初始化k,而k是否为0在某种程度上取决于编译器是否设置了自动为其初始化,所以,
建议你为自己写的变量初始化一个值,这里就是0了
呃 这个东西不可能是在你的只是范围外写出来的
#include
struct employ{
char name[10];
int salry;
};
int main()
{
int i,j,k,number;
printf("输入职工总人数:");
scanf("%d",&number);
struct employ *(person[number]),*tmp=NULL;
for(i=0;i < number; i++){
person[i] = (struct employ *) malloc(sizeof(struct employ));
printf("输入第%d个职工的姓名和工资:",i+1);
scanf("%s %d",&(person[i])->name,&(person[i])->salry);
printf("%s的工资是:%d\n",(person[i])->name,(person[i])->salry);
}
k = 0;
for(i=0;i < number; i++) {
printf("%s的工资是:%d\n",(person[i])->name,(person[i])->salry);
k += (person[i])->salry;
}
printf("k:%d\n",k);
k = k/(float)number;
printf("最高工资为:%d\n",(person[0])->salry);
printf("最低工资为:%d\n",(person[number-1])->salry);
printf("平均工资为:%d\n",k);
试试看吧,应该没有问题,
gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
/3是整除
/3.0是一般除法
因为进制转换误差的原因,整除可能会丢失1
int i,j,k,number;你应该在除数为浮点类型
修改k = k/float(number);
为,k = k/(float)number;
整形和浮点数之间有区别