首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3x3数组= 10个数字

3x3数组= 10个数字
EN

Stack Overflow用户
提问于 2012-09-29 23:31:52
回答 2查看 510关注 0票数 0

我有这个代码

代码语言:javascript
复制
#include <math.h>
#include <stdio.h>

const int n = 3;
const int s = 3;
int getm(int mat[n][s]);
int printm(int mat[n][s]);

int main()
{
    int m[n][s];
    getm(m);
    printm(m);
    return 0;
}

int getm(int mat[n][s])
{
    for(int x = 0;x < n;x++)
    {
        for (int y = 0;y<s;y++)
        {
            scanf("%i ", &mat[x][y]);
        }
    }
    return 0;
}
int printm(int mat[n][s])
{
    for(int x = 0;x<n;x++)
    {
        for(int y = 0;y<s;y++)
        {
            printf("%i ", mat[x][y]);
            if(y==(s-1))
            {
                printf("\n");
            }
        }
    }
}

它应该要求9个数字来组成一个3x3矩阵数组,但它实际上要求10个数字,printm工作得很好-只打印9个数字。error在哪里?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-29 23:36:23

代码语言:javascript
复制
scanf("%i ", &mat[x][y]);

去掉%i之后的空格,这样它只读取一个数字:

代码语言:javascript
复制
scanf("%i", &mat[x][y]);
票数 4
EN

Stack Overflow用户

发布于 2012-09-29 23:36:18

我认为问题出在%i之后的空格:您不需要第十个数字,但是您的代码无论如何都会请求它,因为它等待在第九个数字之后获得一个空格。

另外,可以通过删除if来稍微优化打印代码

代码语言:javascript
复制
for(int x = 0;x<n;x++)
{
    for(int y = 0;y<s;y++)
    {
        printf("%i ", mat[x][y]);
    }
    printf("\n");
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12654029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档