《程序设计基础(C++)》实验教程及完整答案(6)

2018-12-06 21:31

cout<<\<

int

a[n]={10,21,54,2,3,53,1,5,122,8}; //排序 int t,j,i; int mid;

int low=1,high=n; int num;

for(i=0;i<10;i++) { t=a[i]; j=i-1;

while(j>=0 && t

}

a[j+1]=t; }

cout<<\排序后\

for(i=0;inum;

while(low<=high) {

<5>#include

int main() { char string1[80],string2[40]; int i=0,j=0;

cout<<\输入字符串string1:\\n\

cin>>string1;

cout<<\输入字符串string2:\\n\ cin>>string2;

while(string1[i]!='\\0'){

i++;

}

while(string2[j]!='\\0'){

string1[i++]=string2[j++];

mid=(low+high)/2; if(num==a[mid]) break;

else if(num

}

if(num==a[mid])

cout<<\所查找的数在第\个位置\else

cout<<\不存在这个数\

return 0; }

}

string1[i]='\\0'; cout<<\串联后的字符串为:\ return 0;

}

3.分析与思考

<1> 用数组存储数据,实现筛选法求素数问题的求解。要求求出2到1000之间的所有素数。 注意: 筛选法求出2~N间的所有素数的方法是:首先将这些数全部放入一个数组中,然后

重复下面的操作直到数组为空为止:

a.找出其中的最小数K,则K一定是一个素数,因此可输出。

b.从数组中删除K及其所有倍数。 <2> 判断一个二维数组是否有“鞍点”,即该位置上的元素在该行上最大,在该列上最小。如有,输出其行列号和值;若无,给出提示。(数组元素的值用scanf输入) <3> 编写程序将一个16进制数转换为十进制。任意进制如何转换为十进制?

<4> 本实验内容(1)— <4>习题所完成的功能是否有不完备之处?若有,请完备这个程序。 解:

<1>#include using namespace std;

const int max=10000; int main() {

int a[max]; int n=2,j,i;

for(i=0;i<=1000;i++) a[i]=1; while(n<1000){

j=n; do{

}

}

j+=n;

a[j]=0;

}while(j<=1000); n++;

while(a[n]==0) n++;

for(i=2;i<=1000;i++) if(a[i]) cout<

cout<

<2>#include #include

const int row=3; const int col=3; int main() {

int i=0,j=0,d; int b,c,count=0;

int a[row][col]; for(i=0;i

for(j=0;j

for(i=0;i

b=i;c=j;

for(j=0;j

if(a[b][c]<=a[i][j]){ count++;

b=i;

c=j;

} }

for(d=0;d

if(a[d][c]

if(d==row) {

cout<<\\

<3>#include #include

using namespace std;

int main() { char

c[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; int n,count=0; char r[100]; int s=0; cin>>r;

while(r[count]!='\\0') count++;

for(int i=0;i

<4>没有数组倒置功能 #include using namespace std; void main() { int a[3][3]; int i,j,t;

for(i=0;i<3;i++)

for(j=0;j<3;j++) cin>>a[i][j]; for(i=0;i<3;i++) }

}

if(count==0) cout<<\没有鞍点

\

}

for(int j=0;j<16;j++) if(r[i]==c[j]) {

s+=j*pow(16,count-1-i); break;

}

cout<

}

{ for(j=0;j

a[i][j]=a[j][i]; a[j][i]=t; }

cout<

}

for(i=0;i<3;i++) {

for(j=0;j<3;j++) cout<

} }

实验四 函 数

1.实验目的要求

(1) 理解并掌握如何模块化的用函数来构建程序。

(2) 掌握定义函数的方法,了解函数的重载方法,了解内联函数的机制。 (3) 掌握函数间传递信息的机制。

(4) 掌握函数的嵌套调用(和递归调用)的方法。

(5) 掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法。

2.实验内容

(1)阅读下列程序,写出其运行结果,并指出其功能。

<1>

#include int hcf( int u , int v ) {

int a,b,t,r; if (u > v) { t = u ; u = v ; }

v = t ;

a = u ; b = v ;

while ( ( r = b % a ) != 0 ){ b = a ;

a = r ;

}

return( a ) ;

}

int lcd( int u , int v , int h ) { }

void main() {

int u , v , h , l ; cin >> u >> v ;

h = hcf ( u , v ) ;

cout << “hcf=” << h << endl ; return( u * v / h ) ;

l = lcd ( u , v, h ) ; cout << “lcd=” << l << endl ; }

输入:48,32 解:输出hcf=16

Lcd=96

功能:输入两个整形数据后,函数hcf先对两者进行判断,较小的给u,较大的给v,然后循环相除,取得最大公约数,并返回该值。然后进入第二个函数,取得最小公倍数。则该程序输出的为输入两数的最大公约数和最小公倍数。

<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;


《程序设计基础(C++)》实验教程及完整答案(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:哈工大化工原理实验思考题答案及哈工大仪器分析实验思考题答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: