| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1664 人关注过本帖
标题:新手求助 error C2109: 下标要求数组或指针类型
只看楼主 加入收藏
adyw2565876
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-6-16
结帖率:0
收藏
已结贴  问题点数:10 回复次数:5 
新手求助 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 编辑 ]
搜索更多相关主题的帖子: color terms number 
2014-07-20 12:53
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:4 
不是这样的错误吧

我不是砖家,要努力成为砖家。
2014-07-20 14:12
adyw2565876
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-6-16
收藏
得分:0 
回复 2 楼 砖家的谎言
那是什么错误?
2014-07-20 15:58
loveClangage
Rank: 8Rank: 8
来 自:广东云浮
等 级:蝙蝠侠
帖 子:326
专家分:891
注 册:2013-8-23
收藏
得分:4 
问题说不清楚,

编写的程序,不能改变世界,却可以改变自己...
2014-07-20 17:22
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:4 
printf("请输入所要查找的指定值searchnum %d",&searchnum);
                                            ^ 这里就不对罢

GCC是在这两个地方报错了

程序代码:
/* 打印出稀疏矩阵的各项 */
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])
                               ^

这两个地方毛病一样 你的参数是一个指针 但你寻址的时候当成二维数组 也就是二级指针用 是错的


2014-07-20 17:52
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
我想帮你改对 但我看了一下也没看明白你到底想干啥 我还是不改了
2014-07-20 17:55
快速回复:新手求助 error C2109: 下标要求数组或指针类型
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024307 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved