分站导航

热点关注

当前位置:

首页 > 专业大全

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

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

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);

}

分享:

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

上一篇:<上一篇

下一篇:

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