cycf 发表于 2019-3-11 22:13:53

c语言问题

本帖最后由 cycf 于 2019-3-11 23:00 编辑

#include <stdio.h>

void main ()
{   
        int a={{1,2,3,4},{4,5,6,7,8},{9,10,11,12,13},{14,15,16,17,18}};

        int (*p);

        int i,j;

        p=a;

        printf("请输入i和j的\n");

        printf("i=");


        scanf("%d",&i);

        while( i<0||i>2)
       
        {
                printf("i=");
                scanf("i=%d",&i);
       
        }
   
        printf("j=");


        scanf("j=%d",&j);

        while( j<0||j>3)
       
        {
                printf("j=");
                scanf("j=%d",&j);
       
        }
   
        printf("a[%d,%d] = %d\n",i,j,*(*(p+i)+j));

}


哪里出问题了?

ba21 发表于 2019-3-11 22:25:25

你不说出哪里问题,别人怎么知道你要问什么?

jackz007 发表于 2019-3-11 23:04:08

本帖最后由 jackz007 于 2019-3-11 23:08 编辑

. . . . . .
int a={{1,2,3,4},{4,5,6,7,8},{9,10,11,12,13},{14,15,16,17,18}}; // 有 2 个全角逗号
. . . . . .

cycf 发表于 2019-3-11 23:08:42

有图

清蒸黄花鱼 发表于 2019-3-11 23:38:01

int a={{1,2,3,4},{4,5,6,7,8},{9,10,11,12,13},{14,15,16,17,18}};数组3行4列你这算4行5列吧

cycf 发表于 2019-3-11 23:46:35


#include <stdio.h>

void main ()
{   
        int a={1,2,3,4,5,6,7,8,9,1,0,1};


        int (*p);

        int i,j;

    p=a;

        printf("请输入i和j的\n");

        printf("i=");


        scanf("%d",&i);

/*        while( i>2|| i<0)
       
        {
                printf("i=");
                scanf("i=%d",&i);
       
        }*/
   
        printf("j=");


        scanf("j=%d",&j);

/*        while( j>3|| i<0)
       
        {
                printf("j=");
                scanf("j=%d",&j);
       
        }*/
   
        printf("a[%d,%d] = %d\n",i,j,*(*(p+i)+j));

}

一些错误已经修改 ,又出现错误

jackz007 发表于 2019-3-11 23:50:26

   问题主要出在数组的定义以及指针与数组的匹配方面:
. . . . . .
int a={{1 , 2 , 3 , 4} , {5 , 6 , 7 , 8} , {9 , 10 , 11 , 12}} ; // a 只能容纳这么多元素,多了少了都会出错
int (* p)                                                         ; // 为了能指向a, (* p) 的元素个数是 4
. . . . . .

清蒸黄花鱼 发表于 2019-3-11 23:50:46

#include <stdio.h>

void main ()
{   
      int a={{1,2,3,4,8},{4,5,6,7,8},{9,10,11,12,13},{14,15,16,17,18}};

      int (*p);

      int i,j;

      p=a;

      printf("请输入i和j\n");

      scanf("%d,%d",&i,&j);

      while( i<0||i>4)
      
      {
                printf("i=");
                scanf("%d",&i);
      
      }
   
      while( j<0||j>4)
      
      {
                printf("j=");
                scanf("%d",&j);
      
      }
   
      printf("a[%d,%d] = %d\n",i,j,*(*(p+i)+j));

}
改了一下 这样可以

cycf 发表于 2019-3-11 23:55:30

清蒸黄花鱼 发表于 2019-3-11 23:50
改了一下 这样可以

我的是哪里错了{:5_103:}

cycf 发表于 2019-3-12 00:12:00

清蒸黄花鱼 发表于 2019-3-11 23:50
改了一下 这样可以

我把你的while 语句复制过去,就没问题了,还是不太清楚我的程序里有什么问题,请指教.

cycf 发表于 2019-3-12 08:11:01

清蒸黄花鱼 发表于 2019-3-11 23:50
改了一下 这样可以

问题已解决

cycf 发表于 2019-3-12 09:17:01

你这个代码是怎么复制的啊?怎么和我的不一样{:5_92:}

清蒸黄花鱼 发表于 2019-3-12 20:36:19

cycf 发表于 2019-3-12 09:17
你这个代码是怎么复制的啊?怎么和我的不一样

框框里有个大小于符号可以直接放代码

清蒸黄花鱼 发表于 2019-3-12 20:39:47

cycf 发表于 2019-3-12 00:12
我把你的while 语句复制过去,就没问题了,还是不太清楚我的程序里有什么问题,请指教.

while的作用是让输入的数不超过数组容纳的数   数组是从0开始算的    二维数组就是a
页: [1]
查看完整版本: c语言问题