admin 管理员组

文章数量: 887172


2024年1月27日发(作者:magento2重写block)

第一章作业答案.

1。 编写程序,将华氏温度转化为摄氏温度:公式:C=(5/9)*(F—32)

程序代码:

#include〈iostream>

using namespace std;

void main()

{float F,C;

cout〈<”Please input F:”;

cin〉>F;

C=5*(F-32)/9。0;

cout<<”C="<〈C<〈endl;

}

运行结果:

2。编写程序,输入圆柱体的半径r和高h,计算圆柱体的体积.

程序代码:

#include〈iostream〉

using namespace std;

#define PI 3。14159

void main()

{float r,h,v;

cout<<”Please input r h:”;

cin〉>r>〉h;

v=PI*r*r*h;

cout〈<”v="〈

运行结果:

3.输入三角形的三条边a,b,c,利用海伦公式计算三角形的面积area。

若 则area=

程序代码:

#include〈iostream〉

#include〈math。h〉

using namespace std;

void main()

{float a,b,c,p,area;

cout〈〈"Please input a b c:";

cin>〉a〉>b>>c;

if((a+b〉c)&&(b+c>a)&&(a+c〉b))

{p=(a+b+c)/2.0;

area=sqrt(p*(p—a)*(p—b)*(p-c));

cout<<"area=”〈

}

else cout〈<"input error!"〈

运行结果:

4。输入a,b,c的值,求一元二次方程:

的解。

程序代码:

#include〈iostream>

#include

using namespace std;

void main()

{float a,b,c,p,x1,x2;

cout〈〈"Please input a b c:";

cin>>a>>b〉>c;

p=b*b—4*a*c;

if(p>=0)

{x1=(—b+sqrt(p))/(2*a);

x2=(-b—sqrt(p))/(2*a);

cout〈<”x1=”〈

cout<〈"x2=”〈

}

else cout<<"NO real root!”;

}

运行结果

第二章作业答案

1. 输入一个整数,计算该数的阶乘。

程序代码:

#include

using namespace std;

void main()

{int i,n,p=1;

cin〉>n;

for(i=1;i〈=n;i++)

p=p*i;

cout<〈n〈<"!="〈

}

运行结果:

2. 连续输入若干个整数,输入0结束.统计其正整数的个数,并计算其中正整数的总和、平均值并输出.

程序代码:

#include

using namespace std;

void main()

{int a,n=0;

float avg,sum=0;

do

{cin〉〉a;

if(a〉0){n++;sum+=a;}

}while(a!=0);

avg=sum/n;

cout<<”n=”<

cout〈<"avg=”〈

cout<〈"sum=”<〈sum〈

3。 输出所有的水仙花数。所谓“水仙花数”是一个三位数,其各位数字的立方和等于该数本身。如153=13+53+33

程序代码:

#include〈iostream>

using namespace std;

void main()

{int a,b,c,n;

for(n=100;n<1000;n++)

{a=n%10;

b=n%100/10;

c=n/100;

if(n==a*a*a+b*b*b+c*c*c)

cout<

}

运行结果:

第三章作业答案

1. 编写程序输出两个数的最大公约数和最小公倍数.

2。 计算100-——300之内所有素数的和。

3。 计算s=1-1/3+1/5-1/7+…1/99

4. N是一个四位数,它的9倍恰好是其反序数(例如:123的反序数是321),求N的值。

第一题:

程序代码:

//用辗转相除法求最大公约数;

#include〈iostream>

using namespace std;

void main()

{int m,n,r,temp;

cin>〉m〉〉n;

temp=m*n;

while(r=m%n)

{m=n;

n=r;

cout<<"最大公约数=”〈

cout〈<”最小公倍数="<

}

运行结果:

第二题:

程序代码:

#include〈iostream>

using namespace std;

void main()

{int n,i,s=0;

for(n=100;n<300;n++)

{for(i=2;i〈n;i++)

if(n%i==0)break;

if(i==n)s+=n;

}

cout<<”s=”〈

}

运行结果:

第三题:

程序代码:

#include〈iostream〉

using namespace std;

void main()

{int n=1;

float s=0,f=1,p;

for(n=1;n<100;n+=2)

{p=f/n;

s=s+p;

f=—f;

}

cout〈〈”s=”<

}

运行结果:

第四题:

程序代码:

#include

using namespace std;

void main()

{int n,a,b,c,d;

for(n=1000;n<10000;n++)

{a=n/1000; //千位

b=n%1000/100;//百位

c=n%100/10; //十位

d=n%10; //个位

if(9*n==d*1000+c*100+b*10+a)

cout〈〈n〈

}

运行结果:

第四次作业答案

1。 编写两个函数,分别计算两个整数的最大公约数和最小公倍数,并在主函数中调用该函数,并输出结果。

2. 编写一个判断素数的函数,函数原型为: int isprime(int n),在主函数中调用该函数,计算100—1000之间所有素数的和。

3. 编写一个函数,f(n)=

,并在主函数中输出f(10)的值。

(说明自然对数 ln的函数原型为 double log(float x) .

4. 编写一个计算阶乘的函数,函数原型为 int fac(int n),在主函数中调用该函数,计算:

S=M!+N! 。

第一题:

程序代码:

#include

using namespace std;

//求最大公约数

int gcd(int m,int n)

{int r;

while(r=m%n)

{

m=n;n=r;

}

return n;

}

//求最小公倍数

int lcd(int m,int n)

{return m*n/gcd(m,n);

void main()

{int a,b;

cin>〉a〉>b;

cout〈〈"最大公约数为:"〈

}

运行结果:

第二题:

程序代码:

#include〈iostream>

using namespace std;

//判断素数的函数,若n为素数,函数返回int isprime(int n)

{int i;

for(i=2;i

if(n%i==0)return 0;

return 1;

}

void main()

{int i,s=0;

for(i=100;i〈1000;i++)

if(isprime(i))s=s+i;

cout<〈"s=”<〈s〈

运行结果:

第三题:

程序代码:

1,否则返回0;

#include〈iostream〉

#include〈math.h〉

using namespace std;

double f(int n)

{int i;

double s=0;

for(i=2;i〈=n;i++)

s=s+log(i);

return sqrt(s);

}

void main()

{

}

运行结果:

第四题:

程序代码:

#include〈iostream>

using namespace std;

//用递归编写计算阶乘的函数

int fac(int n)

{if(n==0||n==1)return 1;

cout<

else return n*fac(n—1);

void main()

{int M,N,s;

cin〉>M>>N;

s=fac(M)+fac(N);

cout<〈M<<”!+”〈

运行结果:

第五章

第六次上机内容

1、 定义一个3行4列的数组,计算所有数据的平均值,并输出最大值和最小值和它的行号和列号.

2、 编写程序,实现一个一维数组的反序存放。

3、 用选择排序法实现10整数由小到大排序.

4、 用冒泡法实现10整数由大到小排序。

第一题:

程序代码:

#include〈iostream.h〉

void main()

{int a[3][4]={{12,6,25,10},{14,9,20,16},{30,22,5,21}};

int i,j,m,n,k,l,max,min;

max=min=a[0][0];

m=n=0;

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

for(j=0;j〈4;j++)

if(a[i][j]>max){max=a[i][j];m=i;n=j;}

else if(a[i][j]

cout<<"max="<〈max〈〈endl;

cout<<"行号:”〈

cout〈〈"min="〈

cout<<"行号:"〈

}

运行结果:

第二题:

程序代码:

#include

#define N 6

void main()

{int a[N]={12,10,20,21,30,25};

int i,t;

for(i=0;i〈N/2;i++)

{t=a[i];a[i]=a[N-i—1];a[N—i-1]=t;}

for(i=0;i

cout<〈a[i]〈<" ”;

cout<

运行结果:

第三题:

程序代码:

#include〈iostream.h>

#define N 10

//选择排序

void main()

{int a[N]={30,21,15,38,25,35,18,28,45,20};

int i,j,t,k;

for(i=0;i〈N-1;i++)

{k=i;

for(j=i+1;j〈N;j++)

if(a[j]

if(k!=i){t=a[i];a[i]=a[k];a[k]=t;}

for(i=0;i

cout<

cout〈〈endl;

}

运行结果:

第四题:

程序代码:

#include

#define N 10

//冒泡排序,由大到小排序

void main()

{int a[N]={30,21,15,38,25,35,18,28,45,20};

int i,j,t,k;

for(i=0;i〈N—1;i++)

{k=0;

for(j=0;j〈N—i—1;j++)

if(a[j]

{t=a[j];a[j]=a[j+1];a[j+1]=t;k=1;}

if(k==0)break;

}

for(i=0;i〈N;i++)

cout<

cout<〈endl;

运行结果:

第七次作业

1.定义一个二维数组int a[3][4],分别用指针法和下标法输出其内容.

2.用数组作为函数参数,并通过函数调用还回最大值,最小值和平均值。函数原型维:

void fun(int a[10], int *max,int *min,float *avg)

3.编写一个函数void fun(int a[],int n),将a[]中的n个元素按反序存放,在main函数中调用该函数,分别用数组和指针作为实参.

4.用冒泡法或选择法编写一个排序的函数,然后在主程序中调用该函数实现10个整数的排序。

第一题

程序代码:

#include〈stdio。h〉

void main()

{int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

int i,j;

int *p;

int (*pp)[4];

//用下标法实现;

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

{for(j=0;j〈4;j++)

printf(”%3d",a[i][j]);

printf(”n”);

}

//用列指针实现;

p=&a[0][0];

for(i=0;i〈12;i++)

printf("%3d”,*(p+i));

printf("n");

//用行指针实现;

pp=a;

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

{for(j=0;j<4;j++)

printf(”%3d”,*(*(pp+i)+j));

printf(”n");

运行结果截图:

第二题:

程序代码:

#include

void fun(int a[10], int *max,int *min,float *avg)

{int i,s=0;

*max=*min=a[0];

for(i=0;i〈10;i++)

{if(*max

else if(*min>a[i]) *min=a[i];

s+=a[i];

*avg=s/10。0;

}

void main()

{int a[10]={10,21,8,22,40,23,32,26,30,12};

int max,min;

float avg;

fun(a,&max,&min,&avg);

printf("max=%dn",max);

printf("min=%dn”,min);

printf("avg=%6。2fn”,avg);

运行结果截屏:

第三题:

程序代码:

#include〈stdio.h>

void fun(int a[],int n)

{int i,t;

for(i=0;i

{t=a[i];a[i]=a[n—i—1];a[n—i—1]=t;}

void main()

{int a[6]={20,12,6,21,29,15};

int *p,i;

//用数组作为函数的实参;

printf("原先数组的序列:n”);

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

printf(”%4d",a[i]);

printf(”n");

printf("用数组作为实参,交换后的序列:n");

fun(a,6);

for(i=0;i〈6;i++)

printf("%4d",a[i]);

printf("n");

//用指针作为函数的实参

printf("用指向数组的指针作为实参,再次交换后的序列: p=a;

fun(p,6);

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

printf("%4d",a[i]);

printf(”n");

运行结果截屏:

第四题:

程序代码:

n");

#include

//用选择法编写数组排序函数,按从小到大顺序排序

void sort1(int a[],int n)

{int i,j,k,t;

for(i=0;i〈n—1;i++)

{k=i;

for(j=i+1;j〈n;j++)

if(a[k]>a[j])k=j;

if(k!=i){t=a[i];a[i]=a[k];a[k]=t;} }

//用冒泡法排序,按从小到大顺序排序

void sort2(int a[],int n)

{int i,j,t,f;

for(i=0;i

{f=1;

for(j=0;j

if(a[j]〉a[j+1])

{t=a[j];a[j]=a[j+1];a[j+1]=t;f=0;}

if(f==1)break;

}

void main()

{int a[10]={40,23,26,20,35,55,12,43,37,45};

int i;

printf("排序前的序列:n”);

for(i=0;i〈10;i++)

printf(”%4d”,a[i]);

printf(”n”);

printf(”选择排序后的序列:n”);

sort1(a,10);

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

printf("%4d",a[i]);

printf("n冒泡排序后的序列:n");

sort2(a,10);

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

printf("%4d",a[i]);

printf(”n”);

运行结果截屏:

第八次作业

1. 设数组a[N]中已经有n个数并已按从小到大顺序排序.要求输入一个数x,将其插入到数组中,使数组仍然有序.

#include

using namespace std;

void main()

{int a[10]={4,6,8,10,20};

int i,j,x;

cin〉>x;

for(i=0;i〈9;i++)

{if(a[i]>x)// 寻找插入点;

for(j=9;j>i;j——)//将元素向后移动一位;

a[j]=a[j-1];

a[i]=x; //空出位置,插入元素x;

break;

}

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

cout<〈a[i]<<” ";

}

2。 编写函数int ff(char *s),判断s所指字符串是否为“回文串”,即前后对称.如abcba为回文串,若是返回1,否则返回0,并在主程序中调用该函数,对输入的字符串进行判断。

#include〈iostream.h〉

#include〈string.h>

int ff(char *s)

{int n,i;

n=strlen(s);

for(i=0;i

if(s[i]!=s[n—i-1])return 0;

return 1;

void main()

{char ss[20];

cin〉〉ss;

if(ff(ss))cout<<"YES!”〈

else cout<〈”NO!”<

3. 编写一个函数 void strcp(char *s1,char *s2),将字符数组s1中下标为偶数的元素复制到另一个字符数组s2中。在主程序中调用该函数,输出这个字符串.

#include〈iostream.h〉

//将字符串s1中下标为偶数的字符复制到s2中。

void strcp(char *s1,char *s2)

{int i=0,j=0;

for(i=0;s1[i]!='0';i++)

if(i%2==0)s2[j++]=s1[i];

s2[j]='0’;

}

int main()

{char s[]="Nanchang!";

char ss[10];

strcp(s,ss);

cout〈〈s<

cout〈

return 0;

}

4. 输入一行字符,统计其中字母,数字,空格和其他字符的个数。#include

int main()

{char s[100];

int B=0,L=0,D=0,S=0,T=0,i;

cin。getline(s,100,’n');

for(i=0;s[i]!=’0’;i++)

if(s[i]>='A'&&s[i]<='Z’)B++;

else if (s[i]>='a’&&s[i]〈=’z')L++;

else if(s[i]〉='0'&&s[i]〈=’9’)D++;

else if(s[i]==' ') S++;

else T++;

cout〈〈”大写字符个数:”〈

cout<〈"小写字符个数:”<

cout〈<"数字字符个数:"〈〈D<〈endl;

cout<<"空格字符个数:”〈〈S〈〈endl;

cout〈〈"其他字符个数:”<〈T〈〈endl;

return 0;

第九次作业

1、编写一个程序,采用类计算n! ,并输出10!的值。

#include

class JS

{public:

JS(int a)//构造函数;

{n=a;}

int fac()//计算N的阶乘;

{int i,p=1;

for(i=1;i

p=p*i;

return p;

}

private:

int n;

};

int main()

{JS obj(10);//定义对象;

int s;

s=();//调用对象的方法计算阶乘;

cout<〈s<〈endl;

return 0;

2、定义并实现一个矩形类,有长宽两个属性,定义一个构造函数初始化对象,用成员函数GetS()、GetL分别计算其面积和周长.

#include〈iostream.h>

class Rect

{public:

Rect(int x,int y)//定义构造函数用于初始化对象;

{a=x;b=y;}

int GetS()//计算面积的成员函数;

{return a*b;}

int GetL()//计算周长的成员函数;

{return 2*(a+b);}

private:

int a,b; //矩形的长和宽;

};

int main()

{Rect obj(5,2);//定义一个矩形对象;

int S,L;

S=obj。GetS();//调用矩形对象的成员函数计算面积;

L=obj。GetL();//调用矩形对象的成员函数计算周长;

cout<<”S=”〈

cout<<"L="<〈L<〈endl;

return 0;

3、定义一个Circle类,有数据成员R (半径),定义构造函数,用成员函数GetArea()计算面积,构造一个Circle对象进行测试。

#include〈iostream.h>

#define PI 3.1415

class Circle

{public:

Circle(float r) //构造函数

{R=r;}

double GetArea()

{return PI*R*R;}

private:

float R;//圆的半径;

};

void main()

{Circle C(2.0);

double s;

s=a();

cout〈〈”S=”<〈s<

4、定义一个圆柱体类,有数据成员底面半径R和高H,用成员函数GetV计算其体积,定义构造函数,在主函数中定义一个对象进行测试。

#include〈iostream.h〉

#define PI 3.14159

class Cylinder

{public:

Cylinder(float r,float h)//构造函数

{R=r;H=h;

}

double GetV()//计算圆柱体的体积;

{

}

return PI*R*R*H;

private:

float R,H;//声明圆柱体的半径和高;

};

void main()

{Cylinder yzt(3,5);

double v;

v=();

cout<<”圆柱体的体积为=”<〈v〈〈endl;

5、设计一个点类Point,有两个数据成员x和y,定义一个构造函数初始化对象。为这个点类增加一个友元函数,通过该友元函数计算两个点之间的距离。

#include

#include〈math。h>

class Point

{public:

Point(float a,float b)//构造函数;

{x=a;y=b;}

friend double js(Point A,Point B);//声明友元函数;

private:

float x,y;//声明点的坐标;

};

//计算两点之间的距离

double js(Point A,Point B)

{double xx=A.x—B.x;

double yy=A。y—B.y;

double s=sqrt(xx*xx+yy*yy);

return s;

void main()

{Point A(2,5),B(6,9);//定义两个点对象;

double ss;

ss=js(A,B);

cout<〈"距离="〈〈ss<

}

期中考试

1、输入三角形的三条边a,b,c,利用海伦公式计算三角形的面积。

若 p=(a+b+c)/2 , 则S=

。要求判断a,b,c能否组成一个三角形。

#include〈iostream.h>

#include

void main()

{float a,b,c,p,area;

cout<〈"请输入三角形的三条边:"〈

cin>〉a〉〉b〉〉c;

if((a+b>c)&&(a+c〉b)&&(b+c>a))

{p=(a+b+c)/2.0;

area=sqrt(p*(p-a)*(p—b)*(p—c));

cout〈<”S="<

}

else

}

2、输入一个日期,计算该日期是该年的第几天.

cout〈〈"不能构成三角形!n”;

#include〈iostream。h〉

int main()

{int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};

int year,month,day,i,s=0;

cout〈<"请输入一个日期:”;

cin〉>year〉>month〉>day;

for(i=0;i

s=s+a[i];

if((month>2)&&((year%4==0&&year%100!=0)||(year%400==0)))

s=s+1;

cout<〈”该日期为该年的第"〈〈s<<"天"<

return 0;

3、编写一个判断素数的函数,函数原型为:int isprime(int n),若参数n为素数,函数的返回值为1,否则返回值为0;要求在主函数中调用该函数,判断101—300之间有多少个素数,并输出所有的素数.

#include

int isprime(int n)//判断素数的函数

{int i;

for(i=2;i〈n;i++)

if(n%i==0)return 0;

return 1;

int main()

{int i,n=0;

for(i=101;i〈300;i++)

if(isprime(i)){cout<

cout〈<”n素数的个数="<〈n<

return 0;

}

4、一个数如果恰好等于它的因子之和,这个数就称为“完数”.如6=1+2+3,请编写程序,找出1000以内所有的完数。

#include

int main()

{int i,j,s;

for(i=2;i<1000;i++)

{s=0;

for(j=1;j

if(i%j==0)s+=j;

if(s==i)

{ cout<

for(j=1;j〈i;j++)

if(i%j==0)cout<

cout<

}

return 0;

5、用递归法编写一个计算阶乘的函数,函数原型为:long Fac(int n),在主函数中调用该函数计算组合数

,其中m,n的值从键盘输入。

#include〈iostream.h>

long Fac(int n)

{if(n==0||n==1)return 1;

else return n*Fac(n-1);

int main()

{int m,n,cc;

cout〈<”请输入m n的值(m>n):";

cin>>m>〉n;

cc=Fac(m)/(Fac(n)*Fac(m—n));

cout〈<"组合数为:"<〈cc〈

return 0;


本文标签: 函数 计算 数组