实验二 VC++流程控制语句
(一)
二 程序设计题
1、编写程序,输入一个不多于5位的整数,求出它是几位数,并分别打印出每一位数字,再按逆序打印出各位数字。
2、编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形。若能,则判断组成的是等腰、等边、直角还是一般三角形;若不能,则输出相应的信息。
1、参考程序 方法一:
#include void main() {
int m,a,b,c,d,e; cout>m; a=m%10;//个位 b=m/10%10;//十位 c=m/100%10;//百位 d=m/1000%10;//千位 e=m/10000;//万位
if(e!=0) cout
个
5位
数
,\"
逆
序
各
位
数
字
是\"
else if(d!=0) cout
else if(c!=0)cout
3位数,\"
else if(b!=0)cout
else cout
} //当输入数字是012时,其实输入的是八进制数,对应的十进制是10。
方法二:
#include void main() {
int a,b,c;//b表示所输入数的位数
cout>a; cout
for(b=0;a;b++)
{
c=a%10;
cout
a=a/10;
}
cout
} }
2、参考程序 #include void main() {
} int a,b,c; cout>a>>b>>c; if(a+b>c&& a-b
if(a==b&&b==c&&c==a)//错误的a==b==c cout
cout
else if(a*a+b*b==c*c||a*a+c*c==b*b||c*c+b*b==a*a)
cout
else
cout
(二)
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)异号,说明方程在x
1、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>n; while(i>a; } cout
cout
3、cout void main(){ int n=0,s=0; while(s
++n; } s+=n; cout
4、
#include #include void main() {
} float x0,x1,x2; double y0,y1,y2; do{ cout>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
(三)
二、改错题 答案:
增加 #include
j=sqrt(i);修改为: int j=sqrt(i); if(i%n=0) break; 修改为:if(i%n==0) break; if(k/5=0) cout
三、编程设计题
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
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
} s=0; for(int j=1;j
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
void main(void){
}
2、
#include long int Acm(int m,int n) { int c; if(m==0)return n+1; cout
} 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>m>>n; cout
实验三 函数与编译预处理(二)
三、改错题 答案:
在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
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
实验四 数组的应用
(一)
一、程序设计题
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>a[i]; for(i=0;i
if(a[i]%2){ b[j++]=a[i]; n=j; } else { c[k++]=a[i]; m=k; } } if(j==0) cout
max1=b[0]; coutmax1)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>a[i]; s+=a[i]; i++; }while(a[i-1]); t=i-1; cout0)j++; else if(a[i]
实验四 数组的应用
(二)
四、编程题
1、设计一程序,用cin.getline()将一个字符串输入到字符数组s(char s[200])中,删除字符串的所有空格后输出。 参考程序 //方法一:
#include #include void main(){
}
//法二: #include #include char s[200],t[200]; int i=0,j=0; cout
void main(){ char s[200]; int i=0; cout
cin.getline(s,200); cout