C
chickabiddy
Unregistered / Unconfirmed
GUEST, unregistred user!
问题一:
#include "math.h"
main()
{
int h=10;
double x,y,d1,d2,d3,d4;
//为什么用double定义不对,换成float就正确了?
printf("input:"
scanf("%f,%f",&x,&y);
d1=sqrt(pow(x-2,2)+pow(y-2,2));
d2=sqrt(pow(x+2,2)+pow(y-2,2));
d3=sqrt(pow(x+2,2)+pow(y+2,2));
d4=sqrt(pow(x-2,2)+pow(y+2,2));
if (d1>1&&d2>1&&d3>1&&d4>1) h=0;
printf("height=%d/n",h);
}
问题二:
main()
{
long int num;
int indiv,ten,hundred,thousand,ten_thousand,place;
//分别代表个十百千万位,和位数
printf("input:"
scanf("%ld",&num);
if (num>9999)
place=5;
else
if (num>999)
place=4;
else
if (num>99)
place=3;
else
if (num>9)
place=2;
else
place=1;
printf("place=%d/n",place);//输出几位数
ten_thousand=num/10000;//万位
thousand=(int)(num-ten_thousand*10000)/1000;//千
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;//百
ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;//十
indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);//个
printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);
//输出各位数字
}
问题:为什么从倒数第五行起要加(int),如果直接写成:
thousand=(num-ten_thousand*10000)/1000
为什么结果就不对了。
我是这样理解的:num 是 long 型,ten_thousand 是 int 型,那么 ten_thousand*10000应该是 int 型,(num-ten_thousand*10000) 应该是 long 型,(num-ten_thousand*10000)/1000
也应该是 long 型,再将 long 型整数的低16位赋值给 int 型变量thousand,不用加(int)进行强制转换,赋值表达式可以将 long 型转换成 int 型.
#include "math.h"
main()
{
int h=10;
double x,y,d1,d2,d3,d4;
//为什么用double定义不对,换成float就正确了?
printf("input:"
scanf("%f,%f",&x,&y);
d1=sqrt(pow(x-2,2)+pow(y-2,2));
d2=sqrt(pow(x+2,2)+pow(y-2,2));
d3=sqrt(pow(x+2,2)+pow(y+2,2));
d4=sqrt(pow(x-2,2)+pow(y+2,2));
if (d1>1&&d2>1&&d3>1&&d4>1) h=0;
printf("height=%d/n",h);
}
问题二:
main()
{
long int num;
int indiv,ten,hundred,thousand,ten_thousand,place;
//分别代表个十百千万位,和位数
printf("input:"
scanf("%ld",&num);
if (num>9999)
place=5;
else
if (num>999)
place=4;
else
if (num>99)
place=3;
else
if (num>9)
place=2;
else
place=1;
printf("place=%d/n",place);//输出几位数
ten_thousand=num/10000;//万位
thousand=(int)(num-ten_thousand*10000)/1000;//千
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;//百
ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;//十
indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);//个
printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);
//输出各位数字
}
问题:为什么从倒数第五行起要加(int),如果直接写成:
thousand=(num-ten_thousand*10000)/1000
为什么结果就不对了。
我是这样理解的:num 是 long 型,ten_thousand 是 int 型,那么 ten_thousand*10000应该是 int 型,(num-ten_thousand*10000) 应该是 long 型,(num-ten_thousand*10000)/1000
也应该是 long 型,再将 long 型整数的低16位赋值给 int 型变量thousand,不用加(int)进行强制转换,赋值表达式可以将 long 型转换成 int 型.