| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
Reworld,下班在家制作游戏,1500万奖金等你拿以码会友 以友辅仁
共有 242 人关注过本帖
标题:定义只有9个元素的数组非要输入10个元素才能输出
只看楼主 加入收藏
domore
Rank: 1
等 级:新手上路
帖 子:25
专家分: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
等 级:版主
威 望:322
帖 子:6616
专家分:38254
注 册:2011-1-18
  得分:0 
scanf("%d ",&a[i][j]);
中 %d 后面为什么有个空格?
2019-08-03 18:53
domore
Rank: 1
等 级:新手上路
帖 子:25
专家分: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: 10Rank: 10Rank: 10
来 自:CC
等 级:贵宾
威 望:24
帖 子:1191
专家分:1918
注 册:2007-12-27
  得分:0 
版主的意思是scanf和printf是不同的,麻烦你看清楚。

别人能不等于你能,别人不能不等于你不能
不要问别人能不能,要说:我能
2019-08-03 20:52
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:20
帖 子:198
专家分:1303
注 册: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
来 自:广州
等 级:贵宾
威 望:20
帖 子:198
专家分:1303
注 册:2017-8-9
  得分:0 
刚卡了,发重了,版主删除一下,谢谢。

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





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

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