c++实验答案 下载本文

内容发布更新时间 : 2024/11/16 19:38:32星期一 下面是文章的全部内容请认真阅读。

print(b); sort2(b);

cout<<\输出排好序的10个数:\print(b); sort3(b);

cout<<\输出排好序的10个数:\print(b); }

程序运行结果: 请输入10个数:

2 6 9 11 5 61 25 32 22 14 19 输出排好序的10个数:

2 5 6 9 10 11 14 22 输出排好序的10个数:

32 25 22 14 11 10 9 6 输出排好序的10个数:

2 5 6 9 10 11 14 22 (2)

①递归公式为:

x ; n=1 px(n)=

px(n-1)+(-1)n-1xn ; n>1 ②递归结束条件: n=1 ③递归约束条件: n>1 # include # include void main(void) { float x; int n;

float px(float,int);

cout<<\ cin>>x>>n;

cout<<\}

float px(float x,int n) { float p;

if (n==1) p=x; else

p=px(x,n-1)-pow(-1,n)*pow(x,n); return p; }

程序运行结果:

25 32 5 2 25 32 please input x,n:2 4 px=-10

(3) 方法一,用字符串复制与连接函数。 # include # include # define N1 10 # define N2 10 # define N 20

void str_cat(char s1[],char s2[],char s[]) { strcpy(s,s1); strcat(s,s2); }

void main(void)

{ char str[N],str1[N1],str2[N2]; cout<<\ cin.getline(str1,80);

cout<<\ cin.getline(str2,80); str_cat(str1,str2,str); cout<

方法二,用while语句编程实现。 # include # include # define N1 10 # define N2 10 # define N 20

void str_cat(char s1[],char s2[],char s[]) { int i=0,j=0; while (s1[i]) { s[i]=s1[i]; i++; } while (s2[j]) { s[i]=s2[j]; i++; j++; }

s[i]='\\0'; }

void main(void)

{ char str[N],str1[N1],str2[N2];

cout<<\ cin.getline(str1,80);

cout<<\ cin.getline(str2,80); str_cat(str1,str2,str); cout<

程序运行结果:

Please input String1: I am student

Please input String2: And You are student too I am studentAnd You are student too (4)

#include #include #include #define N 11

float zsin(float y) fac() { int i;

float s=0,p=1.0,t; p=y;

for(t=1,i=1;fabs(1.0/t)>=0.00001; i+=2) { s=s+p/t; p=p*y*y;

t= -t*(i+1)*(i+2); }

return(s); }

void main(void) {

float x,sn;

cout<<\ \ cin>>x; sn=zsin(x);

cout<

程序运行结果: input x: 3.14159 sin(x)=-0.0752174 (5)

#include

//定义计算K阶乘的函数 #include #define N 11

float fac(int k) //定义计算K阶乘的函数fac() { int i;

float t=1.0;

for (i=1;i<=k;i++) t=t*i; return(t); }

float cmn(int m1,int n1) //定义计算组合数 的函数cmn() { float p;

p=fac(m1)/(fac(n1)*fac(m1-n1)); //调用求阶乘函数fac() return(p); }

void main(void) { int c[N][N],m,n; for(n=0; n

for(m=0; m<=n;m++) { //调用cmn函数

c[n][m]= cmn(n,m); }

for(n=0;n

{ for(m=0; m<=n;m++)

cout<

实验七

1.实验目的 通过本次实验

(1)掌握一维、二维数组指针变量的定义格式与引用方法; (2)掌握字符串指针变量的定义格式与引用方法;

(3)学会用数组指针变量完成数组元素的数据处理,如求和、求最大值、最小值等; (4)学会用字符串指针变量处理字符串的比较、连接与测长度; (5)掌握指针与数组作为函数参数的程序编写方法。 2.实验要求

(1)编写实验程序

(2)在VC++运行环境中,输入源程序; (3)编译运行源程序;

(4)输入测试数据进行程序测试; (5)写出实验输入数据与运行结果。 3.实验内容

(1)编写程序,用4种方式求整型一维数组a[10]的平均值。4种方式是指4种不同的数组元素表达方式。

实验数据:10,20,30,40,50,60,70,80,90,100

(2)编写程序,用表7.1中的数组元素表示法中的第一种求实型二维数组a[3][3]两条对角线元素之和。

实验数据:10,25,90,80,70,35,65,40,55 (3)用指针变量编写下列字符串处理函数:

l 字符串拼接函数,void str_cat( char *p1,char *p2){函数体} l 字符串比较函数,int str_cmp( char *p1,*char *p2) {函数体} l 取字符串长度函数,int str_len( char *p){函数体}

在主函数中输入两个字符串,对这两个字符串进行比较,并输出比较结果。然后将两个字符串进行拼接,输出拼接后的字符串及其长度。 实验数据:\,\

(4)用指针与数组作为函数参数,按如下四种情况用擂台法对一维实型数组a[10]进行降序排序。

l 函数的实参为数组名,形参为数组。 l 函数的实参为数组名,形参为指针变量,。 l 函数的实参为指针变量,形参为数组。 l 函数的实参为指针变量,形参为指针变量。 实验数据:10,25,90,80,70,35,65,40,55,5 4.解答参考 (1)

方法一 (指针方式,改变p,用 *p访问元素) #include #define N 10 void main(void)

{ float a[N],sum,*p; cout<<\ for (p=a;p>*p;

for (p=a,sum=0;p

cout<<\}

方法二 (指针方式,首地址+位移,用 *(p+i)访问元素) #include #define N 10 void main(void)

{ float a[N],sum,*p=a; int i;

cout<<\ for (i=0;i>*(p+i); sum=0;