| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5923 人关注过本帖, 1 人收藏
标题:用键盘输入一个未知行列的矩阵 然后将其存入二维数组中 求高手帮忙改下~谢谢 ...
只看楼主 加入收藏
james0071357
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-6-5
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:11 
用键盘输入一个未知行列的矩阵 然后将其存入二维数组中 求高手帮忙改下~谢谢啦
程序代码:
#include<stdio.h>
int main()
{
    int i,j;
    char c;
    int a[4][4];
    for(i=0;(c=getchar())!=EOF;i++)
    {
        for(j=0;((c=getchar())!='\n';j++)
        {
            c=getchar();
            a[i][j]=(int)c-48;  //将输入的单个字符存入二维数组
        }
    }
    printf("%d",a[2][2]);
    return 0;
}
我想输入的是一个未知行列数的矩阵
以下仅以4行4列为例

要求的输入格式如下:
1234
5678
1234
5678
将这16个数存放到a[4][4]中,要求输出其中任意一个a[i][j]

我写的代码不知道为什么输出结果是-8000000多的一个数…
我怀疑可能是每行输入回车\n的时候错的…
但不知道怎么改…
求高手帮忙改下最好能讲解下 谢谢啦~

搜索更多相关主题的帖子: color 键盘 
2011-06-05 21:57
变幻小子
Rank: 6Rank: 6
来 自:广东陆丰
等 级:侠之大者
帖 子:188
专家分:473
注 册:2011-3-4
收藏
得分:5 
学习

明天的梦
2011-06-06 00:52
qldxsun
Rank: 4
等 级:业余侠客
帖 子:125
专家分:240
注 册:2011-6-4
收藏
得分:0 
#include<stdio.h>
#define M 10
int main()
{
    int i=0,j;
    char c;
    char a[M][M];
    printf("end up with 0\n");
    c=getchar();
    if(c=='0')
        return 0;
    while(1)
    {
        for(j=0;c!='\n';j++)
        {
            a[i][j]=c;
            c=getchar();
        }
        a[i][j]='\0';
        c=getchar();
        i++;
        if(c=='0')
            break;
    }
    a[i][0]='\0';
    i=0;
    while(1)
    {
        for(j=0;a[i][j]!='\0';j++)
            printf("%c  ",a[i][j]);
        i++;
        j=0;
        printf("\n");
        if(a[i][j]=='\0')
            break;
    }
    return 0;
}
写的不完整,补零什么的自己做~不是最优解。。。写的有点麻烦。。。不知道不赋值‘\0’怎么判断结束。。。EOF不会用。。。
2011-06-06 09:38
啃书本的毛虫
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2011-6-5
收藏
得分:0 
for(j=0;((c=getchar())!='\n';j++)
 这一句是在一直加着的,你没有归零,所以…………
 你输入第二行的时候会出现…………
2011-06-06 09:59
啃书本的毛虫
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2011-6-5
收藏
得分:0 
请无视我。看错题了
2011-06-06 10:17
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:15 
程序代码:
// 你这个代码写的。。。。
// 咱们先看内层循环:
for(j=0;(( c = getchar()) != '\n'; j++) {    // 输入一个字符,检测它是不是 '/n'
    c=getchar();    // 如果刚才输入的不是 '/n',那就再输入一个字符。
    a[i][j]=(int)c-48;  //将输入的单个字符存入二维数组
}
// 楼主明白了么?也就是说对于 5678 这样的一行输入,只有 6 和 8 被当做矩阵的元素处理了。
// 外层循环,第一次执行的时候要先输入一个字符,并检测它是否为 EOF ,也就是说楼主输入的第一个 1 不会被当做矩阵元素处理。
// 改成下面这样就可以了:

#include<stdio.h>
int main()
{
    int i, j, m, n;    // 这个 m 和 n 我觉得还是必须的,你总得记得矩阵的大小吧
    char c = 1;
    int a[4][4] = {0};
    for (m = 0; c != EOF; m++) {
        for ( n = 0; (c = getchar()) != '\n' && c != EOF; n++) {
            a[m][n] = c - 48;  // 将输入的单个字符存入二维数组,这里不需要进行显式类型转换
        }
    }
    printf("%d",a[2][2]);
    return 0;
}


[ 本帖最后由 voidx 于 2011-6-6 15:46 编辑 ]
2011-06-06 11:35
木头lbj
Rank: 7Rank: 7Rank: 7
来 自:黄山
等 级:黑侠
威 望:1
帖 子:269
专家分:527
注 册:2010-11-6
收藏
得分:0 
回复 6楼 voidx
循环说的比较明白,但是这个程序还是没得到运行的结果啊。我对getchar()函数一直用不好。。。

。。。!!!)))000
2011-06-06 12:59
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
回复 7楼 木头lbj
你想要什么样的结果?
2011-06-06 13:27
木头lbj
Rank: 7Rank: 7Rank: 7
来 自:黄山
等 级:黑侠
威 望:1
帖 子:269
专家分:527
注 册:2010-11-6
收藏
得分:0 
回复 8楼 voidx
不是要输出a[2][2]么?你的程序一直在输入啊。。。你运行成功了?

。。。!!!)))000
2011-06-06 19:26
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
哦。我直接按楼主那个改的,你试试按 Ctrl + z 或者 Ctrl + d。
2011-06-06 19:30
快速回复:用键盘输入一个未知行列的矩阵 然后将其存入二维数组中 求高手帮忙改下 ...
数据加载中...
 
   



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

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