所在位置:主页 > 程序语言 > 急求教:C语言的一个经典例题

急求教:C语言的一个经典例题

发布时间:2023-11-16 03:54来源:www.sf1369.com作者:宇宇

//(int)s/500,主要算法思想

#include<stdio.h>

int main()

{

float s,sum=0;

printf(输入工资数:);

scanf(%f,&s);

switch((int)s/500)

{

case 0:sum=s;break;

case 1:sum=s*0.95;break;

case 2:

case 3:sum=s*0.92;break;

case 4:

case 5:sum=s*0.90;break;

case 6:sum=s*0.85;break;

default:sum=s*0.85;

}

printf(实发工资数:%.2f\n,sum);

return 0;

}

/*

我试了两次,仅供参考:

输入工资数:4000

实发工资数:3400.00

输入工资数:2500

实发工资数:2250.00

至于输入工资到实发工资的公式可以根据题意写出来,可能跟yanh0606写的公式差不多

*/

#include<stdio.h>

#include<math.h>

int

main(void)

{

double

a,b,c;

double

x1,x2,x3,y1,y2,y3;

double

cosa,sina,square;

printf(请输入第一个点\n);

scanf(%lf,%lf,&x1,&y1);

printf(请输入第二个点\n);

scanf(%lf,%lf,&x2,&y2);

printf(请输入第三个点\n);

scanf(%lf,%lf,&x3,&y3);

/*

注意:

对于double类型来说

当用scanf给double类型赋值时

转换说明符应该是%lf,

或者%lf

而不是%f,

而是用printf给double

类型输出时,

则可以是用%f作为转换

说明符,

不过因此会缺失精度.

也就是类型反向提升

(类型降级)

所以为了准确度考虑,

建议是用%lf

*/

a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

b=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));

c=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));

cosa

=

(b*b+c*c-a*a)/(2*b*c);

sina

=

sqrt(1-cosa*cosa);

square

=

b*c*sina/2;

/*

此处三角形面积公式为s

=

b*c*sina/2

*/

/*

而不是a*b*sina/2,

这点是值得注意的

*/

printf(三角形的面积为:%.2lf\n,

square);

/*

square的类型是double,

因此使用%lf输出

*/

return

0;

}

/*

程序测试,

粗体

代表输入

*/

请输入第一个点

0,0

请输入第二个点

3,0

请输入第三个点

3,4

三角形的面积为:6.00

#include<stdio.h>

void

mian()

{

float

s,s1;

printf(输入原始知工资道数);

csanf(%f,&s);

if(s<=500)

s1=s;

else

s1=s/100;

switch(s)

{

case

5:

s1=500+(s-500)*0.05;

break;

case

10:

s1=500+(1000-500)*0.05+(s-1000)*0.08;

break;

case

20:

s1=500+(1000-500)*0.05+(2000-1000)*0.08+(s-2000)*0.1;

break;

default:

s1=500+(1000-500)*0.05+(2000-1000)*0.08+(3000-2000)*0.1+(s-3000)*0.15;

break;

}

printf(实发工专资数是属:%f,s1);

}

#include<stdio.h>

void mian()

{

float s,s1;

printf(输入原始工资数);

csanf(%f,&s);

if(s<=500)

s1=s;

else

s1=s/100;

switch(s)

{

case 5:

s1=500+(s-500)*0.05; break;

case 10:

s1=500+(1000-500)*0.05+(s-1000)*0.08;

break;

case 20:

s1=500+(1000-500)*0.05+(2000-1000)*0.08+(s-2000)*0.1;

break;

default:

s1=500+(1000-500)*0.05+(2000-1000)*0.08+(3000-2000)*0.1+(s-3000)*0.15;

break;

}

printf(实发工资数是:%f,s1);

}