if(a==b&&b==c&&c==a)//错误的a==b==c cout<<“能构成等边三角形”<<'n';else if(a==b||a==c||b==c)
cout<<“能构成等腰三角形”<<'n';
else if(a*a+b*b==c*c||a*a+c*c==b*b||c*c+b*b==a*a)
cout<<“能构成直角三角形”<<'n';
else
cout<<“能构成一般角形”<<'n';} else cout<<“不能构成三角形”<<'n';实验二 VC++流程控制语句
(二)1、从键盘输入整数n,求n的阶乘。
2、从键盘输入若干个实数,以输入0结束。设计一程序,分别统计正数的个数和负数的个数,并求出正数之和、负数之和及总平均值
3、设计一个程序,求出满足以下条件的最小n值和s值:
s=1+2+3……….+n, 且s>=600
4、用二分法解方程f(x)=0的具体算法如下:
(1)输入x1,x2,直至f(x1)与f(x2)异号,说明方程在x1、x2之间有解。
(2)求x1和x2的中点x0.(3)如果f(x0)与f(x1)同号,表明方程的解在x0与x2之间,用x0取代x1;否则方程的解在x0与x1之间,用x0取代x2.(4)如果f(x0)的值足够小,则方程的近似解为x0;否则重复执行步骤(2)、(3)、(4),直至f(x0)足够小。
(5)输出方程的解x0.2要求用二分法求解方程x+4x-4=0.参考程序:
1、#include void main(void){
}
2、#include void main(void){ float a,s1=0,s2=0;int m=0,n=0;
cin>>a;while(a){
if(a>0){ m++;s1+=a;} else{ n++;s2+=a;int i=1,n;long int s=1;cout<<“请输入一个整数:”;cin>>n;while(i<=n){ s*=i;i++;} cout<<“n!=”<>a;} cout<<“n正数有”<cout<<“n正数之和为:”<3、cout<<“n总的平均为:”<<(s1+s2)/(m+n)<<'n';#include void main(){ int n=0,s=0;while(s<600){
++n;} s+=n;cout<<“n=”<4、#include #include void main(){
} float x0,x1,x2;double y0,y1,y2;do{ cout<<“请输入方程的两个初始区间值:”;cin>>x1>>x2;y1=x1*x1+4*x1-4;y2=x2*x2+4*x2-4;}while(y1*y2>0);
x0=(x1+x2)/2;y0=x0*x0+4*x0-4;do{ if(y0*y1>0){x1=x0;y1=y0;} else {x2=x0;y2=y0;}//可以不要y2=y0;x0=(x1+x2)/2;y0=x0*x0+4*x0-4;}while(fabs(y0)>1e-5);cout<<“方程x^2+4x-4=0的解为”<(三)二、改错题 答案:
增加 #include
j=sqrt(i);修改为: int j=sqrt(i);if(i%n=0)break;修改为:if(i%n==0)break;if(k/5=0)cout<<'n';修改为:if(k%5==0)cout<<'n';
三、编程设计题
1、设计一个程序,输出所有的水仙花数。所谓水仙化数是一个三为数,其各位数字的立方和等于该数本身。列如153是一个水仙化数。水仙花数的算法分析:
1)用穷举法对100~999之间的每个数验证,验证公式为:x=h*h*h+d*d*d+n*n*n 2)分解一个3位数x的百位、十位和个位。
2、求出1000以内所有完全数,并输出。例如6就是一个完全数,6的因数共有4个:1、2、3、6,除了6自身这个因数外,其他的3个因数都是它的真因数,把6的所有真因数都加起来,正好等于6这个自然数本身。具有这种性质的自然数叫做完全数。
参考程序:
1、#include void main(){
int x,h,d,n;cout<<“水仙花数为:”;for(int i=100;i<1000;i++){
h=i/100;d=i/10%10;n=i%10;x=h*h*h+d*d*d+n*n*n;if(i==x)cout<
2、#include void main(){
} int s;for(int i=1;i<=1000;i++){
} s=0;for(int j=1;j<=i/2;j++)if(i%j==0)
s+=j;if(s==i)cout<
实验三 函数与编译预处理(一)
三、改错题
答案:
增加#include int isprime(n)修改为:int isprime(int n)if(n%i==0)break;修改为:if(n%i==0)return 0;if(!isprime(k))修改为:if(isprime(k))
四、编程设计题
1、设计一程序,计算组合数:C(m,r)=m!/(r!*(m-r)!),其中m,r为正整数,且m>r.分别求出C(4,2).C(6,4).C(8,7)的组合数。求阶乘和组合数须用函数来实现。
2、阿克曼函数定义如下,其中m、n为正整数,设计一个程序,分别求出Acm(3,2)和Acm(2,2)的值。
m0n1Acm(m,n)Acm(m1,1)n0
Acm(m1,Acm(m,n1))n0,m0参考程序:
1、#include long int jc(int n){ if(n==1)return 1;return n*jc(n-1);} long 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){
}
2、#include long int Acm(int m,int n){ int c;if(m==0)return n+1;cout<<“C(4,2)=”<} if(n==0)return Acm(m-1,1);if(n>0&&m>0){ c=Acm(m,n-1);return Acm(m-1,c);}
void main(){
} int m,n;cout<<“Acm(5,3)=”<>m>>n;cout<<“Acm(”<实验三 函数与编译预处理(二)
三、改错题 答案:
在main()的上面增加语句int gys(int x,int y);return y;修改为:return x;
三、编程设计题
1、设计一程序,将求两个实数的最大值函数放在头文件myfun.h中,在源程序文件mypro.cpp中包含该头文件,并实现输入三个实数,求最大值。
2、设计一程序,定义重载函数area,分别求圆和长方形的面积。
3、用递归法将一个整数n转换成字符串。例如,输入整数567,应输出字符串“567”。n的位数不确定,可以是任意的整数。参考程序:
1、//myfun.h float max(float x, float y){
float z;if(x>y)z= x;else z=y;return z;} //mypro.cpp #include #include“myfun.h” void main(){ float a,b,c;cin>>a>>b>>c;
cout<<“最大值为:”<< max(max(a,b),c)<<'n';}
2、#include #define PI 3.14 double area(float r){ return PI*r*r;} double area(float a,float b){ return a*b;void main(){ } float r=2.5, a=2,b=1.2;cout<<“圆的面积为:”<3、#include void fun(int n){
} int a,b;a=n%10;b=n/10;if(b)fun(b);cout<int m;
} cin>>m;cout<<“转换后的字符串为:”“;fun(m);cout<<”“"<实验四 数组的应用
(一)一、程序设计题
1、定义一个10个整数的数组,从键盘输入数据,设计一程序,找出其中最大的偶数和最大的奇数(若设有奇数时,输出“没有奇数!”,若没有偶数,输出“没有偶数!”)。
2、输入一组非0整数(以输入0作为输入结束标志)到一维数组中。设计一程序,求出这一组数的平均值,并分别统计出这一组数中正数和负数的个数。参考程序:
1、#include void main(){ int a[10],b[10],c[10];
int max1,max2,j=0,k=0,m,n,t;cout<<”请输入10个整数:“;for(int i=0;i<10;i++)cin>>a[i];for(i=0;i<10;i++){
if(a[i]%2){ b[j++]=a[i];n=j;} else { c[k++]=a[i];m=k;} } if(j==0)cout<<”没有奇数。“;else {
max1=b[0];cout<<”输入的奇数有:“;for(i=0;imax1)max1=b[i];} cout<<”其中最大的奇数为:“<for(i=0;imax2)max2=c[i];} cout<<”其中最大的偶数为:“<2、#include void main(){ int a[100;
} int,j=0,k=0,t;float avg,s=0;cout<<”请输入一组整数(0结束):“;int i=0;do{ cin>>a[i];s+=a[i];i++;}while(a[i-1]);t=i-1;cout<<”共输入“<0)j++;else if(a[i]<0)k++;avg=s/t;cout<<”这组数的平均值为“<实验四 数组的应用
(二)四、编程题
1、设计一程序,用cin.getline()将一个字符串输入到字符数组s(char s[200])中,删除字符串的所有空格后输出。参考程序 //方法一:
#include #include void main(){
}
//法二: #include #include char s[200],t[200];int i=0,j=0;cout<<”请输入字符串(回车结束):“;cin.getline(s,200);cout<<”s=“<