4.30

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");
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值