问题描述
- 菜鸟的函数哪里出了问题?(C语言函数返回指针的题型)
-
实现功能,一旦某一组里面有一个成绩在line_num以下的,就把这一组的数字都输出。
代码如下,改了好久还是没发现问题出现在哪里。
求教高手指点,非常感谢 >< ~# include<stdio.h> int main(){ float *search(float *(pointer)[3], float line); float score[][3]={ {23, 56, 89}, {56, 12, 91}, {81, 73, 80}, {34, 62, 95} }; float line_num; int i; float *p_addr; printf("input the limit line: "); scanf("%f", &line_num); p_addr=search(score, line_num); printf("the student's scores are listed here: "); for(i=0; i<3; i++) printf("%f ", *(p_addr+i)); putchar(' '); return 0; } float *search(float *(pointer)[4], float line){ float *p_addr; int i, j; for(i=0; i<4; i++){ for(j=0; j<3; j++){ if(*(*(pointer+i)+j)<line) return p_addr=*(pointer+i); } } }
解决方案
好了,帮你改好了,请采纳吧……
#include <stdio.h>
#include <stdlib.h>
float *search(float pointer[][3], float line);
int main() {
float score[][3] = {
{ 23, 56, 89 },
{ 56, 12, 91 },
{ 81, 73, 80 },
{ 34, 62, 95 }
};
float line_num;
int i;
float *p_addr;
printf("input the limit line:
");
scanf("%f", &line_num);
p_addr = search(score, line_num);
printf("the student's scores are listed here:
");
for (i = 0; i<3; i++) printf("%f ", *(p_addr + i));
putchar('
');
return 0;
}
float *search(float pointer[][3], float line) {
float *p_addr;
int i, j;
for (i = 0; i<4; i++) {
for (j = 0; j<3; j++) {
if (*(*(pointer + i) + j)<line)
return p_addr = *(pointer + i);
}
}
}
如果输入为60,由于你的输出为浮点型,所以输出是23.000000 56.000000 89.000000
解决方案二:
括号写错 应该把指针符号* ,
括到 内部
解决方案三:
C语言中的函数和指针
解决方案四:
首先你的 float *search(float *(pointer)[3], float line);应该在main函数外声明呀!
时间: 2025-01-01 17:51:54