c++实验13指针
实验内容
- 请用户输入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;
}
不知到怎么找出最大最小值,感觉这样太笨了

浙公网安备 33010602011771号