c++实验13指针

 

实验内容

  1. 请用户输入5个整数,将其中最小的数字与第一个数对换,最大的数字与最后一个数对换。要求:除主函数外,写三个函数,一个函数负责输入5个数,一个函数负责对换最小的数字与第一个数,一个函数负责对换最大的数与最后一个数,最后将5个数在主函数进行输出。(不能通过数组实现功能,必须使用指针实现功能)

 

到这里居然报

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C4703 使用了可能未初始化的本地指针变量“pointer_1” 实验13指针 c:\users\刘冬冬\source\repos\实验13指针\实验13指针\实验13指针.cpp 51

 

// 实验13指针.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

int a1, a2, a3, a4, a5;
int input()
{	//终于知道怎么定义外部变量了
	extern int a1, a2, a3, a4, a5;		
	cin >> a1 >> a2 >> a3 >> a4 >> a5;
	return 0;
}

void max_swap(int *p1,int *p2)
{
	int temp;
	temp = *p1;
	*p1 = *p2;
	*p2 = temp;

}
int main()
{
	int *pointer_1, *pointer_2;
	input();
	pointer_2 = &a5;
	cout << a1 << a2 << a3 << a4 << a5 << endl;
	if (a1 >= a2 and a1 >= a3 and a1 >= a4 and a1 >= a5)  //if()后面不加分号,记住
	{
		pointer_1 = &a1;
	}
	else if (a2 >= a1 and a2 >= a3 and a2 >= a4 and a2 >= a5)
	{
		pointer_1 = &a2;
	}
	else if (a3 >= a2 and a3 >= a1 and a3 >= a4 and a3 >= a5)
	{
		pointer_1 = &a3;
	}
	else if (a4 >= a1 and a4 >= a2 and a4 >= a3 and a4 >= a5)
	{
		pointer_1 = &a4;
	}
	else if (a5 >= a1 and a5 >= a2 and a5 >= a3 and a5 >= a4)
	{
		pointer_1 = &a5;
	}

	max_swap(pointer_1, pointer_2);					
	cout << *pointer_1 << *pointer_2<<endl;
	cout << a1 << a2 << a3 << a4 << a5;
    return 0;
}

  

 

最后虽然完成了,但是感觉并不是那么完美,总觉得冗余,

// 实验13指针.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

int a1, a2, a3, a4, a5;
int input()
{	//终于知道怎么定义外部变量了
	extern int a1, a2, a3, a4, a5;		
	cin >> a1 >> a2 >> a3 >> a4 >> a5;
	return 0;
}

int max_swap(int *p1,int *p2)	//如果定义int型变量得有return返回值
{								//否则直接定义void就行
	int temp;
	temp = *p1;
	*p1 = *p2;
	*p2 = temp;
	return 0;
}

void min_swap()//然后我觉得没有必要定义调这个函数了,但是要求定义三个,那我就定义一个呗
{
	int *pointer_3 = NULL, *pointer_4 = NULL;		//记住使用变量前要初始化NULL大写
	pointer_3 = &a1;
	if (a1 <= a2 and a1 <= a3 and a1 <= a4 and a1 <= a5)  //if()后面不加分号,记住
	{
		pointer_4 = &a1;
	}
	else if (a2 <= a1 and a2 <= a3 and a2 <= a4 and a2 <= a5)
	{
		pointer_4 = &a2;
	}
	else if (a3 <= a2 and a3 <= a1 and a3 <= a4 and a3 <= a5)
	{
		pointer_4 = &a3;
	}
	else if (a4 <= a1 and a4 <= a2 and a4 <= a3 and a4 <= a5)
	{
		pointer_4 = &a4;
	}
	else if (a5 <= a1 and a5 <= a2 and a5 <= a3 and a5 <= a4)
	{
		pointer_4 = &a5;
	}

	max_swap(pointer_3, pointer_4);
	cout << "调换的是" << *pointer_3 << " " << *pointer_4 << endl;
	cout << "最小值与第一个调换后" << a1 << a2 << a3 << a4 << a5 << endl;
}
int main()
{
	input();
	cout <<"原顺序"<< a1 << a2 << a3 << a4 << a5 << endl;
	int *pointer_1 = NULL, *pointer_2;		//记住使用变量前要初始化
	pointer_2 = &a5;
	if (a1 >= a2 and a1 >= a3 and a1 >= a4 and a1 >= a5)  //if()后面不加分号,记住
	{
		pointer_1 = &a1;
	}
	else if (a2 >= a1 and a2 >= a3 and a2 >= a4 and a2 >= a5)
	{
		pointer_1 = &a2;
	}
	else if (a3 >= a2 and a3 >= a1 and a3 >= a4 and a3 >= a5)
	{
		pointer_1 = &a3;
	}
	else if (a4 >= a1 and a4 >= a2 and a4 >= a3 and a4 >= a5)
	{
		pointer_1 = &a4;
	}
	else if (a5 >= a1 and a5 >= a2 and a5 >= a3 and a5 >= a4)
	{
		pointer_1 = &a5;
	}
	max_swap(pointer_1, pointer_2);					
	cout <<"调换的是"<< *pointer_1 <<" "<< *pointer_2<<endl;
	cout <<"最大值与最后一个调换后"<< a1 << a2 << a3 << a4 << a5<<endl;
	min_swap();
    return 0;
}

  不知到怎么找出最大最小值,感觉这样太笨了

原文链接: https://www.cnblogs.com/ldddbk/p/9133103.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++实验13指针

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/275275

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 上午12:55
下一篇 2023年2月15日 上午12:55

相关推荐