“C++程序设计”实验一简单的C++程序
1、编写简单的屏幕输出程序:
[过程]
①首先在资源管理器中,在用户盘(硬盘)创建自己的文件夹,例如可以以自己的学号为名建立文件夹。
②进入Visual C++开发环境,新建C++源文件,存放在上一步建立的文件夹中。打开源文件编辑窗口,输入以下源代码:
#include
void main( )
{
cout<< “……”;// 省略号处是想要输出到屏幕上的内容,可以随意编辑。
}
③保存文件后单击“编译compile”按钮(快捷键Ctrl+F7),在出现的对话框中单击“是”。
④若没有错误,继续单击“连接build”按钮(快捷键F7)。若没有错误则继续单
击“执行execute”按钮(快捷键Ctrl+F5),查看程序运行结果。
#include
void main()
{
cout<< “Hello :-) \n”;// 省略号处是想要输出到屏幕上的内容。
}
2、将两个数交换后输出。
[分析] 交换两个数,一般方法是用一个中间变量,经过几次赋值实现。
#include
void main( )
{
double a, b, temp;
cout<<"请输入任意两个数(以空格间隔输入):"; // 此语句是显示输入提示
cin>>a>>b; // 此语句是将用户输入的两个数依次保存到a、b两个变量中
cout<<"a="< temp = a; // 此语句是将变量a的值赋给变量temp,“=”称为赋值号 ……; // 完成省略号处的语句,将变量b的值赋给变量a ……; // 完成省略号处的语句,将变量temp的值赋给变量b ……; // 完成省略号处的语句,再次输出变量的值,观察其值是否交换了 } #include void main() double a, b, temp; cout<<"请输入任意两个数(以空格间隔输入):"; // 此语句是显示输入提示 cin>>a>>b; // 此语句是将用户输入的两个数依次保存到a、b两个变量中 cout<<"a="< temp = a; // 此语句是将变量a的值赋给变量temp,“=”称为赋值号 a=b; // 完成省略号处的语句,将变量b的值赋给变量a b=temp ; // 完成省略号处的语句,将变量temp的值赋给变量b cout<<"a="< } 3.使用cout对象,在输出窗口上显示如下的图形: 提示:在C++的字符常量中,一个反斜线字符是‘\\’。 #include void main() { cout<<"\t/***\\"< cout<<" /*"< cout<<" /*\t\t X\t X"< cout<<" |*\t\t X\t X"< cout<<" |*\t XXXXXXX XXXXXXX"< cout<<" |*\t\t X\t X"< cout<<" \\*\t\t X\t X"< cout<<" \\*"< cout<<"\t\\***/"< } 4.根据注释补充下面的程序中省略号处的语句,运行程序,并理解其语句及输出的含义: #include void main() { ……; // 定义一个整型变量a ……; // 定义一个字符型变量b b = ‘a’; // 给变量b赋值为字符‘a’ ……; // 将变量b的值赋给变量a cout<< “a=”< ……; //输出变量b的值 } #include void main() { int a; // 定义一个整型变量a char b; // 定义一个字符型变量b b = 'a'; // 给变量b赋值 a=b; // 将变量b的值赋给变量a cout<< "a="< cout<< "b="< 实验二 C++数据类型、操作符、表达式和语句 提示:每题建立一个C++源文件。当完成一个题目后,使用菜单“文件”—〉“关闭工作区”,再新建C++源文件做下一个题目。 1.在程序中定义整型变量x_int 、双精度实数型变量y_double 、字符型变量m_char 和布尔型变量n_bool ,并请用户输入x_int 、y_double 和m_char 三个变量的值,之后给变量n_bool 赋值为(m_char>x_int ),输出并观察(x_int/y_double )、(y_double-m_char )以及n_bool 的值,理解这些输出的含义。 例如:输入1 1 1 #include void main() { int x_int; double y_double; char m_char; bool n_bool; cout<<"请输入一个整数、一个实数和一个字符:"; cin>>x_int>>y_double>>m_char; n_bool=m_char>x_int; cout< cout< cout<<"n_bool="< } 2.输出一个字符(这个字符可以是在程序开始赋值,或由用户输入)的前驱字符(ASCII 编码表上该字符前面的字符)、后继字符(ASCII 编码表上该字符后面的字符)及其ASCII 码值。 #include void main() { char qianqu, zifu, houji; cout<<"请输入一个字符:"; cin>>zifu; qianqu=zifu-1; houji=zifu+1; cout< cout< } 3.编写程序:根据用户输入的球的半径值,分别计算球的表面积、体积和质量,并输出计算结果。 [提示] 假设用户输入的球的半径的单位是米,球的密度为7.8kg/m 3,球的表面积的计 算公式为 24r s π=,球的体积的计算公式为 33 4 r v π=。其中π的值使用3.14即可。 #include void main() { const double pi=3.14, midu=7.8; double banjing, bmianji, tiji, zhiliang; cout<<"请输入球的半径值(米):"; cin>>banjing; bmianji=4*pi*banjing*banjing; tiji=bmianji*banjing/3; zhiliang=tiji*midu; cout<<"该球的表面积为"< <<"平方米,体积为"< <<"立方米,质量为"< } 4.让用户输入一个秒数,编程实现将它转换成小时、分钟、秒来表示。例如输入7278秒,则输出:2小时1分18秒。 #include void main() { int zongm, shi, fen, miao; cout<<"请输入一个秒数:"; cin>>zongm; if(zongm>0) { shi=zongm/3600; fen=zongm%3600/60; miao=zongm%60; cout< < < } } 实验三分支选择语句的应用 提示:每题建立一个C++源文件。当完成一个题目后,使用菜单“文件”—〉“关闭工作空间”,再新建C++源文件做下一个题目。 1.用户输入两个整数x和y,问:y是否是x的倍数? 编程输出回答“是”或“不是”。 #include void main() { int x, y; cout<<"please input x and y: "; cin>>x>>y; if(y%x==0) cout< else cout< } 2.编写程序求解如下分段函数。 #include double x, y; cout<<"请输入自变量x 的值:"; cin>>x; if(x<12) y=x*x-162; else if(x<=70) y=x+30; else y=100; cout<<"y="< } 3.单位编排活动小组,30岁及以下的分在第一组,40岁的分在第二组,50岁以上的分在第三组,其余年龄的分在第四组。假设王五输入了自己的年龄,保存在变量age 中,那么他应该分在第几组?编程求解并输出答案。 #include void main() { int age; cout<<"请输入年龄: "; cin>>age; if(age>=20&&age<70) { if(age<=30) cout<<"应分至第一组。\n"; else if(age==40) cout<<"应分至第二组。\n"; else if(age>50) cout<<"应分至第三组。\n"; else cout<<"应分至第四组。\n"; } else cout<<"输入年龄不合理!\n"; } 4.根据用户输入的整数(1~7代表星期一~星期日),编程输出星期这一天对应的英文或中文名称。例如,用户输入3,则输出应显示为“Wednsday ”或“星期三”。 #include void main() { int a; y= x 2-162,x<12 x+30,12=< x<=70 100,x>70 cout<<"请输入星期(1~7): "; cin>>a; switch(a){ case 1: cout<<"Monday\n"; break; case 2: cout<<"Tuesday\n"; break; case 3: cout<<"Wednesday\n"; break; case 4: cout<<"Thursday\n"; break; case 5: cout<<"Friday\n"; break; case 6: cout<<"Saturday\n"; break; case 7: cout<<"Sunday\n"; break; default: cout<<"error\n"; } } 5.已知标准体重的计算方法如下: 男性:标准体重(kg)=身高(cm)-100 女性:标准体重(kg)=身高(cm)-105 试编写程序,由用户输入其性别(‘m’代表男性,‘f’代表女性)和身高,程序计算并输出其标准体重。 #include void main() { char xingbie; int shengao, tizhong; cout<<"请输入性别('m'代表男性,'f'代表女性):"; cin>>xingbie; if((xingbie=='m')||(xingbie=='f')) { cout<<"请输入身高(厘米):"; cin>>shengao; if(xingbie=='m') tizhong=shengao-105; else tizhong=shengao-100; cout<<"标准体重为"< } } 6(选做).编程实现如下算术功能:用户输入两个数字(可带小数)及一个算术操作符(’+’、’-‘、’*’或’/’),若输入的算术操作符不对,则输出提示信息(例如“无效的算术操作符,无法计算”),否则,即输出相应的算式及结果。 注意:计算除法时,除数不能为0。 #include void main() { double a,b; char c; cout<<"请输入两个数字(可带小数)和一个操作符('+'、'-'、'*'或'/'):"; cin>>a>>b>>c; switch(c) { case '+': cout< case '-': cout< case '*': cout< case '/': if(b!=0) cout< else cout<<"除数不能为0!\n"; break; default: cout<<"无效的算数操作符,无法计算!\n"; } } 实验四循环语句的应用 提示:每题建立一个C++源文件。当完成一个题目后,使用菜单“文件”—〉“关闭工作空间”,再新建C++源文件做下一个题目。 1.设某县2000年工业总产值为200亿元,如果该县预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值将超500亿元 (参考答案:21年) #include void main() { double chanzhi=200; int nianshu=0; while(chanzhi<=500) { nianshu++; chanzhi*=1.045; } cout<<"经过"< } 2.请在屏幕上显示N行如图所示的数值(即第i行为“i: i2i3”),其中N是个常量,其值在程序运行之初确定。(要求:用for语句实现) #include void main() { const int N=10; for(int i=1;i<=N;i++) cout< } 3.编写循环程序,判断用户输入的一个数是正数还是负数,当输入的数大于0时,输出“正数”;输入的数小于0时,输出“负数”;输入的数为0时结束程序。最后输出这些数相加的总和。 (要求:用do-while语句实现) #include void main() { double x; do{ cout<<"请输入一个数:"; cin>>x; if(x>0) cout<<"正数\n"; else if(x<0) cout<<"负数\n"; }while(x!=0); } 4.编程求解使不等式12+32+52+ ……+n2 < limit成立的最大n值。其中limit可以定义为常量或定义为变量。 (实验数据:limit=10时n=1;limit=100时n=7;limit=65535时n=71) #include void main() { int limit; cout<<"请输入limit="; cin>>limit; int n=1, s=0; while(s { s+=n*n; n+=2; } cout<<"使该不等式成立的最大n值为:"<<(n-4)< } 5(选做).请用户输入20个字符,编程实现将其中的小写字母转换为大写字母后输出。例如,若用户输入“VkQK0Ms]\Q,mb/;lGa;q”,则应输出“VKQK0MS]\Q,MB/;lGA;Q”。 提示:每一个英文字母的大写和小写的ASCII码相差32。即,若字符型变量ch中是一个小写英文字母,则char(ch-32)即其对应的大写英文字母。 #include void main() { char ch; int i; cout<<"请输入20个字符: "; i=0; while(i<20) { cin>>ch; if(ch>='a'&&ch<='z') cout< else cout< i++; } cout< } 6(选做).有20只猴子吃掉50个桃子,已知每只公猴能吃5个桃子、每只母猴能吃4个桃子、每只小猴能吃2个桃子,编程求出这20只猴子中可以有公猴、母猴、小猴各多少只。(答案:0 5 15或2 2 16) #include void main() { int gong, mu, xiao; for(gong=0; gong<=10; gong++) for(mu=0; mu<=12; mu++) { xiao=20-gong-mu; if(5*gong+4*mu+2*xiao==50) cout<<"公侯"< 实验五 函数的概念及应用 1.编写一个函数double f(double x),求解如下分段函数。 提示:求幂的数学函数是pow(x, y),求平方根的数学函数是sqrt(x)。要使用这些数学函数,需要在文件开始添加预编译指令#include #include #include double f(double); void main() { double x; x=-28; cout<<"x="< cin>>m>>n; if(m>0&&n>0) cout< else cout<<"您输入的不是两个正整数!\n"; } double jiecheng(int n) { double s=1; for(int i=1; i<=n; i++) s*=i; return s; } 3.编写一个函数bool sxh( int n ),判断一个3位正整数是否是水仙花数,若是返回true,否则返回false。并在主函数中使用该函数找出所有的水仙花数打印在屏幕上。 说明:若一个3位正整数的各位数字的立方和等于这个整数,则称之为“水仙花数”。例如:153是水仙花数,因为153=1*1*1+5*5*5+3*3*3。 #include bool sxh(int); void main() { cout<< "水仙花数:\n"; for(int i=100; i<1000; i++) if(sxh(i)) cout< cout< } bool sxh(int n) { int ge=n%10; int shi=n/10%10; int bai=n/100; if(ge*ge*ge+shi*shi*shi+bai*bai*bai==n) return true; else return false; } 4(选做).编程实现,在屏幕上输出如下所示由’X ’组成的X 形图案。 #include void main() { const int LINE=9; for(int i=1; i<=LINE; i++) { for(int j=1; j<=LINE; j++) { if(i==j||i==LINE+1-j) cout<<'X'; else cout<<' '; } cout< } } 5(选做).编写一个函数,实现在屏幕上打印出九九乘法表。基本效果如下图1,同学们可自己作进一步的美化,如下图2。 提示:两层循环嵌套使用。 #include #include void first(); void second(); void main() { cout<<"基本九九表:\n\n"; first(); 图1 图2 cout< cout<<"改进后的九九表:\n\n"; second(); cout< } // 基本(图1) void first() { int i, j; for(i=1; i<10; i++) { for(j=1; j<=i; j++) cout< cout< } } // 改进(图2) void second() { int i, j; cout< for(i=1; i<10; i++) cout< cout< for(i=1; i<43; i++) cout<<'-'; cout< for(i=1; i<10; i++) { cout< for(j=1; j<=i; j++) cout< cout< } } 实验六流程控制语句、函数的综合应用 1.编写一个函数bool sushu ( int n ),判断用户输入的一个正整数是否是素数,若是返回true,否则返回false。 提示:素数即质数,判断n是否素数的方法是:分别用2、3、4、……、n-1去除n,如果n能被整除,则表明n不是素数,反之是素数。 说明:1不是素数,2、3、5、7、11、13、。。。。。。等是素数。 #include bool sushu ( int n ); void main() { int x; cout<<"请输入一个正整数:"; cin>>x; if(x>0) { if(sushu(x)) cout< else cout< } else cout<<"您输入的不是正数! \n"; } bool sushu ( int n ) { if(n<2) return false; int i=2; while(i if(n%i==0) return false; i++; } return true; } 2.编写一个函数求下式的和: s=a+aa+aaa+…+aa…a 其中a是1~9中的一个数字(aaa的含义为100*a+10*a+a),项数为n,a和n皆为函数的参数。 编写主函数,调用上述函数分别求出a为1时12项的和、a为5时8项的和,以及a 为9时13项的和。 提示:假设和式中的各项为b0,b1,b2,…bn,则可知b0 = a,b1 = b0×10+a,b2 = b1×10+ a,……。即每一项由前一项乘以10加a递推得到。 #include double f(int a, int n); void main() { int a=1, n=12; cout<<"a="< a=5, n=8; cout<<"a="< a=9, n=13; cout<<"a="< } double f(int a, int n) { if(a<=0 || a>9 || n<=0) return 0; int i=0; double b=0, s=0; while(i { b=b*10+a; s=s+b; i++; } return s; } 3.编写函数一,判断一个年份是否是闰年,若是返回true,否则返回false。编写函数二,求一个月有多少天,输入参数:年、月;输出数据:该月的天数。提示:第二个函数需要调用第一个函数判断是否是闰年,从而确定二月是28天还是29天。 编写主函数,调用上述函数,打印用户指定的日期(年、月、日)是该年的第几天。 #include bool runnian(int); int tianshu(int, int); void main() { int nian, yue, ri; cout<<"请输入日期(年月日):"; cin>>nian>>yue>>ri; if(nian>0&&yue>=1&&yue<=12) { if(ri>=1&&ri<=tianshu(nian, yue)) { int s=ri; int i=yue-1; while(i>0) { s+=tianshu(nian, i); i--; } cout<<"这是该年第"< } else cout<<"输入日期有误!\n"; } else cout<<"输入年月不合理!\n"; } bool runnian(int n) { if(n%4==0&&n%100!=0||n%400==0) return true; else return false; } int tianshu(int nian, int yue) { switch(yue) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 2: if(runnian(nian)) return 29; else return 28; case 4: case 6: case 9: case 11:return 30; } } 4.(选做)编写一个函数void shapeV(int n=5),实现在屏幕上输出如下所示由’@’组成的V形图,其中图案的层数根据参数n确定,形参n的默认值为5。 并编写如下主函数测试上述函数的功能: void main( ) { shapeV( ); shapeV( 1); shapeV( 11); } #include void shapeV(int n=5); void main( ) { shapeV(); shapeV(1); shapeV(11); } void shapeV(int n) { for(int i=1; i<=n; i++){ for(int j=1; j<=2*(n-i)+1; j++) cout<<'@'; cout< } } /* 从键盘上输入一个三角形中三条边a、b、c的长度,请利用求面积公式(其中s=(a+b+c)/2)求出三角形的面积。 */ #include #include void main() { double a,b,c,s,area; cout<<"请输入三角形的三条边:"; cin>>a>>b>>c; if(a>0 && b>0 && c>0 && a+b>c && b+c>a && c+a>b){ s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); cout<<"area= "< } else{ cout<<"输入有误:三角形两边之和不大于第三边!"< } } /* 将1-100之间奇数顺序累加存入n中,直到其和等 于或大于200为止 */ #include void main() { int m,n=0; for(m=1;m<=100&&n<200;m+=2) n+=m; cout<<"n="< } /* 编程求使不等式 1+9+25+49+81+……<1000 成立的最大n值。 */ #include void main() { int n; for(int i=1, s=0; s<1000; i+=2) s+=i*i; cout<<"使该不等式成立的最大n值为:"< } /* 已知一个正整数m,求其各位数字之和,保存到变量s中。 */ #include void main() { int m,s=0,n; while( m!=0) { n=m%10; s+=n; m=m/10; } cout< } /* 有一个数列,它的第一项为0,第二项为1,以后每一项都是它的前两项之和,编程计算出此数列的第23项 */ #include void main() { int jieguo; int a1=0, a2=1, a3; for(int i=3; i<=23; i++) { a3=a1+a2; a1=a2; a2=a3; } jieguo=a3; cout<<"该数列第23项为:"< } /* 求多项式 1!+2!+3!+……+15!的值并 存入变量 out中. */ #include void main() { int n=1,s=0; double out=0; for (int i=1; i<=15; i++) { n = n*i; s += n; cout < out = s ; } /* 打印水仙花数及个数 n (水仙花数是三位数,每 位数字的立方和等于这个数本身) */ #include void main() { int m,n=0,a,b,c; for(m=100;m<=999;m++) { a=m/100; b=m%100/10; c=m%100%10; if(m==a*a*a+b*b*b+c*c*c) { cout< n++; } } } /* 定义一个C++函数: 分段函数double f(double)。 */ #include double f(double); void main() { double a, b; a=-35; b=f(a); cout<<"x="< cout<<"42!="< } double fac(int x) { double y; for(y=1; x>1; x--) y*=x; return y; } /* 编写一个函数:bool isHuZhi(int n1, int n2),判断n1和n2是否互质。*/ #include bool isHuZhi(int n1, int n2) { /* int r, t; if(n1 t=n1; n1=n2; n2=t; } while((r=n1%n2)!=0){ n1=n2; n2=r; } if(n2==1) return true; else return false; */ for(int i=2; i<=n1; i++){ if(n1%i==0&&n2%i==0) return false; } return true; } void main() { int a, b; cout<<"请输入两个正整数:"; cin>>a>>b; if(isHuZhi(a, b)) cout< else