新手求助 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 编辑 ]




,