}
3.编译、链接和执行程序
实验习题
1.设计一个C++控制台应用程序,运行时,输入两个正整数,计算并输出这两个数之
间所有不能被3和7整除的数的和。
2.设计一个利用下列公式计算圆周率π的C++程序,要求精度控制在0.0000001内。
π=4×(1/1-1/3+1/5-1/7+…)
提示:
括号中是一个数列的和,数列的第n项是1/(2n-1),奇数项为正,偶数项为
负。
利用循环逐项求和,直到该项的绝对值小于0.0000001为止。
3.编写一个控制台应用程序,运行时输入10个整数,输出其中的最大数和次大数。
提示:
以数组存储逐个输入的10个整数,查找其中的2个最大的数时,首先将数组的
前2个元素的较大者初始为最大数,较小的初始为次大数,然后从第3个数开始逐个与最大
数和次大数比较,比较时仅有两种情形需考虑:
①当前元素比最大数大,则原最大数成为
次大数,当前数为最大数;②当前元素仅比次大数大,则当前数为次大数。
4.编写一个控制台应用程序,输出一个6行的杨辉三角形。
提示:
以二维数组存储杨辉三角形的每个元,初始化其第1行第1列、第2行第1列、
第2行第2列等3个元素的值为1,之后从第3行开始逐行计算各列元素的值,计算方法为:
第1列和最后一列(第i行有i列)的值为1,其余元素的值是上一行前一列和上一行上一列
的数值的和。
最后逐行输出显示。
10
实验三指针、引用与函数
实验目的
�掌握指针的定义和依据指针访问数据的方法
�掌握引用的概念和用法
�掌握函数的声明、定义和调用
�掌握函数中指针或引用类型参数的用法
实验示例
[例3-1]编写一个C++控制台应用程序,将某个位数不确定的正整数进行三位分节后输
出,例如输入1234567,则输出1,234,567。
解题思路:
自定义一个函数,其中实现将传递的整数转换成字符串,再定义另一个函数将字符串由
后向前进行分节,即每3个字符插入一个逗号,利用指针的运算寻找插入的位置。
实现步骤:
1.新建Win32ConsoleApplication程序项目
2.在文件编辑区窗口编写如下程序代码:
#include
#include
char*separate(int);
char*inttostr(int);
voidmain()
{
intn;
char*p;
cout<<”输入一个正整数:
”;
cin>>n;
p=separate(n);
cout<<”分节输出:
”<
}
char*separate(intnum)
{
char*p1,*p2=inttostr(num),*p3,*pt;
intcount=1;
p1=p2;11
while(*p2++!
=’\0’);
p3=p2-1;//p3指向最后一个字符
p2=p2-2;
while(p2>p1)//由后向前
{
if(count==3)
{
pt=p3++;
while(pt>=p2)*(pt+1)=*pt--
*p2=’,’;
count=0;
}
count++;
p2--;
}
returnp1;
}
char*inttostr(intnum)//将整数转换成对应数字字符串
{
char*p,*p1,*p2,temp;
p=p1=p2=newchar[30];
while(num)
{
*(p2++)=num%10+’0’;
num/=10;
}
*(p2--)=’\0’;
while(p2>p1)
{
temp=*p2;
*p2--=*p1;
*p1++=temp;
}
returnp;
}
3.编译、链接和执行程序
[例3-2]编写程序,实现两个字符串变量的交换。
解题思路:
使用引用来交换两个字符串指针的值。
12
实现步骤:
1.新建Win32ConsoleApplication程序项目
2.在文件编辑区窗口编写如下程序代码:
#include
#include
voidswap(char*&x,char*&y)
{
char*temp;
temp=x;x=y;y=temp;
}
voidmain()
{
char*ap,*bp;
cout<<”输入一个字符串:
”;cin>>ap;
cout<<”输入另一个字符串:
”;cin>>bp;
swap(ap,bp);
cout<<”第一个字符串:
”<cout<<”第二个字符串:
”<}
3.编译、链接和执行程序
[例3-3]例4-3的斐波那契数列:
0、1、1、2、3、5、8、13、…。
除第1项为0和第2
项为1外,数列的任一项是其前2项的和。
编写计算数列的第n项的函数,调用函数输出数
列的第30项。
解题思路:
斐波那契数列可以如下形式的函数表示:
0当n=1时,
f(n)=1当n=2,
f(n-1)+f(n-2)其它
自定义一个递归函数,返回参数n指定的数列项,计算方法是:
当n=1时,函数返回0;
当n=2时,函数返回1;否则,返回用参数n-1调用自身函数的值与用参数n-2调用自身函
数的值的和。
实现步骤:
1.新建Win32ConsoleApplication程序项目
2.在文件编辑区窗口编写如下程序代码:
#include
intFib(intn)
{
switch(n)
{13
case1:
return0;
case2:
return1;
default:
returnFib(n-1)+Fib(n-2);//递归调用函数
}
voidmain()
{
cout<<”数列的第30项是:
”<}
3.编译、链接和执行程序
实验习题
1.编写一个控制台应用程序,运行时输入一个字符串,然后逆序输出该字符串。
2.将实验四习题1中查找n个元素的一维数组中的最大值和次大值的算法定义成一个
函数,改造并完成该题。
14
实验四类与对象
实验目的
�掌握类和对象的概念、定义和访问方法