(1)%5.2f表示输出的小数总共占5个字符长度的位置,小数保留2位,靠右对齐。 1.00算上小数点一共占了4位,所以输出左边要补上一个空格。
(2)当k==2时,while(k++<=2)的条件满足,所以测试完之后k的值增1变为3进入下一次循环。这时k==3测试循环条件不满足,但是测试完之后,k值仍然要增1之后才会退出循环。所以最后看k的值为4
(3)输入3 5 /回车之后,x==3, y==5, o=='/'。进入switch语句,因为o=='/',所以执行r=x/y; 即r=3/5=0.6,输出会补上一些无意义的0,从而变为0.600000。 PS: 你抄错了吧,不是r=r/y,应该是r=x/y;
(4)这道题要么是写的伪码,要么就是错的。 C语法里是不允许出现类似-1<=i<1这样的东西的。
1.我把程序补完整运行结果是真确的啊,
#include "stdio.h"
int main()
{
float a,b,c,t ;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b) {t=a ; a=b ; b=t;};
if(a>c) {t=a ; a=c ; c=t;};
if(b>c) {t=b ; b=c ; c=t;};
printf ("%5.2f\n%5.2f\n%5.2f\n", a,b,c);
return 0;
}
结果:
1.00
3.00
7.00
2. k++本身的值是k,用完以后才加1,所以当k=2时,k++<=2是成立的。判断完成以后k的值是3,接着判断k++<=2不成立,但是k的值在3的基础上又加了1即为4,其实就是k++在判断的时候就运算了,只是用的是k原来的值
3.输入应该是3 5 /中间都有空格的吧!主要就是一个switch直接跳到case '/' : r=r/y ;break ;所以r=3//5=0.600000
4. 如果-1<=i<1是界定i的取值范围的话貌似是错的,应该是-1<=i&&i<1,结果为:
2 3 1
不过这道题应该是这样理解判断-1<=i成不成立,成立为真1,不成立为假0,再判断是否小于1,所以-1<=i一开始就成立,值为1,1<1不成立,所以不执行循环,直接printf("%2d",i);结果是-1