//25. 从键盘输入3个整数,要求设3个指针变量p1,p2,p3,使p1指向3个数中的最大者,
//p2指向次打大者,p3指向最小者,然后按由大到小的顺序输出这3个数。
#include<stdio.h>
void compare(int * p1,int *p2,int * p3)
{
int t;
if(*p1<*p2)
{
t=*p1;
*p1=*p2;
*p2=t;
}
if(*p1<*p3)
{
t=*p1;
*p1=*p3;
*p3=t;
}
if(*p2<*p3)
{
t=*p2;
*p2=*p3;
*p3=t;
}
}
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
compare(&a,&b,&c);
printf("%d,%d,%d\n",a,b,c);
return 0;
}
//26、有一个数列,含20个整数,现要求编写一个函数,能够对指定位置开始的
//几个数按相反顺序重新排列,并在main函数中输出新的数列。例如,原数列为
//1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
//若要求对第5个数开始的10个数进行逆序处理,则得到新的数列为
//1,2,3,4,14,13,12,11,10,9,8,7,6,5,15,16,17,18,19,20
/*#include<stdio.h>
void change(int * p,int a,int b)
{
int i,j,t;
for(i=a-1,j=2;i<=(a+b+1)/2;i++,j++)
{t=*(p+i);
*(p+i)=*(p+a+b-j);
*(p+a+b-j)=t;
}
}
int main()
{
int a[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
int i;
for(i=0;i<20;i++)
printf("%d ",a[i]);
printf("\n");
change(a,5,10);
for(i=0;i<20;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
*/
#include<stdio.h>
void resort(int array[],int where,int amount)
{
int *p1,*p2,temp;
p1=&array[where-1];
p2=&array[where-2+amount];
for(;p1<&array[where-1]+amount/2;p1++,p2--)
{
temp=*p1;
*p1=*p2;
*p2=temp;
}
}
int main()
{
int number[20],where,amount,i;
printf("input 20 number \n");
for(i=0;i<20;i++)
scanf("%d",&number[i]);
printf("\n");
printf("how many number do you want to sort:");
scanf("%d",&amount);
printf("\nwhere do you want to start:");
scanf("%d",&where);
printf("\n");
printf("old array as follow:\n");
for(i=0;i<20;i++)
printf("%d,",number[i]);
printf("\n");
resort(number,where,amount);
printf("\nresorted array as follow:\n");
for(i=0;i<20;i++)
printf("%d,",number[i]);
printf("\n");
return 0;
}
转载于:https://blog.51cto.com/pengge666/1892142