《程序设计基础(C++)》实验教程 联系客服

发布时间 : 星期二 文章《程序设计基础(C++)》实验教程更新完毕开始阅读61884a2e08a1284ac950434d

<2>

#include

long fib ( int g ) { switch ( g ) { case 0 : return 0; case 1 :

case 2 : return 1; }

return ( fib( g – 1 ) + fib( g – 2 ) ) ; }

void main ( ) { long k; k = fib ( 7 ); cout << “k=” << k << endl ; } <3>

#include

int k = 1 ; void main() { int i = 4 ;

int fun (int);

fun( i ) ; cout << “(1) “ << i << ?,? << k << endl ; }

fun( int m ) { m += k; k += m; { char k = ?B?; cout << “(2)” << char(k-?A?) << endl ;

}

cout << “(3)” << m << ?,? << k << endl ;

} <4> # include

# include void subp ( ) {

static int x = 0 , y = 0 ; /*问题(1)*/ int a, b;

a = x – y ; b = x + y ;

cout << setw(5) << a << setw(5) << b << endl ; cout << setw(5) << x << setw(5) << y << endl ; }

int x , y ; void main() {

int a = 9,b = 3;

x = a – b ; y = a + b ; subp();

cout << setw(5) << a << setw(5) << b << endl ; cout << setw(5) << x << setw(5) << y << endl ; }

1)运行结果是:

2)如果问题(1)处语句改为static int x,y ; ,运行结果会发生改变么?为什么?

(2)编写程序实现下列问题的求解。

<1> 求方程ax2+bx+c=0的根,用三个函数分别求b2-4ac大于0、等于0和小于0时的根,并输出结果。从主函数输入a、b、c的值。

<2> 用函数实现将一个以字符串形式表示的十六进制数转换为一个十进制整数。例如,输入”A2”转换为162。

<3> 编写一个将十进制整数转换为十六进制字符串的函数。

<4> 编写出判断一个整数是否为素数的函数,并求出在2000以内的有十个以上的所有连续的非素数组。

<5>输入10个浮点数,求出它们的和以及平均值,要求用函数实现。

3.思考题

(1) 本实验内容(2)—〈1〉中,是否考虑了程序的完备性?考虑a、b、c等于零的各

种情况,完备程序。

*(2) 用递归和递推两种形式编程求函数 Hn(x)。Hn(x)定义为: H0(x)=1

H1(x)=2x

Hn(x)=2xHn-1(x)-2(n-1)Hn-2(x) n>1

实验五 指 针

1.实验目的要求

(1) (2) (3) (4) (5) (6)

掌握指针的概念,学会定义和使用指针变量。 学会使用数组指针和指向数组的指针变量。 学会使用字符串指针和指向字符串的指针变量。 了解指向指针的指针的概念以及其使用方法。 掌握指针、引用、数组做函数参数的传递机制。 *学会使用指向函数的指针变量。

2.实验内容

(1) 阅读下面程序,写出其运行结果。

<1>

#include

sub ( int x , int y , int *z ) { *z = y – x ; }

void main( ) { int a,b,c;

sub( 10 , 5 , &a ) ; sub( 7, a, &b ) ; sub( a, b, &c ) ;

cout << a << ?,? << b << ?,? << c << endl ; } <2>

#include #include #include

void main() {

int stre ( char[ ] ) ;

char str [ 10 ] , *p = str ; gets ( p ) ; cout << stre ( p ) << endl ; }

int stre ( char str[ ] ) {

int num = 0 ; while( * ( str + num ) != ?\\0? ) num ++ ; return ( num ) ; }

(2) 编写程序实现下列问题的求解。 〈1〉 输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由

小到大的顺序输出。 〈2〉 将一个3*3的矩阵转置,用一个函数实现。在主函数中用scanf输入以下矩阵元素:

{2,4,6,8,10,12,14,16,18}。将数组名作为函数参数。函数调用后在主函数中输出已转置的矩阵。 〈3〉 自己写一个strcmp函数,实现两个字符串的比较。两个字符串s1,s2由main函数输

入,strcmp函数的返回值也在main函数中输出。 〈4〉 动态链表的每个结点包括一个整数和一个后继指针。分别编写过程完成如下操作: (1) 从键盘输入数据建立链表,并按数据的输入顺序建立链表。 (2) 依次打印其中各结点的数据。

(3)*按与链表结点相反的次序打印各结点的值。 (4) 逐个释放所有结点的存储单元。

3.思考题

(1) 自定义函数完成strcpy、strcat、strlen等字符串函数的功能,比较实验三中实验内容

(2)— <5>用数组处理的区别。

(2) 用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。

N和各整数在主函数中输入。最后在主函数中输出。