指针练习03-15-01
//输入a和b两个整数,按先大后小的顺序输出a和b。
方法一:(借用指针输出对应的最大值和最小值)
#include<stdio.h>
int main()
{
int a,b;
printf("Input two integer numbers:\n");
scanf("%d%d",&a,&b);
int *pointer_a,*pointer_b,*pointer;
pointer_a=&a,pointer_b=&b;
if(a<b){
pointer=pointer_a;
pointer_a=pointer_b;
pointer_b=pointer;
}
printf("The original numbers: %d and %d\n",a,b);
printf("The max = %d; the min = %d;",*pointer_a,*pointer_b);
return 0;
}
方法二(调用swap函数来实现最大值和最小值的输出)
#include<stdio.h>
int main()
{
int a,b;
printf("Input two integer numbers:\n");
scanf("%d%d",&a,&b);
int *pointer_a=&a,*pointer_b=&b;
void swap(int* p,int* q);
printf("a = %d and b = %d\n",a,b);
if(a<b)
swap(pointer_a,pointer_b);
printf("max = %d and min = %d",a,b);
return 0;
}
void swap(int *p,int *q)
{
int temp;
temp=*p;
*p=*q;
*q=temp;
}
练习汉诺塔问题的代码:
#include<stdio.h>
int main()
{
void hanoi(int n,char one,char two, char three);
int n;
printf("Input the number of discs:\n");
scanf("%d",&n);
printf("The steps:\n");
hanoi(n,'A','B','C');
return 0;
}
void hanoi(int n,char one, char two, char three)
{
void move(char x,char y);
if(n==1){
move(one,three);
}else{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}
void move(char x,char y)
{
printf("%c --> %c\n",x,y);
}