这个c语言程序我看不懂,求教! # include<stdio.h> int main(){ //

这个c语言程序我看不懂,求教!#include<stdio.h>intmain(){//为什么是int?下面的char定义的不是字符么。。。chara,b,c;while... 这个c语言程序我看不懂,求教!
# include<stdio.h>
int main(){
//为什么是int?下面的char定义的不是字符么。。。
char a,b,c;
while(~scanf("%c%c%c",&a,&b,&c)){
//为什么这里要取反
getchar();
//getchar的用法不是某某=getchar()么。。。这样用是不是另外的意思啊
if(a>b){
a^=b;
b^=a;
a^=b;

}
if(a>c){
a^=c;
c^=a;
a^=c;

}
if(b>c){
b^=c;
c^=b;
b^=c;
}
printf("%c %c %c\n",a,b,c);
}
return 0;
}
展开
 我来答
小白考研
2014-11-14 · TA获得超过3535个赞
知道小有建树答主
回答量:676
采纳率:100%
帮助的人:172万
展开全部
你C语言还没入门的赶脚啊!
第一个: int main() //是指main函数的返回值是int型的,与最后的“return 0;”对应。char是申明的程序中变量的类型,你想申明申明类型都可以,两者是完全无关的!
第二个:~scanf 我是没见过这种用法的,百度查了下也没找个,书上更没有,C++中构造函数才有这个用法,~scanf是错误用法。
第三个:c = getchar()是获取一个字符,然后赋值给字符变量c,如果只是getchar();那么仅仅是获取字符,而不做其他的操作。利用这个可以中断程序,等待用户输入任意字符时,才做下一步操作!
更多追问追答
追问
但是不都已经scanf了么。。。。怎么还要等啊
还有a^=b是什么意思
Yuqi_Tan

2014-11-14 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3422万
展开全部
楼上也是菜鸟啊~~~~
你这一段程序很好,很完整,没有一句多余的内容。
待我慢慢跟你说来:
1、
int main(){
//为什么是int?下面的char定义的不是字符么。。。
答:这里的int跟你下面程序里边的变量无关。它是指main()这个主程序返回的变量类型,当然,大多数主程序不需要返回变量,所以这个int即是必须的(C语言规定的),同时作为初级学习者来讲也是先不用管它的。
2、
char a,b,c;
while(~scanf("%c%c%c",&a,&b,&c)){
//为什么这里要取反
答:这里的~符号不是取反,而是一种并不太规范的特殊用途,它代表把scanf() 进而的变量全部取一遍,如scanf("%c%c%c",&a,&b,&c)是取三个字符,但是如果你输入的多于三个,则每一次只取三个,剩余的留在缓冲区内。与 while(~scanf())(这是一个当循环语句)一起使用,第一次取三个做完循环体后,第二次再回到这一句取三个,.......,直到取完为止,跳出循环。
(先发给你这一部分,后面我继续写)
更多追问追答
追问
so你快点说啊
追答
3、
getchar();
//getchar的用法不是某某=getchar()么。。。这样用是不是另外的意思啊
答:这一句很巧妙!
因为在上一句输入时,需要你输入三个字符(才能进行下面的工作),但是输入三个字符之后,你还得必须按一个回车键,这个回车键也作为一个字符输入了!也就是你按在屏幕上的只有三个字符,但进入缓冲区的是四个字符:(不妨设你按入的是BOY)“B"、"O"、"Y"、"(回车)”。程序把前三个字符分别赋值给了a='B'、b='O'、c='Y',但是那个回车符却落在了缓冲区。等程序执行完回到第二次运行,你再输入三个字符的时候,如“are"+回车时,这一次缓冲区内可是有五个字符了,分别是“回车、a、r、e、回车”,再给三个变量赋值时,就会出现a="回车"、b="a"、c="r”(它是按先后顺序依次取的),然后缓冲区内就剩下“e"、”回车“两个字符了。很明显,这一次你就不会得到正确的结果了。
正因为有了getchar(),执行这一句时,也会从缓冲区读一个字符,也就是第一次输入时多余的那个回车,但并不给任何变量赋值,但是它读完之后,缓冲区内就空了!!不会影响第二次你再输入三个字符时对程序的影响了!
后面的内容估计你都能看明白了,就有多说了。如果还有不详之处,请再留言。
刚才有点事,让你久等了,很对不起!

soory!
前面
”它代表把scanf() 进而的变量全部取一遍,“
这一句有一个错误,应该是:
”它代表把scanf() 时你输入的所有字符全部读取一遍,直至结束。“
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式