新手求助 error C2109: 下标要求数组或指针类型
程序代码:
#include<stdio.h> #include<stdlib.h> #define MAX_TERMS 101 /*maxmum number of terms +1*/ typedef struct { int col; int row; int value; } term; term a[MAX_TERMS]; void read_matrix (term a[]); void print_matrix (term a[], int *p); int search (int *p,int searchnum); void main(void) { int searchnum; int *p; term a[MAX_TERMS]={{6,6,8},{0,0,15},{0,3,22},{0,5,-15},{1,1,11},{1,2,3},{2,3,-6},{4,0,91},{5,2,28}};/* 结构数组的初始化 */ /* 把三元组读入到一个新的稀疏矩阵p[]中去 */ read_matrix (a); /* 打印出稀疏矩阵的各项 */ print_matrix(a,p); /* 在稀疏矩阵中查找指定的值 */ printf("请输入所要查找的指定值searchnum %d",&searchnum); search (p,searchnum); } void read_matrix (term a[]) /* 把三元组读入到一个新的稀疏矩阵p[][]中去 */ { int i,j,currentp,p_row,p_col; int p[10][10]; p_row=a[0].row;p_col=a[0].col; /* 先将稀疏矩阵p初始化为0矩阵 */ for (i=0;i<p_row;i++) for (j=0;j<p_col;j++) p[i][j]=0; /* 此处出现错误error C2109: 下标要求数组或指针类型 */ /* 为矩阵p中非零的元素赋值 */ for (currentp=1;currentp<=a[0].value;currentp++) p[a[currentp].row][a[currentp].col]=a[currentp].value; } /* 打印出稀疏矩阵的各项 */ void print_matrix (term a[], int *p) { int i,j,k; for (i=0;i<a[0].row;i++) for (j=0;j<a[0].col;j++) printf("%d ",p[i][j]); printf("\n"); } /* 在稀疏矩阵中查找指定的值 */ int search (int *p,int searchnum) { int i,j; for (i=0;i<a[0].row;i++) for (j=0;j<a[0].col;j++) if (searchnum==p[i][j]) { printf("查找指定值 %d 在稀疏矩阵中的位置为: p[%d][%d]",searchnum,i,j); return 1; } else { printf("稀疏矩阵p中找不到指定值 %d\n",searchnum); return -1; } }
[ 本帖最后由 adyw2565876 于 2014-7-20 12:54 编辑 ]