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,将其插入到数组中,使数组仍然有序.
#includeusing 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. 输入一行字符,统计其中字母,数字,空格和其他字符的个数。#includeint 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之间有多少个素数,并输出所有的素数.
#includeint 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;
}
发表评论