分站导航

热点关注

当前位置:

首页 > 专业大全

2012年自考“高级语言程序设计”经典习题及答案(28)

来源:本站整理 时间:2020-02-13 15:55:06

printf( \nname:%s total=%f ,p - name,p - k1+p - k2);

printf( \nname:%s total=%f ,a[l].name, a[1].k1+a[l].k2);

}

解 结构数组a 有两个元素,每个元素有三个成分:10个元素的字符数组和两个类型为float的成分k1、k2.结构指针变量p指向结构数组a的首元素。其中初始化使a的两个元素分别有值如下:

a[0].name= zhang ,a[0].k1= 100.0,a[0].k2=70.0,

a[1].name= wang ,

a[l].k1=70.0, a[1].k2 =80.0.所以程序运行后输出:

name:zhang total = 170.000000

name: wang total= 150.000000

3.阅读下列程序,写出程序的运行结果。

main ( )

{ enum em { em1=3, em2=l, em3 };

char * aa[] = { AA , BB , CC , DD } ;

printf( %s%s%s\n ,aa[em1],aa[em2], aa[em3] );

}

解 由枚举类型测的定义知,枚举类型常量em1的值是3,枚举类型常量em2的值是1,枚举类型常量em3的值是2.所以程序运行后输出:

DD BB CC

7.4 程序设计题

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( 输入%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);

}

分享:

qq好友分享 QQ空间分享 新浪微博分享 微信分享 更多分享方式

上一篇:<上一篇

下一篇:

(c)2024 www.diying.com All Rights Reserved SiteMap 联系我们 | 豫ICP备2022007582号