tax=(a-80000)*0.45+25000*0.35+20000*0.3+26000*0.25+4500*0.2+3000*0.1+1500*0.03;
printf("%.2f\n",tax);
i=i+1;
}
while(i<=repeat);
}
6.极限求值
编程计算:
1/1!
-1/3!
+1/5!
-1/7!
…+1/(2n-1)!
的值,直到计算到超出数有效表示范围为止。
请输出上述表达式的值,以及这时n的值。
#include
voidmain()
{
intb=1,m=1,n;
floata=1,t;
do
{
m=m+1;
b*=m;
m=m+1;
b*=m;
t=-1./b;
a=a+t;
printf("b=%d,m=%d,a=%d\n",b,m,a);
}
while(b<=2147483647&&b>0);
n=(m+1)/2;
printf("a=%f,n=%d\n",a,n);
}错误原因一直减没有加
7.数列求和
N为自然数,a为1~9之间的数字,编程计算a+aa+aaa+……+aa…a(n个a)的值,要求n和a由用户从键盘输入。
并请输出上述表达式的结果值。
程序代码:
#include
#include
voidmain()
{
inti=1,a,b,n,t;
scanf("%d,%d",&n,&a);
t=b=a;
while(i{
b=b+a*pow(10,i);
t=t+b;
i=i+1;
}
printf("theresultis%d\n",t);
}
8.素数求和
输入2个正整数m和n(1<=m,n<=500),统计并输出m和n之间的素数的个数以及这些素数的和(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
程序代码:
#include
#include
voidmain()
{
intm,n,i,k,t=0,s=0;
scanf("%d,%d",&m,&n);
do
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>k)
{
t=t+1;
s=s+m;
}
else
;
m=m+1;
}
while(m<=n);
printf("number=%d,sum=%d\n",t,s);
}
错误原因:
1不是素数,当m=1时应该都减去1
9.数字金字塔
数字金字塔是由1到N的数字构成的一个类似金字塔形状的数阵。
其中,第一层由1个数字1构成,第二层由2个数字2构成,第三层由3个数字3构成(每层均比上一层多1个数字,且每一层的数字之间都有一个空格格开)……
例如,当N=4时,一个4层的数字金字塔如下:
□□□1
□□2□2
□3□3□3
4□4□4□4
为了方便描述,上图中的“□”表示空格。
请你编写程序,对于给定的N,输出相应的数字金字塔。
输入:
数据从键盘输入。
输入只有一行一个整数N(1输出:
输出到屏幕。
有N行,为一个对应的数字金字塔。
样例输入
3
样例输出
1
22
333
程序代码:
#include
voidmain()
{
intn,i,p,q;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(p=1;p<=n-i;p++)
printf("");
for(q=1;q<=i;q++)
printf("%d",i);
printf("\n");
}
}
10.谷场里的老鼠与猫
有4座圆柱形谷仓,谷仓底面圆心位置分别为(5,0),(-5,0),(0,-5),(0,5),谷仓底面直径为5米,谷仓高度为10米。
见下图
今有一只猫和一只老鼠,如果猫只会沿谷仓壁垂直爬上爬下,在地面上左右平移或者前后平移爬行(注意:
本题中假设猫不会走斜线,谷仓下面可以通行)。
编程实现以下的功能:
输入老鼠与猫的坐标位置;
输出猫爬行到老鼠位置的最短路径距离。
程序代码:
#include
voidmain()
{
floata1,a2,b1,b2,c1,c2,s;
floatf(floatx,floaty);
printf("Pleaseinputthelocationofthemouse:
");
scanf("%f,%f,%f",&a1,&b1,&c1);
printf("Pleaseinputthelocationofthecat:
");
scanf("%f,%f,%f",&a2,&b2,&c2);
if(a1==a2&&b1==b2)
s=f(c1,c2);
else
s=f(a1,a2)+f(b1,b2)+c1+c2;
printf("Theshortestdistanceis%f.",s);
}
floatf(floatx,floaty)
{
floatz;
if(x>y)
z=x-y;
else
z=y-x;
return(z);
}
11.方程求根
按照下述要求,分别用两种方法求方程式为:
的根。
l用牛顿迭代法求方程在1.5附近的根;
l用二分法求方程在(-10,10)之间的根。
l
(1)程序代码:
#include
#include
floatf(floatx)
{return2*x*x*x-4*x*x+3*x-6;}
floatfd(floatx)
{
return6*x*x-8*x+3;
}
voidmain()
{
floatx0=1.5,x=1.5;
do
{
x0=x;
x=x0-f(x0)/fd(x0);
}
while(fabs(x-x0)>1e-5);
printf("theasymtomaticrootis%f",x0);
}
(2)程序代码:
#include
#include
floatf(floatx)
{
returnx*(2*x*(x-2)+3)-6;
}
voidmain()
{
floata=-10,b=10,m,n;
while(fabs(a-b)>1e-4)
{
m=(a+b)/2;
if(f(m)==0)
{
n=m;
break;
}
if(f(a)*f(m)<0)
b=m;
else
a=m;
}
n=m;
printf("therootis%f\n",n);
}