您的位置:自考365 > 复习指导 > 笔记串讲 > 工学 > 自考“高级语言程序设计”习题答案详解(30)

自考“高级语言程序设计”习题答案详解(30)

2007-09-04 09:57   【 】【我要纠错

  2.编一个程序,输入15个整数存入一维数组,再按逆序重新存放后再输出。

  「解」输入数组的元素,并重新颠倒存放后输出。将存储于数组中的元素颠倒存储,只要首尾相对应的元素两两交换即可。若用指针实现,可让一个指针p指向前端的元素,另一个指针q指向与前端元素对应的后端的元素。循环前,让p指向数组的首元素,让q指向数组的末元素。循环时,让p和q所指两个元素交换,并让p增1,q减l.循环条件是p所指元素在前,q所指元素在后,即p<q.程序如下:

  # include

  main()

  { int a[15],*p,*q, temp;

  printf(“Enter 15 numbers.\n”);

  for(p=a;p<a+15;p++)

  scanf(“%d”, p);

  for(p=a,q=a+14;p<q;P++,q——) {

  temp=*p; *p=*q;*q=temp;

  }

  for(p=a;p<A+15;P++)

  printf(“%d\t”,*p);

  printf(“\n”);

  }

  3.输入一个字符串,按相反的次序输出其中的全部字符。

  「解」要相反的次序输出字符串的全部字符,可用一个字符指针变量,从指向字符串的本字符开始,逆序遍历字符串,输出指针所指字符即可。但为了让字符指针指向字符串的末字符,若不用字符串处理库函数,得用一个循环,让它从字符串的首字符开始,顺序移至字符串的结束标记符,然后倒退一个字符,就能让它指向字符串的末字符。程序如下:

  # include

  # define N 200

  main()

  { char s[N],*p;

  printf(“Enter a string.\n”);

  scanf(“%s”, s);

  for(p=s;*p; p++);

  for(p——; p>=s; p——)

  printf(“%c”,*p);

  printf(“\n”);

  }

  4.输入一个一维实型数组,输出其中的最大值、最小值和平均值。

  「解」设实型数组的元素个数n不超过20.程序输入n,并用循环输入数组的元素,再用循环遍历数组,求出数组的最大值和最小值、数组元素的和。然后求出数组元素的平均值,最后输出结果。程序如下:

  # include

  # define N 20

  main()

  { double a[N],max,min,ave,*p, t;

  int n;

  printf(“Enter n(0<n<20)。\n”);

  do{

  scanf(“%d”,&n);

  if(n>0 && n<20) break;

  printf(“n值不合要求,请重新输入!\n”);

  } while(l);

  printf(“输入%d个实数\n”, n);

  for(n=a;n<A+N; P++){

  scanf(“%lf”,&t);*p=t;

  }

  max=min=ave=*a;

  for(p=p+l;p<A+N; P++){

  if(max<*p) max=*p;

  if(min>*p) min=*p;

  ave+=*p;

  }

  ave/=n;

  printf(“最大值:%f\t最小值:%f\t平均值:%f\n”,max,min,ave);

  }

本文转载链接:自考“高级语言程序设计”习题答案详解(30)

分享到:
  • 站内搜索
  • 课程搜索
  • 试题搜索

热门搜索:教材 报名 查分 免考 考试计划