1、4-2 编写一个程序,要求从键盘上输入两个整数,并输出这两个数中的大数。 4-3 编写一个程序,实现根据输入的x值,可求出y的值,并输出x和y的值。计算y值的数学公式为: y= {1.5x+7.5 x<=2.5 9.32x-34.2 x>2.5 4-4 设计一个程序,输入实行变量x和y的值。若x>y,则输出x-y的值;否则输出y-x的值 4-5 设计一个程序,求出下列一元二次方程的根: ax^2+bx+c=0 系数a、b、c的值从键盘上输入。求方程根的计算公式为: s=(-b+根号(b^2-4ac))/2a 当平方根小于0时,输出“No solutons
2、否则,输出x的两个根。 4-6 设计一个程序,将从键盘上输入的百分制成绩转换成对应的五分制成绩并输出。90分以上为A,80~89分为B,70~79为C,60~69为D,60分以下为E。分别用条件语句和开关语句实现。 4-7 从键盘输入10个实数,并求出这10个数之和及平均值。用循环语句实现,写出完整的程序。 4-8 从键盘输入一个整数n的值,按下式求出y的值,并输出n和y的值(y用实数表示): y=1!+2!+3!+.....n! 4-9 设计一个程序,输出所有的水仙花数。所谓水仙化数是一个三为数,其各位数字的立方和等于该数本身。列如: 153=1^3+5^3+3^3 因此
3、153是一个水仙化数。 4-10 设计一个程序,求出100~200之间的所有素数。 4-11 用循环语句实现输出如下的图形: * * * * * * * * * * * * * * * 4-12 设计一个程序,按以下公式求出数列的20项并输出。计算公式为: y=0 n=0;y=1 n=1;y=2 n=2;y=Y(n-1)+Y(n-2)+Y(n-3) n>2 4-13 设计一个程序,输入一个四位数(整数,求出各位数之和。 4-14 从键盘输入若干个实数,以输入0为结束。设计一个程序,分别统计出正数的个数和负数的个数。并求出正数之和、负数之和及总的平均值。 4-1
4、5 设计一个程序,输入一个四位整数。将各位数字分开,并按其反序输出。列如:输入1234,则输出4321,要求必须用循环语句实现。 4-16 设计一个程序,求出满足以下条件的最小的n值和s值: s=1+2+3+.....+n,且x>=600 4-17 求pi/2的近似值的公式为: pi/2=2/1*2/3*4/3*4/5*....*2n/(2n-1)*2n/(2n+1).... 其中,n=1、2、3....设计一个程序,求出当n=100是pi的值 4-18 求出1~599中能被3整除,且至少有一位数字为5的所有整数。如15、51、513均是满足条件的整数。 4-19 求满足以下条
5、件的三为数n,它除以11所得的商等于n的各位数字的平方和,且其中至少有两位数字相同。列如,131除以11的商为11,各位数字的平方和为11,所以它是满足条件的三位数。 5-2 设计一程序,计算组合数:C(m,r)=m!/(r!*(m-r)!),其中m,r为正整数,且m>r.分别求出C(4,2).C(6,4).C(8,7)的组合数。求阶乘和组合数须用函数来实现。 5-3 设计一个程序,输入一个十进制整数,输出相应的十六进制数。设计一个函数实现数制转换。 5-4 设计一个程序,求出5~100之间的所有素数,要求每行输出5个素数。判断一个整数是否为素数用一个函数来实现。 5-5设计一个程序,
6、输入两个整数,求出这两个整数的最小公倍数。求两个数的最小公倍数用一个函数来实现。 5-6设计一个程序,输入两个整数,求出这两个整数的最大公约数。求两个数的最大公约数用一个函数来实现。 5-7设计一个程序,通过重载求两个数中大数的函数max(x,y),分别实现求两个实数和两个整数的大数。 5-8设计一个程序,用内联函数实现求出三个实数中的最大数,并输出最大数。 5-9 定义一个求n!的函数,n的缺省值为10。 5-10 设计一参数数目可变的函数,第一个参数n为参数的个数。求出这n个实蚕之和并输出。 5-11 设计一参数数目可变的函数,第一个参数n为参数的个数。调用该函数时,若n=3,
7、则求出后三个实参之积并返回该值;若n=则求出后四个实参的平均值并返回该值 5-12 用递归函数实现Fibonnaci数列的前n项,n作为函数的参数 5-13 当x>1时,Hermite多项式定义为:H(x)={1 n=0 ,2x n=1 ,……..,当输入实数x 和整数n后,求出Hermite多项式的前n项的值。分别用递归函数和非递归函数来实现。 5-14阿克曼函数定义如下:………………..,其中m、n为正整数,设计一个程序,分别求出Acm(5,3)的值 5-15 设计一个程序,要求输入一个整数,并能逐位正序和反序输出,如输入一个整数3456,则输出3456和6543,分别设计两个
8、函数,一个实现正序输出,另一个实现反序输出 5-16 设计一个程序,将求两个实数的最大值函数放在头文件mufun.h中,在源程序文件mypro.cpp中包含该头文件,并实现输入三个实数,求出最大值 5-17 设计一个程序,定义带参数的宏MAX(A,B)和MIN(A,B),分别求出两个数中的大数和小数,在主函数中输入三个数,并求出这三个数中的最大数和最小数 5-18 已知三角形的三条边a,b,c,则三角形的面积为:area=sqrt[s(s-a)(s-b)(s-c)求出其中s =(a+b+c)/2。编写程序,分别用带参数的宏和函数求三角形的的面积 5-19 设计一个程序,使用条件编译输出
9、调试信息 6-1 读入一组整数到一维数组中,设计一程序,找出其中最大的偶数和最大的奇数(若设有奇数时,输出“没有奇数!“)并输入 6-2 输入一组非0整数(以输入0作为输入结束标志)到一维数组中,设计一程序,求出这一组数的平均数,并分别统计出这正数和负数的个数 6-3 输入10个数到一维数组中,按升序排序后输出。分别用3个函数实现数据的输入,排序和输出 6-4 输入N个数到一维数组中,求均方差: D= 其中M= 6-5 设计一程序,求一个4*4距阵对角线元素和 6-6 先输入一个4*4的距阵,转置后输出结果, 6-7 用一个2维数组float cla[50
10、][2]来存放一个班级的2门课程(c++和计算机应用基础)的成绩 6-8 用cin.getline()将一个字符串出入到字符数组S(char S[200])中,删除字符串中的所有空格后输出 6-9 用cin.getline()将一个字符串出入到字符数组中,按反序输出 6-10 设计一个函数int strlen(char s[])。求出字符串S中包含的字符个数,并作为函数的返回值 6-11 设计一个函数void strcpy(char a[],char b[]),将b中的字符串拷贝到数组a中 6-12 设计一个函数void strcat(char a[],charb[])。将b中的字符
11、串拼接到数组a中的字符串的后面,构成一个字符串 6-13 用筛选法求出2到200之间的所有的素数 7-1 定义描述一个人出生日期的结构体类型变量,包括年,月,日 7-2 定义描述通讯录的结构体类型变量,包括姓名,地址,电话号码和邮编 7-5 为全班同学建立一个通讯录(结构体数组),完成数据的输入和输出 7-6 定义描述复数的结构体类型变量,并实现复数的输入和输出。设计三个函数分别完成复数的加法,减法和乘法运算 7-7 定义描述三维坐标点(x,y,z)的结构体类型变量,完成坐标点的输入/输出,并求两左边点之间的距离 7-8一个元素包括:姓名,学号,C++成绩,英语成绩,数学成绩和这
12、三门功课的平均成绩。设计四个函数:全班成绩的输入,求出每个同学的平均成绩,按平均成绩的升序排序,输出全班成绩表 7-9 定义一个描述一周日程的枚举类型,完成这种枚举类型变量的输入和输出 7-10 定义一个描述三种颜色的每举类型,输出这三种颜色的全排列结果 8-2 用指针作为函数的参数,设计一个实现两个参数交换的函数.输入三个实数,按升序排列后输出. 8-3 定义一个而维的字符串数组,输入若干个字符串,按升序排列后输出,要求设计一个通用的排列函数,输入参数作为字符串数组 和要排列的字符串的个数. 8-4 设计一个通用的插入排列函数,参数为指向实数的指针(指向一个已经排好序的数组)和一
13、个实数,将该实数插入到已经排好序的数组中. 主函数完成输入若干个实数,没输入一个实数,调用一次插入排序的函数完成数据的排序,最后输出已经排好的数据. 8-5 设计一个函数,求字符串的长度(指向字符串的指针作为函数的参数).在主函数中输入一个字符串,并输出该字符串及其长度. 8-6 设计一个函数,将一个字符串并接到一个字符串的尾部,并接后构成一个新的字符串,主函数完成输入该字符串,输出该字符串和并接后的 新的字符串的功能. 8-7 设计一个函数,将一个字符串拷贝到另一个参数所指向的字符树组中.主函数完成输入一个字符串,输出拷贝后的字符串的功能. 8-8 输入一个二维数组A[6][6]
14、设计一个函数,用指向一维数组的指针变量和二维数组的行数作为函数的参数,求出平均值,最大元素值,和最小元素值,并输出. 8-9 设计一个用矩形法求积分的通用函数,被积函数的指针,积分的上限,积分的下限和积分区间的等分数作为函数的参数.分别求出下列定积分的值;() 8-10 定义一个指向字符串的指针数组,用一个函数完成N个不等长字符串的输入,-根据实际输入的字符串长度用NEW运算符分配存储空间,依次使指针数组中的元素指向每一个输入的字符串,设计一个完成N个字符串排序的函数,在主函数中实现将排序后的字符串输出. 8-11输入一个字符串,串内有数字和非数字字符.例如ABC2345 345...
15、将其中连续的数字作为一个整数依次存放到另一个整数数组B中..... 8-12建立一个无序链表,没一个节点包括:学号,姓名,年龄...由一个函数完成建立链表工作,另一个函数完成输出链表上各结点值...... 8-14建立一个有序链表,每一个节点包括:学号,姓名,... 求出总分最高和最低的同学并输出 8-15建立一条无序链表,用一个函数实现将这条链表构成一条新的逆序链表,即将链表头当链表尾,链表尾当链表头,输出这两条链表上各个节点的植 9-1 定义一个描述复数的类,数据成员包括实部和虚部;成员函数包括:输出复数,置实部,置虚部。 9-2 定义一个描述学生基本情况的类,数据成员
16、包括姓名,学号,数学,英语,物理和C++成绩,成员函数包括输出数据,置姓名和学号,置四们课的成绩和平均成绩。 9-4 三维坐标中的一条直线的两端点的坐标(x1,y1,z1)和(x2,y2,z2)来描述。定义一个类,实现坐标数据的设置,输出端点的坐标和直线的长度。构成一个完整的程序,完成测试工作。 10-2 定义一个描述复数的类,数据成员包括实部和虚部;成员函数包括输出复数以及构造函数完成数据的初始化。 10-3 定义一个描述学生基本情况的类,数据成员包括姓名,学号,数学,英语,物理和C++成绩;成员函数包括输出数据,构造函数可完成所有数据的初始化,修改每一个数据成员的函数,求出总成绩和平
17、均成绩的函数。 11-1 把定义直角坐标系上的一个点的类作为基类,派生出描述一条直线的类,再派生出三角形类。要求成员函数能求出两点间的距离、三角形的周长和面积等。 11-7 设计一个大学的类系统,大学中有学生、教师、干部和工人。学生的任务是学习;教师的任务是上课和科研;干部的任务是管理;工人的任务是定额生产产品。提取共性作为基类,并派生出满足要求的各个类及每一个类上的必要操作。 11-8 设计一个描述儿童、成人和老人的类系统,儿童分为学龄前和学龄期儿童,成人有工作,老人已经退休。提取共性作为类基,并派生出满足要求的各个类及每一个类上的必要操作。 12-7 建立一条双向无叙链表,节点数据
18、包括:姓名、地址和工资。 12-8 建立一条双向有序链表,节点数据包括:姓名、地址和工资。按工资从小到大的顺序排列。 13-5 定义一个复数类,通过重载运算符:=、+=、-=、+、-、*、/、==、!=,直接实现两个复数之间的各种运算。编写一个完整的程序 13-6 定义一个学生类,数据成员包括:姓名,学号,C++、数学和物理的成绩。重载运算符“<<”和“>>”,实现学生类对象的直接输入和输出。增加转换函数,实现姓名和总成绩的转换设计一个程序,验证成员函数和重载运算符的正确性。 13-7 定义描述平面上一个带内的类point,重载“++”和“--”运算符,并区分这种运算符的前置和后置运算
19、构成一个完整的程序。
13-8定义一个指向字符串的指针数组,重载下标运算符,实现下标是否出界的检查。
13-9通过重载函数调用运算符,完成三维数组小标的合法性检查。三维数组的类型可为整性或实型。
13-10完善字符串类,增加以下运算符的重载:+=、-=、==、!=。在主函数中侧重检测重载运算符的正确性。
第4章
4-2
#include 20、
}
4-3
#include 21、t< 22、不等实根:";
cout<<"x1="< 23、s>=90)
cout<<"五分制分数为A\n";
else if(s>=80)
cout<<"五分制分数为B\n";
else if(s>=70)
cout<<"五分制分数为C\n";
else if(s>=60)
cout<<"五分制分数为D\n";
else cout<<"五分制分数为E\n";
}
}
用开关语句实现,程序如下:
#include 24、输入百分制分数:";
cin>>s;
if(s<=0)break;
switch(s/10){
case 10:
case 9:cout<<"五分制分数为A\n";break;
case 8:cout<<"五分制分数为B\n";break;
case 7:cout<<"五分制分数为C\n";break;
case 6:cout<<"五分制分数为D\n";break;
default:cout<<"五分制分数为E\n";break;
}
}
}
4-7
#include 25、){
int i;
float a,avg,sum=0;
for(i=1;i<=10;++i){
cout<<"输入第"<>a;
cout<<'\n';
sum+=a;
}
cout<<"10个数的和sum="
< 26、\n';
for(i=1;i<=n;++i){
k=1;
for(j=1;j<=i;++j)
k*=j;
y+=k;
}
if(n==1)cout<<"1!=1"<<'\n';
else if(n==2)cout<<"1!+2!=3"<<'\n';
else{
cout<<"n为:"< 27、k;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)
cout<
#include 28、
if(i>=j+1){
cout< 29、t n,y0,y1=0,y2=1,y3=2;
for(n=0;n<=3;n++){
switch(n){
case 0:cout<<"y1="< 30、
}
4-13
#include 31、
int m=0,n=0;
cin>>a;
while(a){
if(a>0){
m++;
s1+=a;
}
else{
n++;
s2+=a;
}
cin>>a;
}
cout<<"\n正数有"< 32、
void main(){
int s,i,j,n;
cout<<"请输入一个四位整数:";
cin>>s;
i=1;
while(i<=4){
n=s%10;
cout< 33、de 34、3==0){
k=i;
while(k){
n=k%10;
if(n==5){
s++;
if(s%5==0)cout<<'\n';
cout< 35、j,m;
while(i<=999){
k=i/11;
a1=i%10;
m=i/10;
a2=m%10;
m=m/10;
a3=m%10;
n=a1*a1+a2*a2+a3*a3;
if(k==n){
if(a1==a2||a2==a3||a1==a3){
s++;
if(s%5==0)cout<<'\n';
cout< 36、max(int a,int b){
int maxz;
if(a>=b)maxz=a;
else maxz=b;
return maxz;
}
void main(){
int i,j,k,m,n;
cout<<"请输入三个整数:";
cin>>i;
cin>>j;
cin>>k;
m=max(i,j);
n=max(m,k);
cout<<"max="< 37、
if(n<0){
cout<<"n应为正数!"<<'\n';
exit(1);
}
if(n==0)return 1;
for(i=2;i<=n;i++)j*=i;
return j;
}
int zh(int m,int r){
int c;
if(m<=r){
cout<<"m必须大于r!"<<'\n';
exit(1);
}
c=jc(m)/(jc(r)*jc(m-r));
return c;
}
void main(void){
cout<<"C(4,2)="< 38、out<<"C(6,4)="< 39、一个正整数(十进制):";
cin>>x;
i=conversion(x,a);
cout<<"该数对应的十六进制数是:";
for(int j=0;j
#include 40、
cout< 41、reak;
}
}
if(p!=0){
cout< 42、
}
int r,a=x,b=y;
while((r=a%b)!=0){
a=b;
b=r;
}
cout< 43、最大公约数为:"< 44、loat x,y;
cout<<"请输入两个整数:";
cin>>a>>b;
cout<<"max("<>x>>y;
cout<<"max("< 45、
void main()
{
cout<<"请输入三个实数:";
float a,b,c;
cin>>a>>b>>c;
cout<<"max="< 46、n)
{
int k=1;
for(int i=1;i<=n;i++)
k=k*i;
return k;
}
5-10
#include 47、urn sum;
}
void main()
{
int x,y,z,u,v,w;
cout<<"请输入二个数据:";
cin>>x>>y;
cout<<"sum("< 48、<<","<>x>>y>>z>>u>>v;
cout<<"sum("< 49、
5-11
#include 50、 j=1;j
#include






