C语言的小程序的解析,帮我分析下吧,大虾们!

来源:百度知道 编辑:UC知道 时间:2024/05/18 06:26:33
void main()
{ int n;
sacnf("%d,&n");
while(n>0)
{ printf("%d",n%10);
n=n/10;
}
}
答案我已经知道了是 5432.但具体的方法是怎么样的呢?n%10又怎么看呢?

printf("%d",n%10); 意思就n和10取余,如果你输入n=2345,
2345%10输出··5~~~~~2345/10=234;
234%10输出··4~~~~~~234/10=23;
23%10输出··3~~~~~~23/10=2;
2%10输出··2~~~~~~2/10=0;
n=0就停止了~~~
所以输出为5432~~~~
(注意:这不是5432(五千四百三十二)而是由(5,4,3,2)4个数字组成的)

printf("%d",n%10); 这句的意思就是n和10取余,也就是n除以10后的余数,
n=n/10; 这句是让n变成n除以10
while(n>0) 这是一个循环,当n<=0时结束

就是反向打印出输入数的各位
如:输入123,打出321
sacnf("%d,&n"); //输入一个数
while(n>0)
{ printf("%d",n%10); //打出最末位
n=n/10; //除10得到的整数
}

n%10是得到除10的余数
n/10是得到除10的整数

n%10 是n除以10取余数 如果n=12那么n%10=2
因为你定义的n是INT类型的,所以输出n%10后,它执行n=n/10,正因为N是INT类型的,所以N/10是取整数部分的,如果N=13,那么N/10=1
当你输入小于0的N时,它不满足WHILE条件,所以一次都不循环
当你输入大于0的N时,它才开始循环,一旦N小于10了,它就跳出循环了
因为N小于10,那么它除以10的结果的整数部分一定为0,就不满足WHILE的条件了
现在懂了吗?

sacnf("%d,&n");
这里错了 是scanf
就是当N>0时 把这个数反过来打印.
n%10是就N取余数 155%10=5 余数是5
n=n/10; 之后N 就少了个位