| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1332 人关注过本帖
标题:关于for循环的小问题
只看楼主 加入收藏
xiaoliang_sh
Rank: 2
等 级:论坛游民
帖 子:18
专家分:11
注 册:2010-7-16
收藏
得分:0 
显然楼主你的源码表示,判断输入后的下一个元素是否为‘\n’,而未定义的下一个元素可能是任意一个字符。比如当i==1时,执行了scanf后,键盘输入‘\n’随后打印换行符,之后i加一,判读条件变成a[2]!='\n',而此时这个元素里面的东西是可能是任意个字符
2010-10-03 21:28
lwlls668
Rank: 2
等 级:论坛游民
帖 子:59
专家分:72
注 册:2010-4-9
收藏
得分:0 
o(︶︿︶)o
又是一个自加运算问题  你把判断那儿for(;a[i-1]!='\n';)试一试,不行你再把scanf改为getchar。
2010-10-04 10:25
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
     明白了   谢谢22和23楼

粗心是大敌
2010-10-04 17:48
菜虫编编
Rank: 1
等 级:新手上路
帖 子:18
专家分:1
注 册:2010-10-3
收藏
得分:0 
高手啊~!!
越吹越远了,还是大叔我给你们丫分析一下:
正确的如下:
#include <stdio.h>
main()
{
  char *a[5];
  int i;
  for (i=0;*a[i-1]!='\n';i++)
    { scanf("%c",a[i]);
      printf("%c\n",*a[i]);
    }
  getch();
 }
第一错:数组是内存地址,直接输出是没显示的!所以要用取值符号*
第二错:输入scanf(),格式上要取址&符号,但如果变量定义是数组的话,不可以在前面加&。
第三错:比如输入abc,再按回车键,那么
       a[0]==a,a[1]==b,a[2]==c,a[3]==\n
      由于i++自增,a[3]变成a[4],然后才再跟条件a[i]!='\n'比较,a[4]是自增得出来新的变量,并不等于任何值    当然也不等于‘\n’,for循环体又怎么能退出循环呢?
正确的是:a[i-1]!='\n',那么自增再减去1,就是a[3]了,也就是达到满足for循环体退出的条件!!!

心境决定环境,想法决定活法,思路决定出路!
2010-10-04 18:58
菜虫编编
Rank: 1
等 级:新手上路
帖 子:18
专家分:1
注 册:2010-10-3
收藏
得分:0 
回复 21楼 xx342508809
当然是乱码啦!~~
直接输出数组,是它的内存地址,并不是它的值!~~
想要它的值,要用取值*符号!!

心境决定环境,想法决定活法,思路决定出路!
2010-10-04 19:03
error007
Rank: 2
等 级:论坛游民
帖 子:32
专家分:23
注 册:2010-7-12
收藏
得分:0 
回复 25楼 菜虫编编
你那个不给指针初始化?char *a[5];所以有问题的肯定

天才就是重复次数最多的人。
2010-10-05 17:55
wade2006
Rank: 2
等 级:论坛游民
帖 子:49
专家分:27
注 册:2007-1-16
收藏
得分:0 
在命令行下直接enter,不要直接输入\n;
2010-10-05 19:20
快速回复:关于for循环的小问题
数据加载中...
 
   



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

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