文档库 最新最全的文档下载
当前位置:文档库 › 第八章结构体课后题答案

第八章结构体课后题答案

程序设计题

1.用结构体存放下表中的数据,然后输出每人的姓名和实发工资( 基本工资+浮动工资-支出)。

姓名 基本工资(元) 浮动工资(元) 支出(元)

Li 220.00 300.00 90.00

Xia 370.00 180.00 60.00

Wang 620.00 0.00 70.00

「解」程序定义struct person结构类型,包含人的姓名(<20个字符)、基本工资、浮动工资和支出,用这个struct person结构类型定义数组。程序首先输入人数n(<100),再输入n人的信息,最后输出各人的姓名和实发金额。程序如下:

# include

# include

# define N 100

struct person {

char name[20] ;

float base;

float ds;

float pay;

} person[N], *p;

void main ()

{ int n;

float d;

char buf[120];

printf(“输入n(<%d)! \n”,N);

do {

scanf(“%d”, &n);

if(n>0 && n
printf(“输入n不合理! 请重新输入! \n” );

} while(1);

printf(“输入%d个人的姓名、基本工资、浮动工资和支出 \n”, n);

for( p=person; p
scanf(“%s”, buf); strncpy( p -> name, buf, 19);

scanf(“%f”, &d); p -> base=d;

scanf(“%f”,&d); p -> ds=d;

scanf(“%f”, &d ); p -> pay= d;

}

for(p = person; p< person+n; p++)

printf(“%s %.2f\n”,p-> name,P->base+p->ds-P -> pay);

}

2.编一个程序,输入10个职工的编号、姓名、基本工资、职务工资,求出其中“基本工资十职务工资”最少的职工姓名并输出。
「解」类似上一程序,直接给出程序如下:

# include

# define N 10

struct person {

char no[10];

char name[20];

float base1;

float base2;

} person[N], *p, *minp;

void main ()

{ float d;

char buf[120];

printf(“输入%d个人的编号、姓名、基本工资、职务工资 \n”, N);

for(p=person; p
scanf(“%s”, buf); strncpy(p -> no,buf,9);

scanf(“%s”, buf); strncpy( p -> name, buf, 19);

scanf(“%f”, &d);p -> base1 =d;

scanf(“%f”,&d);p -> base2=d;

}

for(minp=p=person; p
if (p -> basel+p -> base2< minp -> basel+ minp -> base2) minp =p;

printf(“基本工资与职务工资和最少的职工是%s \n”,minp -> name);

printf(“他的基本工资与职务工资和是%.2f \n

”,minp -> basel+ minp -> base2);

}

3.编一个程序,输入10个学生的学号、姓名、3门课程的成绩,求出总分最高的学生姓名并输出。
「解」类似上一程序,直接给出程序如下:
# include
# include
# define N 10
struct stu {
char no[10];
char name[20];
int score[3];
} students[N],*p, *maxp;
void main()
{ char buf[120]; int maxs;
printf(“输入%d个学生的编号、姓名、三门课程成绩 \n”, N);
for(p= students;p< students+N;p++) {
scanf(“%s”, buf); strncpy(p -> no, buf, 9);
scanf(“%s”, buf); strncpy( p -> name, buf,19);
scanf(“%d%d%d”,&p -> score[O], &p -> score[1], &p -> score[2]);
}
for(maxp= p =students, maxs=-1; p< students+N; p++)
if( p -> score[0] + p -> score[1]+p -> score[2]> maxs) {
maxp=p;maxs=p ->score[0]+p -> score[1]+p ->score[2];
}
printf(“最高总分的学生是%s他的总分是 %d \n”, maxp -> name, maxs);
}

相关文档
相关文档 最新文档