| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1895 人关注过本帖
标题:定义只有9个元素的数组非要输入10个元素才能输出
只看楼主 加入收藏
domore
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2019-7-25
结帖率:60%
收藏
已结贴  问题点数:5 回复次数:5 
定义只有9个元素的数组非要输入10个元素才能输出
我定义了一个3X3的二维数组,来进行行列互换的操作并输出换好后的数组
用scanf赋值,输入第九个数字后按enter键没反应光标还是一闪一闪,这时狂按enter或空白键没用
继续输入一个数字,结果正常输出了
我定义的明明是有且仅有9个元素的数组,为什么这里非要我输入10个数字才能正常执行呢、、、
望大神解释一下哎   谢谢了!!!
图片附件: 游客没有浏览图片的权限,请 登录注册

#include<stdio.h>
#define N 3
int a[N][N];        //定义一个3X3的全局数组a
int main()
    {
    void swap(int a[][3]);
    int i,j;
    printf("enter 9 integer numbers to array:\n");        
    for(i=0;i<N;i++)        //输入9个数据
        for(j=0;j<N;j++)
            scanf("%d ",&a[i][j]);        
        printf("the old:\n");
    for(i=0;i<N;i++)        //输出原数组
        {
        for(j=0;j<N;j++)
            printf("%d ",a[i][j]);        
        printf("\n");
        }
    swap(a);        //进行行列互换
    printf("the new:\n");
    for(i=0;i<N;i++)        //输出行列互换后的新数组
        {
        for(j=0;j<N;j++)
            printf("%d ",a[i][j]);
        printf("\n");
        }
    return 0;
    }


void swap(int a[][3])        //定义行列互换函数
    {
    int i,j,t;
    for(i=0;i<N;i++)
        for(j=i+1;j<N;j++)
            {
            t=a[i][j];
            a[i][j]=a[j][i];
            a[j][i]=t;
            }
    }
搜索更多相关主题的帖子: 定义 数组 输入 输出 for 
2019-08-03 15:38
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
scanf("%d ",&a[i][j]);
中 %d 后面为什么有个空格?
2019-08-03 18:53
domore
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2019-7-25
收藏
得分:0 
回复 2楼 rjsp
不然数字会挤到一起啊
不加空格  输出就是
123
456
789

加空格就是
1 2 3
4 5 6
7 8 9
还有就是想输入个位数以上的数时会输不了
如想在中间输入13它会当成两个数字而不是一个数字   
2019-08-03 20:02
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1689
专家分:4262
注 册:2007-12-27
收藏
得分:0 
版主的意思是scanf和printf是不同的,麻烦你看清楚。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2019-08-03 20:52
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
收藏
得分:5 
空格(Space)、回车(Enter)、制表(Tab)这些都属于空白字符(White Space)
scanf("%d ", &a[i][j])中格式符应该理解为整数 + 空白字符,所以你输完9个数后,
再输入回车,scanf并没有结束,而是认为你输入的还是空白字符,直到你再输入一个
字符(不一定是数字),scanf才结束。


可以输入13呀!
图片附件: 游客没有浏览图片的权限,请 登录注册

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-08-03 21:31
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
收藏
得分:0 
刚卡了,发重了,版主删除一下,谢谢。

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-08-03 21:34
快速回复:定义只有9个元素的数组非要输入10个元素才能输出
数据加载中...
 
   



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

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