实验内容:

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)要求使用switch语句。

下面是第一小问的解答:

 #include <iostream>
#include <string.h>
using namespace std;
int main ()
{
char a;
while()
{ cout<<"Menu: A(dd) D(elete) S(ort) Q(uit),Select one:";
cin>>a;
if(a=='A')
{
cout<<"data has been added"<<endl;
continue;
}
else if(a=='D')
{
cout<<"data has been deleted"<<endl;
continue;
}
else if(a=='S')
{
cout<<"data has been sorted"<<endl;
continue;
}
else if(a=='Q')
{ break;
}
else
{
cout<<"no such choice concluded"<<endl;
continue;
}
}
return ;
}

说一句题外话,原来在C语言中实现循环输入用的是while(scanf("%d",&n)!=EOF)或者scanf("%d",&n);while(n--),但是在C++里没有scanf()函数的用法,所以用while(1)来控制循环输入。

下面是第二个小问的解答:

 #include <iostream>
using namespace std;
int main ()
{
char a;
while()
{
cout<<"Menu: A(dd) D(elete) S(ort) Q(uit),Select one:";
cin>>a;
switch(a)
{
case 'A':
{
cout<<"data has been added"<<endl;
continue;
}
case 'D':
{
cout<<"data has been deleted"<<endl;
continue;
}
case 'S':
{
cout<<"data has been sorted"<<endl;
continue;
}
case 'Q':
{
break;
}
default:
{
cout<<"no such choice concluded"<<endl;
continue;
}
}
if(a=='Q')break;
}
return ;
}

2-29:用穷举法找出1~100间的质数并显示出来。分别使用while,do...while,for循环语句实现。

下面是第一个小问的解答:

 #include <iostream>
#include <math.h>
#include<iomanip>
using namespace std;
int main ()
{
int i=,j,n=;
while(i<=)
{
for(j=;j<=sqrt(i);j++)
{
if(i%j==)break;
}
if(j>sqrt(i)&&i>)
{
n++;
if(n%==)
cout<<setw()<<i<<endl;
else
cout<<setw()<<i;
}
i++;
}
return ; }

个人认为二三两小问于第一问的区别不大,只是把while()改成do...while()或者for()即可。

我在这里使用了math.h的头文件来使用求根sqrt()函数来提高效率,并用setw()来实现右对齐美化。

2-32:在程序中定义一个整型变量,赋以1~100的值,要求用户猜这个数,比较两个数的大小,把结果提示给用户,直到猜对为止。

 #include <iostream>
#include <cstdlib>
using namespace std;
int main ()
{
int thenumber;
int seed;
int guess;
cout<<"please enter an unsigned number:";
cin>>seed;
srand(seed);
thenumber=rand()%+;
while()
{ cout<<"please guess the number:";
cin>>guess;
if(guess>thenumber)
{
cout<<"the answer is smaller than the number you have just given"<<endl;
continue;
}
if(guess<thenumber)
{
cout<<"the answer is bigger than the number you have just given"<<endl;
continue;
}
if(guess==thenumber)
{
cout<<"the answer is just been guessed"<<endl;
break;
}
}
return ;
}

原本我是自己设置的一个要猜的数,但是不能重复利用,所以用随机数和种子函数,先自己输入一个无符号整数作为种子,这样就能每次都生成不同的随机数。

值得注意的是系统生成的随机数是任意大小的但是题目只要求1-100的数,所以需要把它%100+1。do...while类似,把while改成do...while即可。

2-34:口袋中有红黄蓝白黑5种颜色的球若干个。没词葱口袋中取出3个颜色不同的球,问有多少种取法。

 #include <iostream>

 using namespace std;
int main ()
{
int a=,b=,i,n,m,s;
n=a,m=b,s=b;
for(i=;i<s;i++)
{
n--;
a=a*n;
}
//cout<<a;
for(i=;i<s;i++)
{
m--;
b=b*m;
// cout<<m;
}
// cout<<b;
a=a/b;
cout<<a<<endl;
return ;
}

这个只是求出不考虑顺序的取法总数,而且没有显示是哪几种取法。所以升级求考虑顺序且能显示是哪几种顺序的程序。

 #include <iostream>
#include <iomanip>
using namespace std;
void swamp(int & ,int&);
void sperm(int color[],int,int );
int sum;
int main ()
{
int i,color[],k,m;
for(i=;i<=;i++)
color[i]=i+;
k=;
m=;
sperm(color,k,m);
cout<<endl;
cout<<sum<<endl; return ;
}
void swamp(int &a,int &b)
{
int t;
t=a;
a=b;
b=t;
}
void sperm (int color[],int k,int m)
{
int i;
if(k==)
{
sum++;
for (i=;i<=;i++)
{
cout<<color[i];
}
if(sum%==)cout<<endl;
else cout<<' ';
}
else
{
for(i=k;i<m;i++)
{
swamp(color[k],color[i]);
sperm(color,k+,m);
swamp(color[k],color[i]);
}
}
}

这原本是个全排列算法,我是通过学习他人的程序得到的,但是这里不是全排列而是只要把5个中的3个进行排列,所以做了略微的调整,还有我用了数字1-5来代替颜色,进行优化可以用二维字符数组。

实验反思:

1.顺序,循环,条件语句的熟练掌握是学好编程的关键,刚开始不会可以通过模仿,之后自己总结开发出自己的程序设计。

2.swrt(),setw(),srand(),rand()等函数的掌握能让程序设计变得事半功倍,同时有美化作用。

3.对于枚举类型和字符数组的掌握还是不够,要多加练习。

我评论的博客地址:

https://www.cnblogs.com/yidaoyigexiaopenyou/

https://www.cnblogs.com/shy0825/

https://www.cnblogs.com/Kun-520

c++ 第一次实验的更多相关文章

  1. 20145330《Java程序设计》第一次实验报告

    20145330<Java程序设计>第一次实验报告 实验一Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Ja ...

  2. 20145320《Java程序设计》第一次实验报告

    20145320<Java程序设计>第一次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.08 18: ...

  3. 20145224&20145238 《信息安全系统设计基础》 第一次实验

    20145224&20145238 <信息安全系统设计基础>第一次实验 课程:信息安全系统设计基础 班级:1452 姓名:陈颢文 荆玉茗 学号:20145224 20145238 ...

  4. 20145317彭垚 《Java程序设计》第一次实验实验报告

    20145317彭垚 <Java程序设计>第一次实验实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验名称:Java开发环境的 ...

  5. 20145103JAVA第一次实验报告

    20145103<Java程序设计>第一次实验报告 实验内容及其步骤 一.命令行下java程序开发 建立一个java文件,然后在命令行中,对程序进行javac编译,就生成了.class文件 ...

  6. 网络对抗第一次实验——PC平台逆向破解(5)M

    网络对抗第一次实验--PC平台逆向破解(5)M 实践一 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 操作步骤: 获取实验用文件pwn1,复制,复制出来的文件改名为20155 ...

  7. Java第一次实验 20145104张家明

    Java第一次实验 实验报告 实验要求: 1.使用JDK编译.运行简单的Java程序 2.使用IDEA 编辑.编译.运行.调试Java程序 实验内容: 1.使用JDK编译.运行简单的Java程序: 2 ...

  8. 20145127《java程序设计》第一次实验

    <java程序设计>第一次实验 实验内容及其步骤 1.使用JDK编写简单的Java小程序: Java编译的方法有很多,最基础最简单的就是使用命令行,记事本,Java虚拟机直接进行编译,下面 ...

  9. 20162327WJH第一次实验——线性结构

    20162327WJH第一次实验--线性结构 实 验 报 告 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 王旌含 学号:20162327 成绩: 2分 指导教师:娄嘉鹏 王志强 ...

  10. 20155210 潘滢昊 Java第一次实验---凯撒密码

    Java第一次实验---凯撒密码 实验内容 实现凯撒密码,并进行测试. 实验代码 import java.io.*; import java.util.Scanner; public class ks ...

随机推荐

  1. 清北-Day6-regular

    题目描述 给出一个只包含左括号和右括号的字符串,插入若干左右括号(可以插在任意位置)之后使得字符串长度为$ 2\times n $ 且是一个合法的括号序列.求最后能组成多少种不同的合法括号序列. [合 ...

  2. vue源码分析之new Vue过程

    实例化构造函数 从这里可以看出new Vue实际上是使vue构造函数实例化,然后调用_init方法 _init方法,该方法在 src/core/instance/init.js 中定义 Vue.pro ...

  3. node express+socket.io实现聊天室

    参照网址:https://www.jb51.net/article/135058.htm https://www.cnblogs.com/limitcode/p/7845168.html https: ...

  4. IT行业中文资源网址集绵

    1. IT网址:https://github.com/ityouknow/awesome-list 2.后端架构师网址:https://github.com/xingshaocheng/archite ...

  5. Eclipse安装git插件以及关联导入GitHub项目

    一.Eclipse配置git 1.查看自己eclipse的版本 打开eclipse 导航: help->AboutEclipse 如图: 2.检查Eclipse中是否已安装Git插件 菜单栏He ...

  6. Python学习笔记五

    一. 递归 递归函数: def a (): print ("from b") b() def b(): print("from a ") a() a() 递推和 ...

  7. SqlServer中创建非聚集索引和非聚集索引

    聚集索引与非聚集索引,其实已经有很多的文章做过详细介绍. 非聚集索引 简单来说,聚集索引是适合字段变动不大(尽可能不出现Update的字段).出现字段重复率小的列,因为聚集索引是对数据物理位置相同的索 ...

  8. CSS之链接

    改变链接样式 当设置为若干链路状态的样式,也有一些顺序规则: a:hover 必须跟在 a:link 和 a:visited后面 a:active 必须跟在 a:hover后面 <!DOCTYP ...

  9. Win10安装java环境

    window系统安装java 一.下载JDK 1.首先需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downl ...

  10. tensorflow安装-【老鱼学tensorflow】

    TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,Tensor ...