1.输入3个
整数,按由小到大的顺序输出。(要求使用指针)
#include <iostream>
using namespace std;
void swap(int *p1,int *p2);
int main()
{
int n1,n2,n3;
int *p1,*p2,*p3;
cout << "输入三个数:" ;
cin >> n1 >> n2 >> n3;
p1=&n1;
p2=&n2;
p3=&n3;
if(n1>n2)
swap(p1,p2);
if(n1>n3)
swap(p1,p3);
if(n2>n3)
swap(p2,p3);
cout << "结果是:" << n1 << n2 << n3 << endl;
return 0;
}
void swap(int *p1,int *p2)
{int p;
p=*p1; *p1=*p2; *p2=p;
}
运行效果
2.输入3个字符串,按由小到大的顺序输出。(要求使用指针)
/*设计思路是,用字符串处理函数strcmp比较输入的字符串,
根据返回值判断是否需要交换*/
//交换函数的设计是用二级指针,用指针指向字符数组,再用指针的指针实现交换
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;
void swap(char** a,char** b)//输入的参数是二级指针(指针的地址)
{
char* temp;//对指针(内容的地址)进行改变
temp= *a;//改变一件事,要传入它的地址,改变地址,就要传入地址的地址
*a= *b;//地址和指针temp等同
*b=temp;
}
int main()
{
char a[50],b[50],c[50];
scanf("%s%s%s",a,b,c);//为什么不用空格 ?
char *p1=a,*p2=b,*p3=c;
if(strcmp(p1,p2)>0) swap(&p1,&p2);// 要交换地址p1,所以swap中的参数是p1的地址
if(strcmp(p1,p3)>0) swap(&p1,&p3);//为什么strcmp中不是*p1,p1可以表示字符串吗??字符数组本来就是第一个字符的地址,p1=a
if(strcmp(p2,p3)>0) swap(&p2,&p3);
cout << p1 <<' '<< p2 <<' '<< p3 <<endl;
return 0;
}
运行效果
3.通过键盘输入一个字符,判断字符的种类(数字、大写字母、小写字母还是其他字符。(要求使用指针)
#include <iostream>
using namespace std;
int main ()
{
char a;
char *p = &a;
cin >> a;
if(65<=*p&&*p<=89)
{
cout << "是大写字母" << endl;
}
else if(97<=*p&&*p<=121)
{
cout << "是小写字母" << endl;
}
else if(48<=*p&&*p<=57)
{
cout << "是数字" << endl;
}
else
cout << "是其他字符" << endl;
return 0;
}
运行效果