不好意思,又来提问了!
下面这段程序我主要实现的目的是:用指针法从数组中挑出最大值和最小值并且用最大值和数组第一个调换位置,把最小值和最后一个调换位置,写了一半,不会了,谢谢大家的帮忙!
#define N 10
main()
{
int a[N],i,max,min,*p;
printf("\n Input 10 datas:");
for (i=0;i<N;i++){
scanf("%d",&a[i]);
}
p=a;
max=min=*p;
for(i=0;i<N;i++){
if(max<*p){max=*p;}
if(min>*p){min=*p;}
p++;
}
printf("\n max=%d, min=%d",max,min);
getch();
}
[解决办法]
#define N 10 main() { int a[N], i, *max, *min, *p; printf("Input 10 datas:"); for (i = 0; i < N; i++) { scanf("%d", &a[i]); } p = a; max = min = p; for(i = 0; i < N; i++) { if(*max < *p)// 记录较大值的地址 { max = p; } if(*min > *p) { min = p; } p++; } printf("\n max=%d, min=%d\n", *max, *min); // 交换最大值和第一个元素 i = *max; *max = a[0]; a[0] = i; // 交换最小值和最后一个元素 i = *min; *min = a[9]; a[9] = i; for (i = 0; i < 10; i ++) { printf("%d ", a[i]); }}
[解决办法]
帮你顶一顶吧,问题都解决了 呵呵
[解决办法]
#include<stdio.h>
#include<string.h>
#define N 10
void main(){
int s[N],*max=s[0],*min=s[0],*p=UNLL;
printf("input 10 numbers:\n");
for(int i=0;i<N;++i)
scanf("%d",&s[i]);
for(int i=1;i<N;++i)
if(*max<s[i]) max=&s[i];
*p=s[0];s[0]=*max;s[i]=*p;
for(int i=1;i<N;++i)
if(*min>s[i]) min=&s[i];
*p=s[N-1];s[N-1]=*min;s[i]=*p;
for(int i=0;i<N;++i)
printf("%d",s[i]);
getch();
}