| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 464 人关注过本帖
标题:一个简单的问题想请教~
只看楼主 加入收藏
hexianqi1994
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2011-8-3
结帖率:86.96%
收藏
已结贴  问题点数:5 回复次数:6 
一个简单的问题想请教~
请看这一段代码,我想问是不是这个while循环是不是每到要判断循环条件时就要执行一次getchar函数,如果是的话就没必要蓝色这一段,如果不是的话,那第一次循环式是怎样获取一个ch值.
while(ch=getchar()!='n')
{
    for(i=0;i<CSIZE;i++)
    {
        printf("please enter the frist name and last name:");
        scanf("%s%s",msg[i].std_name.first,msg[i].std_name.last);
        printf("now please enter third dian of text:");
        scanf("%lf%lf%lf",&msg[i].dian[0],&msg[i].dian[1],&msg[i].dian[2]);
    }
    chuli(msg);
    printf("do you want to start\n");
    ch=getchar();
搜索更多相关主题的帖子: please please 
2011-08-25 14:49
Luminal
Rank: 6Rank: 6
等 级:侠之大者
帖 子:140
专家分:470
注 册:2011-8-24
收藏
得分:0 
你的程序贴的不完整,不好回答你的问题,至少while的语句要完整,
如果那个蓝色的 ch=getchar();后面就是一个}的话,建议这样写
 ch='y';//这是添加的一句
while(ch!='n'){
.....
 ch=getchar();
}
以上只是根据你的程序和你问的问题猜测的!
2011-08-25 15:02
lin471306489
Rank: 4
等 级:业余侠客
帖 子:136
专家分:247
注 册:2011-8-16
收藏
得分:0 
while((ch=getchar())!='n'),这句的意思是,'n'是循环的终止条件。
ch=getchar();这句是讲getchar()的值赋给ch。
2011-08-25 15:26
lccwyj
Rank: 4
等 级:业余侠客
帖 子:71
专家分:203
注 册:2011-5-6
收藏
得分:0 
while循环末尾的ch=getchar(); 其实是接受回车
2011-08-25 15:53
hexianqi1994
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2011-8-3
收藏
得分:0 
我只想知道每一次循环判断条件的时候程序会不会调用getchar()而已
while(ch=getchar()!='n')
只需说是,或否还有原因就行
2011-08-25 16:06
Luminal
Rank: 6Rank: 6
等 级:侠之大者
帖 子:140
专家分:470
注 册:2011-8-24
收藏
得分:0 
晕,这问题建议楼主去看看教材
2011-08-25 16:09
luyi_footman
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:32
专家分:100
注 册:2011-7-14
收藏
得分:5 
楼主的程序写的有些让人费解,我也不是很确定我是否看懂了你程序的目的,一些内容仅是我个人的理解。
程序的主要目的是:程序运行后终端打印一串字符串:do you want to start(回车),然后程序从终端
获取一个字符,这个字符程序只分两种情况来处理,1是当ch != 'n'时,程序执行for(),以及chuli(msg)
等代码,我想这两点代码应该是程序主要的工作;还有一种情况是ch == 'n'时,如果按照楼主的程序写法,
while内的代码是不被执行的,换句话说,只要终端输入的是n,不执行,除此之外的字符,一律执行。

如果我的理解符合楼主的意思的话,那么我建议楼主的程序这样修改:
程序代码:
printf("do you want to start\n");
while(ch=getchar()!='y');
for(i=0;i<CSIZE;i++)
{
    printf("please enter the frist name and last name:");
    scanf("%s%s",msg[i].std_name.first,msg[i].std_name.last);
    printf("now please enter third dian of text:");
    scanf("%lf%lf%lf",&msg[i].dian[0],&msg[i].dian[1],&msg[i].dian[2]);
}
chuli(msg);
.....
}


这样写的话终端会一直读取输入的字符串,知道读到的字符ch == 'y'则结束循环,执行接下来的代码,
实现目的。

如果我这么改不符合楼主的目的的话,楼主自行修改,有问题可以再回帖说出来。

[ 本帖最后由 luyi_footman 于 2011-8-25 16:21 编辑 ]

天道酬勤!
2011-08-25 16:20
快速回复:一个简单的问题想请教~
数据加载中...
 
   



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

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