y=-2
(二)完成实验项目
1.设计一个程序,判断从键盘输入的整数的正负性和奇偶性。 2.编写程序,实现下列函数功能:
3.已知奖金税率如下:(a代表奖金,r代表税率) a<500(元) r=0% 500≤a<1000 r=3% 1000≤a<2000 r=5% 2000≤a<5000 r=8% a≥5000 r=12%
输入一个奖金数,求税率、应交税款及实得奖金数。 3.输入某一年的年份和月份,计算该月的天数。 提示
(1)一年中的大月(1月、3月、5月、7月、8月、10月、12月),每月的天数为31天; (2)一年中的小月(4月、6月、9月、11月),每月的天数为30天;
(3)对于2月,则要判断该年是平年还是闰年,平年的2月为28天,闰年的2月为29天。 某年符合下面两个条件之一就是闰年: ①年份能被400整除;
②年份能被4整除,但不能被100整除。 4.输入平面直角坐标系中一点的坐标值(x,y),判断该点是在那一个象限中或那一条坐标轴上。
四、课后作业
1. 设计一个计算器,可以实现简单的四则运算; 2. 撰写实验报告。
五、实验机时
2个标准学时。
实验四 循环结构的程序设计
一、目的和要求
1.掌握循环结构while、do-while、for等语句格式、执行过程、使用方法及典型案例。 2.学习循环结构的嵌套使用。
3.掌握分支与循环综合程序的编写方法;
4.学习并熟悉break、continue的区别与使用。 5.学会常用数值与图形的编程方法。
二、实验设备及分组
1. Windows2000以上操作系统; 2. Visual C++6.0语言环境; 3. 每人一台PC机。
三、内容和步骤
(一)验证实验程序
开始 输入n sum=0 i=1 假 i≤n 真 sum=sum+i i++ 1.计算:S=1+2+3+4+?+n。 解:
程序流程图如图4.1所示,程序如下:
#include
void main()
输出sum 结束 图4.1 求累加和流程图
{
int i,n,sum;
cout<<\ cin>>n; sum=0; i=1;
while (i<=n) { sum=sum+i;
i++; }
cout<<\}
运行结果:
Input an integer:5
sum=15
2.裴波那契数列的前几个数为1,1,2,3,5,8,??,其规律为:
F1=1 (n=1) F2=1 (n=2) Fn=Fn-1+Fn-2 (n≥3) 编写程序求此数列的前面40个数。
分析:可设两个变量f1和f2,它们的初值为f1=1,即数列的第1项,f2=1,即数列的第2项,用一个循环结构来求数列的前40项,每次处理两项,所以共循环20次,进入循环后,首先输出f1、f2,然后令f1=f1+f2,即可求得第3项,再令f2=f2+f1,注意此时的f1已经是第3项了,所以可求得第4项;进入下一次循环时,首先输出第3、4项,然后按上述方法求得第5、6项,以此类推即可求得前40项。 解:
#include
long int f1,f2; int i;
f1=1;f2=1;
for (i=1;i<=20;i++) {
cout< if (i%2==0) cout< f1=f1+f2; f2=f2+f1; } } 例中“if”语句的作用是使在一行中输出4个数。 运行结果: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 3.求出100~200之间的所有素数,输出时一行打印五个素数。 分析:判断一个数a是否为素数,只需将它整除以2~a(取整)即可,如果都不能整除,则a就是素数。 解: #include n=0; for (a=100;a<=200;a++) { k=sqrt(a); for (i=2;i<=k;i++) if (a%i==0) break; if (i>k) { cout< //输出素数 //对素数统计个数 //若i>k,则i为素数 cout< cout< 程序运行后,输出,: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 4.编写程序用公式计算e的近似值。直到最后一项小于给定精度。 分析:这是一个累加求和的问题,仔细分析各项,可以发现从第二项开始,各项的值为前一项除以序号n: Xn?解: #include void main() { double e = 1.0,x = 1.0,y,z; int n=1; cout<< \精度:\ cin>>z ; y=1/x ; while(y>=z) { x*=n; y=1/x; e+=y; ++n; } cout< Xn?1n 思考: ? 将程序中while结构改写为do-while,观察程序的运行结果。 ? 增加“continue”或“break”语句,使程序在输入数据大于0.01时,显示“精度要求太低,请重新输 入”的提示。