实验一:C++简单程序设计
【实验一】
#2-28
实现一个简单的菜单程序,运行时显示“Menu:A(dd) D(elete) S(ort) Q(uit),Selete one:”提示用户输入。A表示增加,D表示删除,S表示排序,Q表示退出。输入为A、D、S时分别提示“数据已经增加、删除、排序。”,输入Q时程序结束。
(1)if...else...语句,break,continue控制
//2_28.cpp
#include<iostream>
using namespace std;
int main(){
char x;
int i;
char A,D,S,Q;
cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:";
for(;i=;i++){
cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:";
cin>>x;
if(x=='A'){
cout<<"数据已增加"<<endl;
continue;
} else if(x=='D'){
cout<<"数据已删除"<<endl;
continue;
} else if(x=='S'){
cout<<"数据已排序"<<endl;
continue;
}
else if(x!='A'&&x!='Q'&&x!='S'&&x!='D'){
cout<<"输入有误"<<endl;
continue; }
else if (x=='Q')
break; } return ;
}

(2)switch语句
//2_28.cpp
#include<iostream>
using namespace std;
int main(){
char x;
char A,D,S,Q;
cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:";
cin>>x;
for(;x!='Q';){
switch (x){
case 'A':
cout<<"数据已增加"<<endl;
break;
case 'D':
cout<<"数据已删除"<<endl;
break;
case 'S':
cout<<"数据已排序"<<endl;
break;
default:
cout<<"输入错误"<<endl;
break;
}
cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:";
cin>>x;
}
return ;
}

#2-29
用穷举法找出1~100间的质数并显示出来。
(1)while语句
//2_29.cpp
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main(){
int i=,n,j,k=; while(i<=){
n=sqrt(i);
for(j=;j<=n;j++){
if(i%j==)break;
}
if(j>n&&i!=){
cout<<setw()<<i;
k++;
if(k>){
cout<<setw()<<endl;
k=;
}
}
i++;
}
return ;
}

(2)do...while语句
//2_29.cpp
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main(){
int i=,n,j,k=; do{
n=sqrt(i);
for(j=;j<=n;j++){
if(i%j==)break;
}
if(j>n&&i!=){
cout<<setw()<<i;
k++;
if(k>){
cout<<setw()<<endl;
k=;
}
}
i++;
}while(i<=);
return ;
}

(3)for语句
//2_29.cpp
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main(){
int i=,n,j,k=;
for(i=;i<=;i++){
n=sqrt(i);
for(j=;j<=n;j++){
if(i%j==)break;
}
if(j>n&&i!=){
cout<<setw()<<i;
k++;
if(k>){
cout<<setw()<<endl;
k=;
}
}
}
return ;
}

#2-32
在程序中定义一个整型变量,赋以1~100的值,要求用户猜这个数,比较两个数的大小,把结果提示给用户,直到猜对为止。
(1)while语句
//2-32.cpp
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main(){
int x,n;
srand( (unsigned)time( NULL ) );
n=rand()%100+1;
cout<<"Enter a number please:";
cin>>x;
while(x!=n){
if(x>n){
cout<<"smaller than the number"<<endl;
}
if(x<n){
cout<<"bigger than the number"<<endl;
}
cout<<"Enter a number please:";
cin>>x;
if(x==n){
cout<<"congratulation you guess the number!"<<endl;
exit(0);
}
}
return 0;
}

(2)do-while语句
//2-32.cpp
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main(){
int x,n;
srand( (unsigned)time( NULL ) );
n=rand()%+; cout<<"Enter a number please:"; cin>>x; do{ if(x>n){
cout<<"smaller than the number"<<endl;
}
if(x<n){
cout<<"bigger than the number"<<endl;
}
cout<<"Enter a number please:"; cin>>x;}while(x!=n);
if(x==n){
cout<<"congratulation you guess the number!"<<endl;
} return ; }

#2-34
口袋中有红黄蓝白黑5种颜色的球若干个。没词葱口袋中取出3个颜色不同的球,问有多少种取法。
(1)无顺序取法(10种)
//2-34.cpp
#include<iostream>
using namespace std;
int main(){
enum num{red,yellow,blue,white,black};
int i,j,k,n=,h;
for(i=red;i<=black;i++){
for(j=red+i+;j<=black;j++){
for(k=red+j+;k<=black;k++){
n++;
switch(i){
case :cout<<"red"<<ends;break;
case :cout<<"yellow"<<ends;break;
case :cout<<"blue"<<ends;break;
case :cout<<"white"<<ends;break;
case :cout<<"black"<<ends;break;
}
switch(j){
case :cout<<"red"<<ends;break;
case :cout<<"yellow"<<ends;break;
case :cout<<"blue"<<ends;break;
case :cout<<"white"<<ends;break;
case :cout<<"black"<<ends;break;
}
switch(k){
case :cout<<"red"<<endl;break;
case :cout<<"yellow"<<endl;break;
case :cout<<"blue"<<endl;break;
case :cout<<"white"<<endl;break;
case :cout<<"black"<<endl;break;
} } }
} cout<<"一共有"<<n<<"种方法"<<endl;
return ; }

(2)有顺序取法(60种)
//2-34.cpp
#include<iostream>
using namespace std;
int main(){
enum num{red,yellow,blue,white,black};
int i,j,k,n=,h;
for(i=red;i<=black;i++){
for(j=red;j<=black;j++){
if(i!=j){
for(k=red;k<=black;k++){
if(k!=j&&k!=i){
n++;
switch(i){
case :cout<<"red"<<ends;break;
case :cout<<"yellow"<<ends;break;
case :cout<<"blue"<<ends;break;
case :cout<<"white"<<ends;break;
case :cout<<"black"<<ends;break;
}
switch(j){
case :cout<<"red"<<ends;break;
case :cout<<"yellow"<<ends;break;
case :cout<<"blue"<<ends;break;
case :cout<<"white"<<ends;break;
case :cout<<"black"<<ends;break;
}
switch(k){
case :cout<<"red"<<endl;break;
case :cout<<"yellow"<<endl;break;
case :cout<<"blue"<<endl;break;
case :cout<<"white"<<endl;break;
case :cout<<"black"<<endl;break;
}
}
}
}
}
} cout<<"一共有"<<n<<"种方法"<<endl;
return ; }


【实验总结与体会】
对于此实验一中的各类题使用while do-while switch for 等不同循环结构的使用有了更加清晰的认识,和区别认知。并且掌握了域宽的使用方式。
域宽的头文件为#include<iomanip>,在输出时添加入setw()语句,在括号中填入自己程序的域宽。
实验一中的2-34的枚举类型属于第一次接触,以及实验一中的2-32中的随机数的生成有了系统的认知,并且能运用其在程序中。
随机数使用的是srand rand函数,头文件为#include<ctime>,并且使用srand((unsigned)time(0))或srand((unsigned)time(NULL))srand函数产生一个随机种子运用rand()%max+min进行生成一个随机数,max为最大数,min为最小数。并且当生成double类型的随机数,要声明例如rand()/double(RAND-MAX)。
枚举类型:枚举类型()enum枚举类型名{变量值类型}例如enum colour{red black blue white.......};枚举类型具有默认值,默认按照顺序0,1,2,3........,因此如此题中如果要输出变量值red black等等,需要对其进行强制转型,例如static-cast<int>(x)对x进行转型,本题中我并没有使用此方法,因为我还不太会用。我是用switch函数对其输出为枚举类型。枚举类型的元素是常量,不能对其进行赋值。
评论:https://www.cnblogs.com/1499978329f/p/10540143.html#4210744
https://www.cnblogs.com/AliceMaestra/p/10561811.html#4210748
https://www.cnblogs.com/shy0825/p/10561610.html#4210750
实验一:C++简单程序设计的更多相关文章
- 实验一 c++简单程序设计
一.实验内容 1.ex 2_28 (1) 用if...else判断 #include<iostream> using namespace std; int main() { char i; ...
- 实验1:c++简单程序设计(1)
//文中有格式错误请无视 //这个编辑器一言难尽 实验目的 1. 掌握c++中类c部分的编程知识: 数据类型,常量,变量,运算符,表达式,分支结构,循环结构 2. 掌握C++中数据输入和输出的基本方法 ...
- 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- 160809209_李梦鑫_C语言程序设计实验3 循环结构程序设计
<C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吉吉老师 实验地点 C05 ...
- 20145206《Java程序设计》实验二Java面向对象程序设计实验报告
20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
- 20145208 实验三 Java面向对象程序设计
20145208 实验三 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...
- 20162330 实验四 《Android程序设计》 实验报告
2016-2017-2 实验报告目录: 1 2 3 4 5 20162330 实验四 <Android程序设计> 实验报告 课程名称:<程序设计与数据结构> 学生班级:1623 ...
- 20162302 实验四《Android程序设计》实验报告
实 验 报 告 课程:程序设计与数据结构 姓名:杨京典 班级:1623 学号:20162302 实验名称:Android程序设计 实验器材:装有Android Studio的联想拯救者80RQ 实验目 ...
- java实验四《Android程序设计》实验报告
一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:张士洋 学号:20165308 指导教师:娄嘉鹏 实验日期:2018年5月14日 实验时间:13:45 - 15:25 实验序号:08 ...
- 2017-2018-2 20165312 实验四《Android程序设计》实验报告
2017-2018-2 20165312 实验四<Android程序设计>实验报告 一.安装Android Studio并进行Hello world测试和调试程序 安装Android St ...
随机推荐
- SLAM的前世今生
SLAM技术已经蓬勃发展起来,这里综述性地介绍下SLAM的主体知识.SLAM的主体技术不多,难点在于细节.来源是:技术分享.ppt 前世 人类惆怅近千年的问题不是:我是谁,我要做什么,我要去哪里!而是 ...
- [转]kindeditor隐藏上传图片框网络图片或本地上传的功能
原文地址:http://www.lingchenliang.com/post/154.html kindeditor富文本编辑器点击上传图片按钮,在弹出的窗口中去掉上传网络图片的功能,只留下本地上传, ...
- FastDFS特性及问题思考
FastDFS是国人开发的一款分布式文件系统,目前社区比较活跃.系统中存在三种节点:Client.Tracker.Storage,在底层存储上通过逻辑的分组概念,使得通过在同组内配置多个Storage ...
- 解决SVN 每次操作都需要重输入用户名密码问题
把目录C:\Users\当前账号\AppData\Roaming\Subversion\auth下的文件删除,然后重启hbuilder或eclipse工具,重新输入账号密码之后,保存即可解决该问题.
- 蜕变成蝶~Linux设备驱动之异步通知和异步I/O
在设备驱动中使用异步通知可以使得对设备的访问可进行时,由驱动主动通知应用程序进行访问.因此,使用无阻塞I/O的应用程序无需轮询设备是否可访问,而阻塞访问也可以被类似“中断”的异步通知所取代.异步通知类 ...
- 【XGBOOST】
https://www.cnblogs.com/wxquare/p/5541414.html
- Centos6.8 下 从零开始 部署 Java Web 应用
一.硬件信息 CPU: [root@localhost ~]# grep 'physical id' /proc/cpuinfo | sort -u | wc -l 2 [root@localhost ...
- android控件RecyclerView中,如何显示自定义分割线以及最后一项去除分割线
在控件RecyclerView中,分割线DividerItemDecoration类的使用经常见,如果是使用自带的分割线,只需要这样写即可 RecyclerView mRecyclerView; mR ...
- 【thinkphp5.1】 endroid/qrcode 二维码生成
composer 链接: https://packagist.org/packages/endroid/qrcode 注意:PHP版本 要求 7.1+ 1. 使用 composer 安装 endroi ...
- [原]Chef_Server and Chef_WorkStation and Chef_Client Install Guide[by haibo]
一.Prerequisite OS : CentOS-7.0-1406-x86_64-DVD.iso Time Server : NTP Server SERVER NAME IP PLAN ...