实验内容
- 请用户输入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】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/275275
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!