| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1965 人关注过本帖
标题:二维数组作为函数参数的问题
只看楼主 加入收藏
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
二维数组作为函数参数的问题
各位大侠帮我分析下程序吧:
#include<stdio.h>
main()
{
int a[2][1],b,c;
do
{
 scanf("%d",&b);
 if(b==1)
  {
    for(c=0;c<2;c++)
    scanf("%d%d",&a[c][0],&a[c][1]);
   }
 if(b==2)
  {
   for(c=0;c<2;c++)
   printf("%d,%d\n",a[c][0],a[c][1]);
   }
}
while(b!=0);
}
我想要的效果是输入1后,开始输入4个变量,输入2,开始输出4个变量,输入0,退出;
为什么我输入的四个变量是1 2 3 4,输入2输出的四个变量却成了
1,3
3,2
这是怎么回事呢?应该怎么修改才能让输出的结果是
1,2
3,4 呢?
出现这个错误是由于一个小失误造成的,我想要的是一个两行两列的4个变量,结果却定义成了a[2][1],
应该改为a[2][2],调试无错误。
下面是我复杂化的一个程序:
#include<stdio.h>
void shuchu(int a[][2], char b[][20])
{
    int x;
    for(x=0;x<2;x++)
        printf("%s\t%d\t%d\n",b[x],a[x][0],a[x][1]);
}
main()
{
    char b[2][20];
    int a[2][2],c,x;
do
{
    scanf("%d",&x);
    if(x==1)
    {
        for(c=0;c<2;c++)
        {
            scanf("%s",b[c]);
            scanf("%d%d",&a[c][0],&a[c][1]);
        }
    }
    if(x==2)
      shuchu(a,b);
}
while(x!=0);
}
大家借鉴下哦;

[ 本帖最后由 小赵q1 于 2011-12-12 11:35 编辑 ]
搜索更多相关主题的帖子: include 
2011-12-12 06:06
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:0 
scanf("%d%d",&a[c][0],&a[c][1]);
这里改成scanf("%d,%d\n",&a[c][0],&a[c][1]);
你试试
2011-12-12 09:19
杨易轩
Rank: 2
来 自:山西
等 级:论坛游民
帖 子:4
专家分:33
注 册:2011-4-14
收藏
得分:13 
你的数组定义不正确;应该定义为 int a[2][2];
下面是修改后的程序:经过运行验证,无误。
#include<stdio.h>
main()
{
int a[2][2],b,c;
do
{
    printf("请输入b的(1、2、0)--");
scanf("%d",&b);
if(b==1)
  {
    for(c=0;c<2;c++)
    scanf("%d%d",&a[c][0],&a[c][1]);
   }
if(b==2)
  {
   for(c=0;c<2;c++)
   printf("%d,%d\n",a[c][0],a[c][1]);
   }
}
while(b!=0);
}
2011-12-12 09:32
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:0 
回复 2楼 khaz
在scanf()里加\n是容易出错的,我以前试过,加了\n应该怎么输入呢?
2011-12-12 09:35
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:0 
加\n没问题的啦, 不加在特定情况容易读入换行符,这里主要是加了逗号 不是为了加换行符 输入就按你原来的输入啊
2011-12-12 09:41
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:0 
回复 3楼 杨易轩
呵呵,恩,我刚刚想到问题的所在,大意了,再问你个问题吧,我想让5个数从大到小输出,该怎么弄呢?貌似互换也很麻烦,能不能有个方便的方法呢?我刚学完字符数组,还没有接触冒泡等东西,谢谢
2011-12-12 09:50
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:7 
比如变量i表示数组下标是从0到4的,
你输出时下标从4到0就可以了 方法很多的,比如4-i 就是从4到0了
2011-12-12 09:57
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:0 
回复 7楼 khaz
可是我输入的5个变量是乱输的,他们的大小顺序需要重新排列
2011-12-12 10:03
杨易轩
Rank: 2
来 自:山西
等 级:论坛游民
帖 子:4
专家分:33
注 册:2011-4-14
收藏
得分:0 
电脑是死的,一串数字不经过排序就顺序输出是不可能的,电脑是不会识别数字的大小的。只有自己的程序是灵活的。冒泡排序、插入排序、选择排序、交换排序等等这是以后编程的基础。必须用。
2011-12-12 11:07
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:0 
回复 9楼 杨易轩
多谢指教,我会努力学习完的,有问题还要向你请教哦。呵呵
2011-12-12 11:24
快速回复:二维数组作为函数参数的问题
数据加载中...
 
   



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

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