| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 711 人关注过本帖
标题:下列程序会产生什么样的输出,为什么
只看楼主 加入收藏
taokuyou
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-1-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
下列程序会产生什么样的输出,为什么
假定输入为“Go west, young man!" , 以下程序会产生什么样的输出?为什么?   
1.
#include <stdio.h>
int main(void)
{
    char ch;
    scanf ("%c",&ch);
    while (ch != `g`)
    {
         printf ("%c",ch);
         scanf ("%c",&ch);
     }
     return 0;
}



2.
#include <stdio.h>
int main(void)
{
    char ch;
    scanf ("%c",&ch);
    while (ch != `g`)
    {
         printf ("%c",++ch);
         scanf ("%c",&ch);
     }
     return 0;
}





3.
#include <stdio.h>
int main(void)
{
    char ch;
    do{
      
          scanf ("%c",&ch);
          printf ("%c",ch);
     }while (ch !=`g`);
     return 0;
}
   


4.
#include <stdio.h>
int main(void)
{
    char ch;
    scanf ("%c",&ch);
    for(ch=`$`; ch != `g`; scanf ("%c",&ch))
        putchar (ch);
    return 0;
}  
搜索更多相关主题的帖子: return 
2011-01-15 18:25
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
用编译器可以知道答案,如果不明,将程序转化为自己熟悉的。

小代码,大智慧
2011-01-15 19:01
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
收藏
得分:0 
1
图片附件: 游客没有浏览图片的权限,请 登录注册

Go Go Go
2011-01-15 19:11
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
收藏
得分:0 
2
图片附件: 游客没有浏览图片的权限,请 登录注册


Go Go Go
2011-01-15 19:13
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
收藏
得分:0 
3
图片附件: 游客没有浏览图片的权限,请 登录注册

Go Go Go
2011-01-15 19:15
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:10 

1.   Go west, youn  (遇g就结束循环)

2.   Go west, youn  (每个字符的ASCII码都加1,所以输出的字符都比1号题的字符大1.........我没去算你知道就行)

3.   Go west, young
   (遇g循环结束,但do...while...类型是先执行后判断,所以输出了g,后循环结束)

4.   o west, youn     (因为存放头个输入字符的变量被程序ch=`$`;再次赋值了'$',可是这个字符并不输出,因为存放它的字符变量又被程序scanf ("%c",&ch),再次赋直了,而循环体就输出字符变量所放的字符,遇g循环就结束)

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-01-15 19:36
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
收藏
得分:0 
同意 6#
2011-01-15 20:44
taokuyou
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-1-6
收藏
得分:0 
回复 6楼 A13433758072
3.
#include <stdio.h>
int main(void)
{
    char ch;
    do{
      
          scanf ("%c",&ch);
          printf ("%c",ch);
     }while (ch !=`g`);
     return 0;
}


 为啥它是输出 Go west, young 而不是  Go west, young man! 呢?
2011-01-16 19:40
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
ch != 'g';输入字符串中,如果遇到g,就结束循环。
注意指令先后顺序,程序一般都是从头读到尾,如果遇到循环,会通过条件判断,如果条件成立转移别一处(可以理解为破坏程序顺序)

小代码,大智慧
2011-01-16 19:47
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:10 
do{           scanf ("%c",&ch);           printf ("%c",ch);      }while (ch !=`g`);程序的运行顺序是先输入,再输出,最后才判断输入的字符是不是g→_→while (ch !=`g`);→_→当输入到g时条件为假,所以就跳出循环

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-01-16 19:47
快速回复:下列程序会产生什么样的输出,为什么
数据加载中...
 
   



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

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