1.输入三个整数,按由小到大顺序输出
#include <stdio.h>
int main(void)
{
void swap(int *,int *);
int a,b,c,*pa=&a,*pb=&b,*pc=&c,temp;
printf("input 3 numbers:");
scanf("%d%d%d",pa,pb,pc);
if(a>b) swap(pa,pb);
if(a>c) swap(pa,pc);
if(b>c) swap(pb,pc);
printf("Now,the order is:%2d%2d%2d\n",a,b,c);
return 0;
}
void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
2.输入三个字符串,按照由小到大的顺序输出
gets();是以回车符作为接受输入结束的标志
#include <stdio.h>
#include <string.h>
int main(void)
{
void swap(char *,char *);
char str1[20],str2[20],str3[20];
printf("input the line:\n");
gets(str1);
gets(str2);
gets(str3);
if(strcmp(str1,str2)>0) swap(str1,str2);
if(strcmp(str1,str3)>0) swap(str1,str3);
if(strcmp(str2,str3)>0) swap(str3,str3);
printf("Now,the order is:%s %s %s \n",str1,str2,str3);
return 0;
}
void swap(char *p1,char *p2)
{
char temp[20];
strcpy(temp,p1);
strcpy(p1,p2);
strcpy(p2,temp);
}
3.输入十个整数,将其中最小的数和第一个数交换,最大的和最后一个数交换,输出这十个数。
#include <stdio.h>
int main(void)
{
void input_Num(int *p,int n);
void handle(int *p,int n);
void print(int *p,int n);
int a[10];
input_Num(a,4);
handle(a,4);
print(a,4);
return 0;
}
void input_Num(int *p,int n)
{
printf("input %d numbers:",n);
for(int i=0;i<n;i++)
scanf("%d",p+i);
}
void handle(int *p,int n)
{
int *p_min,*p_max,*pointer,temp;
p_min=p_max=p;
for(pointer=p+1;pointer<p+n;pointer++)
if(*pointer<*p_min)
p_min=pointer;
else
if(*pointer>*p_max)
p_max=pointer;
temp=*p_min;
*p_min=*p;
*p=temp;
if(p_max==p)
p_max=p_min;
temp=*p_max;
*p_max=*(p+n-1);
*(p+n-1)=temp;
}
void print(int *p,int n)
{
printf("The order is:\n");
for(int i=0;i<n;i++)
printf("%d ",*(p+i));
printf("\n");
}