供参考:
/*请在这里填写答案*/
void fun(struct STUDENT s[], struct STUDENT* pmax)
{
int i;
for (i = 0; i < 4; i++)
{
s[i].average = (s[i].compute + s[i].english + s[i].math) / 3.0;
if (i == 0 || (*pmax).average < s[i].average) *pmax = s[i];
}
return;
}
题目要求将平均分最高的学生信息存入pmax里,不是存入s[0]里
你交换的时候为什么要去交换s[0],直接将s[i]赋值给pmax就好了呀
你的程序将第一个元素和最大值的元素交换,可是题目并没有让你这么做啊
void fun(struct STUDENT s[], struct STUDENT *pmax)
{
int m = 0;
for (int i = 1; i < 4; i++)
if ((s[i].computer + s[i].english + s[i].math) > (s[m].computer + s[m].english + s[m].math)) m = i;
pmax->num = s[m].num;
pmax->name = s[m].name;
pmax->english = s[m].english;
pmax->computer = s[m].computer;
pmax->math = s[m].math;
pmax->average = (s[m].english + s[m].computer + s[m].math) / 3.0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:
注:本章只了解单链表
1️⃣ 单向或者双向
2️⃣ 带头或者不带头
3️⃣ 循环或者非循环
🎗虽然有这么多的链表结构,但是实际中最常用的只有两种结构
1️⃣ 无头单向非循环链表
2️⃣ 带头双向循环链表
⚠ 注意:
▶ 无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多。
▶ 带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了,后面我们代码实现了就知道了。
指针函数是指返回值为指针类型的函数。它的特点是返回值类型是指针,可以指向一个变量或者函数。指针函数的用途主要有两个:一是可以返回一个指针,方便函数之间传递数据;二是可以通过指针函数修改指向变量的值,实现在函数中对变量的修改。
声明和定义指针函数的语法如下:
返回值类型 (*函数名)(参数列表);
示例代码:
int* sum(int a, int b) {
int* result = new int;
*result = a + b;
return result;
}
上面的示例代码中,sum
函数是一个指针函数,返回值类型为 int*
,参数列表为 (int a, int b)
。
使用指针函数的关键是理解指针的概念和用法。在函数中使用指针函数时,可以通过以下步骤实现:
示例代码:
int* sum(int a, int b) {
int* result = new int;
*result = a + b;
return result;
}
void printSum(int (*sumPtr)(int, int), int a, int b) {
int* result = sumPtr(a, b);
cout << *result << endl;
delete result; // 释放内存
}
int main() {
printSum(sum, 5, 7);
return 0;
}
上面的示例代码中,printSum
函数接受一个指针函数 sumPtr
和两个整数参数 a
和 b
,然后调用 sumPtr
函数来计算 a
和 b
的和,并打印结果。
如果要在函数中修改指针函数指向的变量的值,可以通过以下步骤实现:
示例代码:
void increment(int* numPtr) {
(*numPtr)++;
}
int main() {
int num = 5;
int* numPtr = #
increment(numPtr);
cout << *numPtr << endl;
return 0;
}
上面的示例代码中,increment
函数接受一个 int 类型的指针变量 numPtr
,然后通过修改 numPtr
指向的变量的值实现对 num
变量的修改。
以下是一个示例代码,演示了如何在函数中使用指针函数:
#include <iostream>
int* sum(int a, int b) {
int* result = new int;
*result = a + b;
return result;
}
void printSum(int (*sumPtr)(int, int), int a, int b) {
int* result = sumPtr(a, b);
std::cout << *result << std::endl;
delete result; // 释放内存
}
int main() {
printSum(sum, 5, 7);
return 0;
}
上面的示例代码中,sum
函数是一个指针函数,返回两个整数的和;printSum
函数接受一个指针函数 sumPtr
和两个整数参数 a
和 b
,然后调用 sumPtr
函数来计算 a
和 b
的和,并打印结果。