齐乐娱乐在线 > 复习指导 > 自考“高级语言程序设计”经典习题及答案(28)
2014
10-15

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

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

 2.阅读下列程序,写出程序的运行结果。  main ()  { struct student  { char name[10];  float k1;  float k2;  } a[2]={ {“zhang”, 100,70} ,{“wang”,70,80 } },* p=a;  int i;  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);  }
最后编辑:
作者:重庆自考