| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 404 人关注过本帖
标题:一个简单的循环问题,但就是出现问题,请看:
只看楼主 加入收藏
Tendy
Rank: 1
等 级:新手上路
帖 子:12
专家分:4
注 册:2011-9-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
一个简单的循环问题,但就是出现问题,请看:
程序代码:
#include<stdio.h>
#include<stdlib.h>

main(void)
{
    int num[4];
    int j,i;

    for(j=0;j<7;j++)
    for(i=0;i<4;i++)
    {
        num[i]=getchar();
        printf("%d###",num[i]);
    }
}



很简单的循环,但是执行后会出现一个 10###,如输入1234,结果就是49###50###51###52###10###
查看ASC码表发现10表示NL为换行符
但是当输入123456789时输出为49###50###51###52###53###54###
无论定义int num[]为多长,输出均为这个,何解?
2011-09-29 22:47
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:20 
#include<stdio.h>
#include<stdlib.h>

main(void)
{
    int num[4];
    int j,i;

    for(j=0;j<7;j++)这个循环要 循环要循环28次,也就是说要 读取28次,你 数组只能存放4个元素
    for(i=0;i<4;i++)
    {
        num[i]=getchar();在不同平台,输入回车,getch()将返回不同数值,而getchar()统一返回10(即\n)
        printf("%d###",num[i]);
    }
}


num[i]=getchar();把读取的 数字(4个 )所对应的ASCII码赋给数组 num  0==48, 1==49,2==50.......
                 四个读取后  循环还不会听,因为还要循环82次呢,而你只按下换行,系统把你 按下的字符读取后转换为ascll码  10      这下懂吧

[ 本帖最后由 A13433758072 于 2011-9-29 23:29 编辑 ]

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-29 23:05
Tendy
Rank: 1
等 级:新手上路
帖 子:12
专家分:4
注 册:2011-9-19
收藏
得分:0 
回复 2楼 A13433758072
恩,说的对!不过这个是test代码,源程序的根本问题在getchar()上,输入4位后没有清空缓存区才导致了换行符的存在。
2011-09-29 23:25
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
慢了一步

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-29 23:30
Tendy
Rank: 1
等 级:新手上路
帖 子:12
专家分:4
注 册:2011-9-19
收藏
得分:0 
回复 4楼 A13433758072
2011-09-30 00:27
快速回复:一个简单的循环问题,但就是出现问题,请看:
数据加载中...
 
   



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

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