C++程序设计实验二-创新互联
【实验目的与要求】
成都创新互联是由多位在大型网络公司、广告设计公司的优秀设计人员和策划人员组成的一个具有丰富经验的团队,其中包括网站策划、网页美工、网站程序员、网页设计师、平面广告设计师、网络营销人员及形象策划。承接:成都网站建设、成都网站设计、网站改版、网页设计制作、网站建设与维护、网络推广、数据库开发,以高性价比制作企业网站、行业门户平台等全方位的服务。
- 学习与掌握逻辑运算与逻辑表达式。
- 熟练掌握 if、switch、while、do-while、for语句的语法结构与执行过程。
- 掌握选择、循环程序的设计方法。
【实验内容】
1、输入一个字符,如果为小写,转换为大写输出,否则,输出其后继字符的 ASCII 码值。
2、输入 x 计算表达式的值:分别输入 0.2, 1, 5, 0,观察输出结果。
3、输入三角形的三条边,求周长,并判断该三角形是否为等腰三角形(提示:要三边是否可以构成三角形)
4、 完成计算器程序,实现(+ - * / %)运算。考虑除数为 0 与运算符非法的情况。
5、输入一行字符,分别统计出其中英文字母、空格、数字字符和其它字符的个数。
提示:从键盘上读入一个字符给变量 c,判断 c 是属于哪种字符并计数,循环读入下个字符,直到回车换行字符'\n'为止。
6、编写一个程序:从键盘上输入两个正整数,求 a 和 b 的大公约数与最小公倍数。
7、使用循环结构输出下列图形:
8、从键盘输入 a,用迭代法求 a 的平方根 x= a 。
求平方根的迭代公式为
要求精确到|xn+1 - xn|
提示:迭代法是把 xn代入迭代公式右边,
计算出 xn+1来,然后把 xn+1 作为新的 xn ,计算出新的 xn+1, 如此重复,直到|xn+1 - xn|
思考:(1)如果输入 a 为负,在运行时会出现什么情况? 修改程序使之能处理任何的 a 值。
(2)能否|xn+1 - xn|<10-10或更小?为什么?请试一下。
9、苹果每个 0.8 元,第一天买 2 个,第二天开始,每天买前天的 2 倍,直到购买的苹果数不超过 100 的大值,求每天平均花多少钱。
【算法分析、程序与结果】
程序:
#include
using namespace std; int main() { char a; a=getchar(); if(a>='a'&&a<='z') putchar(a-32); else cout< 结果:
输入
分别输入a,b,*,观察输出结果
输入a时:
输出a的大写字母A
输入b时:
输出b的大写字母B
输入*时:
输出*后继字符的ASCLL码
2.
程序:
#include
using namespace std; int main() { double x,y; cin>>x; if(x>0&&x<1){ y=3-2*x;} if(x>=1&&x<5){ y=1/(2*x)+1;} if(x>=5&&x<10){ y=x*x; } cout< 结果:
输入
分别输入0.2,1,5,0,观察输出结果
输入0.2时:
输出2.6
输入1时:
输出1.5
输入5时:
输出25
输入0时:
输出错误,0不在范围类
3.
程序:
#include
using namespace std; int main() { int a,b,c,s; cin>>a>>b>>c; if(a+b>c&&a+c>b&&b+c>a) { s=a+b+c; cout< 结果:
输入
分别输入1,1,2;2,3,4;2,2,3;三组数据,观察输出结果
输入1,1,2时:
输出不是一个三角形
输入2,3,4时:
输出周长9,并判断不是等腰三角形
输入2,2,3时:
输出周长7,并判断是等腰三角形
4.
程序:
#include
using namespace std; int main() { double x,y; while(1) { char s; cin>>x>>s>>y; if(s=='+') cout< 结果:
输入
分别输入1+2;1-2;1*2;1/3;4%3;1/0;1&2;观察输出结果
输入1+2时:
输出1+2=3
输入1-2时:
输出1-2=-1
输入1*2时:
输出1*2=2
输入1/3时:
输出1/3=0.333333
输入4%3时:
输出4%3=1
输入1/0时:
输出error(除数不能为0)
输入1&2时:
输出invaild(输入了不合法字符)
5.
程序:
#include
using namespace std; int main() { char c; int english=0,num=0,space=0,other=0; while((c=getchar())!='\n') { if(c>='a'&&c<='z'||c>='A'&&c<='Z') { english++;} else if(c==' ') { space++;} else if(c>='0'&&c<='9') { num++; } else other++; } cout<<"英文字母:"< 结果:
输入
输入一串字符“I love CHINA @@ 2022”观察输出结果
6.
程序:
#include
using namespace std; int main() { int a,b,Y,B; cin>>a>>b; for(int i=1;i<=a&&i<=b;i++) { if(a%i==0&&b%i==0) { Y=i; } } for(int i=1;;i++) { if(i%a==0&&i%b==0) { B=i; break; } } cout< 结果:
输入
分别输入2,3;4,32;观察输出结果
输入2,3时:
输出大公约数1,最小公倍数6
输入4,32时:
输出大公约数4,最小公倍数32
7.
程序:
#include
using namespace std; int main() { char c='*'; for(int i=1;i<=5;i++) { for(int m=1;m<=5-i;m++) { cout<<" "; } for(int j=1;j<=i;j++) { cout< 结果:
输入
无
输出
8.
程序:
#include
#include using namespace std; int main() { double a,x,x1,t; cin>>a; x=a; do { x1=(x+a/x)/2; t=x; x=x1; x1=t; }while(fabs(x-x1)>1/10000); cout< 结果:
输入
分别输入2,4,10,观察输出结果
输入2时:
输出1.41421
输入4时:
输出2
输入10时:
输出3.16228
- 如果输入 a 为负,在运行时会出现什么情况? 修改程序使之能处理任何的 a 值。
输入a为负数时
运行会出错,不会输出结果
修改后的程序:
#include
#include using namespace std; int main() { double a,x,x1,t; cin>>a; x=a; if(a<0){ cout<<"error"< 0){ do{ x1=(x+a/x)/2; t=x; x=x1; x1=t; }while(fabs(x-x1)>1/10000); cout<
- 能否|xn+1 - xn|<10-10或更小?为什么?请试一下。
不能;更改范围后并没有继续进行迭代
9.
程序:
#include
using namespace std; int main() { int num,sum,d; d=0; sum=0; for(int i=2;i<=100;i*=2) { num=i; sum=sum+num; d++; } cout<<0.8*sum/d< 结果:
输入
无
输出
输出平均每天花16.8元
【遇到的问题与解决办法】
- 在编译程序5时最开始使用的if结构有问题,导致计算机不能读取一整串字符中的每一个,后来经过自己的尝试用while循环结构使程序每次读取一个字符后就开始判断属于那种类型
- 编译程序8时开始就绝对值的表达不清楚,后经查阅资料,引入头文件cmath,利用函数fabs()表达绝对值。
- 编译程序9时开始利用while循环结构总是使循环体多执行一次,后经过自己的尝试换用for(int i=2;i<=100;i*=2)结构,解决了此问题。
【总结】
实验二的难度相对与实验一有了提升,考察大家对所学知识的灵活运用,并锻炼大家的创新和自学能力。通过老师的指导和自我的不断调试运行,能够较好的解决遇到的问题。实验二令我收获极大。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网页名称:C++程序设计实验二-创新互联
网页链接:http://pwwzsj.com/article/dpoccj.html