| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 714 人关注过本帖
标题:那个 新来的 问一道题
只看楼主 加入收藏
倒霉
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2011-8-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
那个 新来的 问一道题
我是菜鸟 新来的 要是发帖发错了还望版主见谅

要学C语言了 有好多题不会 想问问各位神人

最近发现一道题如下
#include<stdio.h>
int main()
{int c;
while((c=getchar())!='\n')
{switch(c-'2')
{case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
case 4:putchar(c+3);break;}}
printf("\n");}
题目让输入2743<回车>

运行后答案是66877  这怎么来的看了好几遍都不知道
 
请主要解释下while((c=getchar())!='\n')  这句是如何给值的getchar不是一次一个字符么 2743看作什么 麻烦啦
搜索更多相关主题的帖子: 如何 while C语言 
2011-08-22 22:52
怎么会这样子
Rank: 2
来 自:广州
等 级:论坛游民
帖 子:31
专家分:39
注 册:2011-8-20
收藏
得分:0 
2473分开来看做字符分别是2,4,7,3,\n。
遇到\n停止!
明白了吧!

那个switch里的内容你懂吧!
不解析了!

[ 本帖最后由 怎么会这样子 于 2011-8-22 23:05 编辑 ]
2011-08-22 23:03
zatt520
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2011-8-22
收藏
得分:0 
先注意你写程序的格式规范
2011-08-22 23:07
倒霉
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2011-8-22
收藏
得分:0 
回复 2楼 怎么会这样子
恩 swich语句没啥 就是为什么四位数最后变成五位了 这个想不通
2011-08-22 23:18
倒霉
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2011-8-22
收藏
得分:0 
回复 3楼 zatt520
我是按卷子上直接打的
2011-08-22 23:19
zatt520
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2011-8-22
收藏
得分:0 
加油

[ 本帖最后由 zatt520 于 2011-8-23 00:07 编辑 ]
2011-08-22 23:50
loveshuang
Rank: 9Rank: 9Rank: 9
来 自:湖北武汉
等 级:蜘蛛侠
帖 子:270
专家分:1198
注 册:2010-11-14
收藏
得分:0 
回复 4楼 倒霉
switch是开关语句,遇到case中相等的情况就进入直到遇到break,exit或结束才会推出,程序中只有两个break所以得一个一个对应去看什么时候退出
2011-08-23 02:03
倒霉
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2011-8-22
收藏
得分:0 
回复 7楼 loveshuang
想了半小时想通了 我太笨了
2011-08-23 09:18
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:10 
回复 楼主 倒霉
while((c=getchar())!='\n')→_→我们键盘输入的数据是放在输入流中的,而getchar是逐个字符读取.而while()是个循环,当括号里每读取一个字符就循环一次,直到条件为假,当括号里面的条件为假时就跳出,也就是getchar()=='\n'时跳出循环还有你的default不见了,谭浩强的书对输入输出流没怎么讲……

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-08-23 09:31
lin471306489
Rank: 4
等 级:业余侠客
帖 子:136
专家分:247
注 册:2011-8-16
收藏
得分:10 
while((c=getchar())!='\n')→_→我们键盘输入的数据是放在输入流中的,而getchar是逐个字符读取.而while()是个循环,当括号里每读取一个字符就循环一次,直到条件为假.hai
还有就是要好好的补一下switch语句的执行过程。
键入2时候,switch(0),但是到case 3 ...break;故要执行两次输出66;  键入7,不满足条件,不输出;   键入4,case 2,故输出8;   键入3,执行case 1,case 2两个输出,为77;
所以编译出来的结果就是
                      66877啦
2011-08-23 10:22
快速回复:那个 新来的 问一道题
数据加载中...
 
   



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

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