2.編一個(gè)程序,輸入15個(gè)整數(shù)存入一維數(shù)組,再按逆序重新存放后再輸出。
「解」輸入數(shù)組的元素,并重新顛倒存放后輸出。將存儲(chǔ)于數(shù)組中的元素顛倒存儲(chǔ),只要首尾相對應(yīng)的元素兩兩交換即可。若用指針實(shí)現(xiàn),可讓一個(gè)指針p指向前端的元素,另一個(gè)指針q指向與前端元素對應(yīng)的后端的元素。循環(huán)前,讓p指向數(shù)組的首元素,讓q指向數(shù)組的末元素。循環(huán)時(shí),讓p和q所指兩個(gè)元素交換,并讓p增1,q減l.循環(huán)條件是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.輸入一個(gè)字符串,按相反的次序輸出其中的全部字符。
「解」要相反的次序輸出字符串的全部字符,可用一個(gè)字符指針變量,從指向字符串的本字符開始,逆序遍歷字符串,輸出指針?biāo)缸址纯?。但為了讓字符指針指向字符串的末字?,若不用字符串處理庫函數(shù),得用一個(gè)循環(huán),讓它從字符串的首字符開始,順序移至字符串的結(jié)束標(biāo)記符,然后倒退一個(gè)字符,就能讓它指向字符串的末字符。程序如下:
# 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.輸入一個(gè)一維實(shí)型數(shù)組,輸出其中的最大值、最小值和平均值。
「解」設(shè)實(shí)型數(shù)組的元素個(gè)數(shù)n不超過20.程序輸入n,并用循環(huán)輸入數(shù)組的元素,再用循環(huán)遍歷數(shù)組,求出數(shù)組的最大值和最小值、數(shù)組元素的和。然后求出數(shù)組元素的平均值,最后輸出結(jié)果。程序如下:
# 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個(gè)實(shí)數(shù)\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);
}