error C2100:illegal indirection#includevoid main(){\x05float aver(float *a);\x05void nonstu(float *a,int t);\x05float a[3][4];\x05int i,p,t;\x05for(i=0;i
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 11:24:29
error C2100:illegal indirection#includevoid main(){\x05float aver(float *a);\x05void nonstu(float *a,int t);\x05float a[3][4];\x05int i,p,t;\x05for(i=0;i
error C2100:illegal indirection
#include
void main()
{
\x05float aver(float *a);
\x05void nonstu(float *a,int t);
\x05float a[3][4];
\x05int i,p,t;
\x05for(i=0;i
error C2100:illegal indirection#includevoid main(){\x05float aver(float *a);\x05void nonstu(float *a,int t);\x05float a[3][4];\x05int i,p,t;\x05for(i=0;i
你的错误主要出在二维数组参数声明和数组访问出界上.下面是修改后的代码:
#include <stdio.h>
float aver(float (*a)[4]); // 二维数组参数声明
void nonstu(float a[][4],int t); // 等价声明
int main(void) {
float a[3][4];
int i, p, t;
printf("Enter floats:\n"); // 提示输入
for(i = 0; i < 3; i++)
for(p = 0; p < 4; p++) // 一维子数组的下标的上界是4
scanf("%f", &a[i][p]);
printf("Enter index:\n"); // 提示输入
scanf("%d", &t);
nonstu(a, t);
printf("%f", aver(a));
return 0;
}
float aver(float (*a)[4]) {
int i, p;
float t = 0;
for(i = 0; i < 3; i++)
for(p = 0; p < 4; p++) // 条件控制设为p < 4使下标p得以便历有效值0~3
t = t + *(*(a+i)+p);
t = t / 12;
return t;
}
void nonstu(float (*a)[4], int t) {
// 下标有效范围为0~3,4出界
printf("%f\n%f\n%f\n%f\n", *(*(a+t)+0), *(*(a+t)+1), *(*(a+t)+2), *(*(a+t)+3));
}