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