}
要求:
(1)完善程序;
(2)编译运行程序,当输入25(时,输出为;当输入23(时,输出为。
(3)本程序判断一个数a是否为素数,最多循环a-2次,试根据以下的提示信息(3)优化
程序,使得循环次数最少。
3.仿照样例程序编写程序
(1)编写程序,求任意三个数的最小公倍数。
将文件命名为S4_4.cpp。
(2)编写程序,求100~200范围内的所有素数。
将文件命名为S4_5.cpp。
4.进阶提高
编程求1000之内的所有“完数”。
所谓“完数”是指一个数恰好等于它的因子之和。
例如,
6是完数,因为6=1+2+3。
将文件名命名为S4_6.cpp。
(完数:
6,28,496)
实验5循环语句(3)
1.输入以下程序,并写出程序的输出结果。
编程计算:
2+22+222+••…+2222222=?
#include
voidmain(void)
{intt=2;//定义变量,表示通项,初值为2
ints=0;//定义变量,表示通项的累加和,初值为0
for(inti=1;i<=7;i++)//设计循环,最后的通项是由7个2组成的正整数
{s=s+t;//求通项累加和
t=t*10+2;//通项迭代,用前一项推导出后一项
}
cout<<"2+22+222+...+2222222="<
}编译运行程序,程序的输出为。
2.根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。
从键盘上输入一个整数n的值,按下式求出y的值,并输出n和y的值(y用实数表示):
(n=5y=153),将文件命名为S5_2.cpp。
#include
voidmain(void)
{floaty=1,t=1;//t为通项,初值为1,即1!
y为结果,初值为1
intn;
cout<<"Inputn:
";//输出提示信息
cin>>n;//输入欲求的项数
for(inti=2;i<=n;i++)
{t=;//根据前一项求后一项
y=;//通项累加和
//输出结果
cout<<"1!
+2!
+3!
++"<="<}
要求:
(1)完善程序;
(2)编译运行程序,当输入为6(时,输出为。
3.仿照样例程序编写程序用迭代公式求,迭代公式为:
,要求初始值,精度为:
。
求出当时,对应的值,将文件命名为S5_3.cpp。
(答案:
0.90856)
4.进阶提高
编写程序计算下列公式的值:
精确到第n项,其中n=10,x=2.5分别由键盘输入。
将文件命名为S5_4.cpp。
(答案:
0.598472)
实验6函数
(1)
1.输入以下程序,并写出程序的输出结果。
计算函数当x=1和x=1.2时的函数值。
将文件命名为S6_1.cpp。
#include
floatfun(floatx)//函数fun求形参x的函数值,并将结果返回
{floaty;//定义函数值
y=2*x*x+3*x+5;//计算函数值
returny;//将结果返回
}
voidmain(void)
{floaty1,y2;//定义x为1和1.2时的函数值
y仁fun(1.0);//将1.0作为实参调用fun函数,即将1.0赋给形参x,函数值即为所求的结果
y2=fun(1.2);//将1.2作为实参调用fun函数,即将1.2赋给形参x,函数值即为所求的结果
cout<<"y1="<cout<<"y2="<}编译运行后的输出结果是。
2.根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。
(一)用牛顿迭代法求的一个实根。
其中,,迭代公式为:
,的初值为0,当时迭代结束。
将文件命名为S6_2.cpp(答案:
1)
#include
#include
f()//求形参x的函数f(x)=x*x+3*x-4的值
{floaty;
y=x*x+3*x-4;returny;
}
df()//求f(x)的导数2x+3的值
{floaty;
y=2*x+3;
returny;
}
voidmain(void)
{floatx1,x0;//定义存放新旧迭代值的变量
x1=0;//迭代变量赋初值
do
{x0=x1;//迭代循环,将新的迭代值变成旧的迭代值,再去求新的迭代值
x1=;//用旧的迭代值求新的迭代值
}while();//不满足结束条件,一直迭代循环
cout<<"x="<}
要求:
(1)完善程序;
(2)编译运行程序,输出为。
(二)利用二分法求的一个实根。
其中,,二分法的迭代公式为:
,其中和的初值从键盘输入,当时迭代结束。
将文件命名为S6_3.cpp。
#include#includefloatf(floatx)//根据形参x求函数f(x)=x*x+3*x-4的值
{returnx*x+3*x-4;}
voidmain(void)
{floatx1,x2,x0;
do//判断输入的初值是否满足要求
{cout<<"请输入初值x1和x2:
";cin>>x1>>x2;//输入初值
}while((f(x1)*f(x2))>0);//当方程的解不在输入的初值范围之内,重新循环输入初值do
{x0=(x1+x2)/2;//根据初值求方程的新的根x0
if(>0)//实际的根在x2和x0之间
x1=x0;//将x0作为新的x1
else//实际的根在x1和x0之间;//将x0作为新的x2
}while(fabs(f(x0))>1e-5);//判断x0是否是满足方程的解的精度cout<<"x0="<}要求:
(1)完善程序;
(2)编译运行程序,当输入02(时,程序的输出是;当输入-50(时,程序
的输出是;当输入0-2(时,程序的输出是,为什么?
3.仿照样例程序编写程序利用弦截法求的一个实根。
其中,,弦截法的迭代公式为:
,其中和的初值从键盘输入,当时迭代结束。
将文件命名为S6_4.cpp。
编写调试运行程序后,当输入02(时,程序的输出是;当输入-50(时,程序
的输出是;当输入0-2(时,程序的输出是,为什么?
4.进阶提高
用递归调用的方法编写S6_2.cpp,用牛顿迭代法求的一个实根。
其中,,迭代公式为:
,的初
值为0,当时迭代结束。
将文件命名为S6_5.cpp(答案:
1)
实验7函数
(2)
1.输入以下程序,并写出程序的输出结果。
设计一个程序,求出100〜200之间的所有素数。
(101103107……199共21个数)。
将文件命名为S7_1.cpp。
#include
intprime(intx)//函数功能:
判断x是否为素数,若是素数,函数返回值为1,否则,函数返回值为0
{for(inti=2;ireturn1;//执行完循环,x为素数,返回1
}
voidmain(void)
{for(inti=100;i<=200;i++)//将i从100到200依次循环,求出所有满足素数条件的i{if(prime(i)==1)//利用prime()函数判断循环变量i是否为素数cout<
}
}编译运行程序,程序的运行结果是。
2.根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。
输入一个整数n(2用函数intprime(intnum)来判
断整数num是否为素数,例如,若输入2310(,则输出:
2,3,5,7,11。
将文件命名为S7_2.cpp。
#include
intprime(intnum)//函数prime判断形参num是否为素数,若为素数,函数返回1,否则函数返回0
{for(inti=2;ireturn0;
}
voidmain(void)
{intn;
cout<<"输入一个整数n:
";cin>>n;//从键盘输入一个整数
for(inti=2;i<=n/2;i++)//将i从2开始循环,判断i是否为n的因子{if()//若i为n的因子且i为素数
cout<
}
cout<}
要求:
(1)完善程序;
(2)编译运行程序,当输入2145(,程序的输出是。
3.仿照样例程序编写程序
写一个函数验证哥德巴赫猜想;一个不小于6的偶数可以表示为两个素数之和,如6=3+3,
8=3+5,10=3+7……。
在主函数中输入一个不小于6的偶数n,函数中输出以下形式的结果:
若输入34,
程序输出为:
34=3+31
34=5+29
34=11+23
将文件命名为S7_3.cpp。
编写程序,编译运行,当输入为56(时,输出为;当输入为122(时,输出为
4.进阶提高
编写函数intfun(intnum),计算整数num的各位上的数字之积,并将计算结果作为函数值返回。
如输入263(,则返回36(36=2X6X3)。
要求在主函数中可以反复调用函数fun,连
续输入多个正整数并计算结果,直到输入0为止。
将文件命名为S7_4.cpp。
编写程序,编译运行,当输入为24(3