我做的程序哪里错了

来源:百度知道 编辑:UC知道 时间:2024/09/25 02:23:14
程序的目的是输入一个三位数后,分别取得个,十,百位的值.怎么结果不是的.

#include<stdio.h>
void main()
{
int a,x,y,z;
scanf("%d",&a);
if(a>=100&&a<999)
{
x=floor(a/100);
y=floor((a-x*100)/10);
z=a-100*x-10*y;
printf("%d,%d,%d",x,y,z);
getch();
}
}
顺便帮我看一下这个是怎么回事?怎么输出是1.000000
#include<stdio.h>
void main()
{
int i;
float z;
z=0;
for(i=1;i<=10;i++)
{z=z+1/i;}
printf("%f",z);
getch();
}

1> 把floor函数调用去掉, 因floor返回值为浮点类型

x=a/100;
y=(a- x * 100) /10;
z= a-x*100-y*10;

2> 把z = z+ 1/i; 改为: z=z+1.0/i;
因1 / i, 为整形数相除, 对于i>1时, 返回值都为0

#include<stdio.h>
void main()
{
int a,x,y,z; //分别表示输入的数,百位,十位,个位;
scanf("%d",&a);
if(a>=100&&a<999)
{
x = a/100; //百位
y = (a%100)/10; //十位
z = (a%100)%10; //个位
printf("%d,%d,%d",x,y,z);

}
}

头加上#include <conio.h>
把floor去掉. 可以了!
不知LZ的floor是什么意思?

第二个程序加上(float)
for(i=1;i<=10;i++)
{z=z+(float)1/i;}

#include<stdio.h>
void main()
{
int a,x,y,z;
scanf("%d",&a);
if(a>=100&&a<999)
{
x=a/100;
y=(a-x*100)/10;
z=a-100*x-10*y;
printf("%d,%d,%d",x,y,z);
}
}
反正这样就好了,原来你的FLOOR函数我不懂什么意思。

补充问题:
输出就是1.00000,十次循环里面,第一次,z = z+1/