c++题目之指针初探

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

运行效果
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值