自定义函数 int getMaxH(Seqlist *lp, int sex),求性别为sex(0为男生,1为女生)中身高最高的学生下标;
时间: 2023-04-07 12:03:15 浏览: 65
这是一个可以回答的问题。以下是可能的回答:
可以使用以下代码来实现:
int getMaxH(Seqlist *lp, int sex) {
int max_index = -1;
int max_height = -1;
for (int i = 0; i < lp->length; i++) {
if (lp->data[i].sex == sex && lp->data[i].height > max_height) {
max_index = i;
max_height = lp->data[i].height;
}
}
return max_index;
}
其中,Seqlist 是一个结构体,包含了学生的信息,如性别和身高。lp 是一个指向 Seqlist 的指针,指向学生信息的数组。函数会遍历数组,找到性别为 sex 的学生中身高最高的学生,并返回其下标。
相关问题
用C语言来写自定义函数 int getMaxH(Seqlist *lp, int sex),求性别为sex(0为男生,1为女生)中身高最高的学生下标;
我可以回答这个问题。以下是用C语言编写的自定义函数 int getMaxH(Seqlist *lp, int sex):
int getMaxH(Seqlist *lp, int sex) {
int maxIndex = -1;
int maxHeight = -1;
for (int i = 0; i < lp->length; i++) {
if (lp->data[i].sex == sex && lp->data[i].height > maxHeight) {
maxHeight = lp->data[i].height;
maxIndex = i;
}
}
return maxIndex;
}
该函数接受一个指向Seqlist结构体的指针和一个性别参数,返回该性别中身高最高的学生的下标。
1、已知顺序表数据类型定义为: #define MAX 100 typedef struct{ int data[MAX]; int last; /*顺序表长度*/ }SeqList; (1)设计一个函数float avgList(SeqList *lp),统计lp指向的顺序表中元素的平均值并返回。 (2)设计一个函数void splitList(SeqList *lp),把lp指向的顺序表中的整数拆分成一个所有奇数在前、所有偶数在后的顺序表。 (3)设计一个函数void deleX(SeqList *lp, int x),在lp指向的顺序表中删除所有值为x的元素。
(1)函数float avgList(SeqList *lp)的实现如下:
float avgList(SeqList *lp) {
float sum = 0;
for (int i = 0; i <= lp->last; i++) {
sum += lp->data[i];
}
return sum / (lp->last + 1);
}
该函数遍历顺序表中的所有元素,求出它们的和,然后除以顺序表的长度得到平均值,最后返回该平均值。
(2)函数void splitList(SeqList *lp)的实现如下:
void splitList(SeqList *lp) {
int i = 0, j = lp->last;
while (i < j) {
while (i < j && lp->data[i] % 2 != 0) {
i++;
}
while (i < j && lp->data[j] % 2 == 0) {
j--;
}
if (i < j) {
int temp = lp->data[i];
lp->data[i] = lp->data[j];
lp->data[j] = temp;
}
}
}
该函数维护两个指针i和j,分别指向顺序表的头和尾。在循环过程中,i指针向右移动,直到指向一个偶数,j指针向左移动,直到指向一个奇数。然后交换i和j指针所指向的元素。重复执行上述过程,直到i和j指针相遇。此时,顺序表中所有奇数都在偶数的前面。
(3)函数void deleX(SeqList *lp, int x)的实现如下:
void deleX(SeqList *lp, int x) {
int k = 0;
for (int i = 0; i <= lp->last; i++) {
if (lp->data[i] != x) {
lp->data[k++] = lp->data[i];
}
}
lp->last = k - 1;
}
该函数遍历顺序表中的所有元素,如果元素的值不等于x,则将该元素复制到顺序表的前面,并将指针k指向下一个位置。最后,将顺序表的长度设为k-1即可。这样,顺序表中所有值为x的元素都被删除了。