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)要求使用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++ 第一次实验的更多相关文章
- 20145330《Java程序设计》第一次实验报告
20145330<Java程序设计>第一次实验报告 实验一Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Ja ...
- 20145320《Java程序设计》第一次实验报告
20145320<Java程序设计>第一次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.08 18: ...
- 20145224&20145238 《信息安全系统设计基础》 第一次实验
20145224&20145238 <信息安全系统设计基础>第一次实验 课程:信息安全系统设计基础 班级:1452 姓名:陈颢文 荆玉茗 学号:20145224 20145238 ...
- 20145317彭垚 《Java程序设计》第一次实验实验报告
20145317彭垚 <Java程序设计>第一次实验实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验名称:Java开发环境的 ...
- 20145103JAVA第一次实验报告
20145103<Java程序设计>第一次实验报告 实验内容及其步骤 一.命令行下java程序开发 建立一个java文件,然后在命令行中,对程序进行javac编译,就生成了.class文件 ...
- 网络对抗第一次实验——PC平台逆向破解(5)M
网络对抗第一次实验--PC平台逆向破解(5)M 实践一 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 操作步骤: 获取实验用文件pwn1,复制,复制出来的文件改名为20155 ...
- Java第一次实验 20145104张家明
Java第一次实验 实验报告 实验要求: 1.使用JDK编译.运行简单的Java程序 2.使用IDEA 编辑.编译.运行.调试Java程序 实验内容: 1.使用JDK编译.运行简单的Java程序: 2 ...
- 20145127《java程序设计》第一次实验
<java程序设计>第一次实验 实验内容及其步骤 1.使用JDK编写简单的Java小程序: Java编译的方法有很多,最基础最简单的就是使用命令行,记事本,Java虚拟机直接进行编译,下面 ...
- 20162327WJH第一次实验——线性结构
20162327WJH第一次实验--线性结构 实 验 报 告 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 王旌含 学号:20162327 成绩: 2分 指导教师:娄嘉鹏 王志强 ...
- 20155210 潘滢昊 Java第一次实验---凯撒密码
Java第一次实验---凯撒密码 实验内容 实现凯撒密码,并进行测试. 实验代码 import java.io.*; import java.util.Scanner; public class ks ...
随机推荐
- 使用Python进行OCR -- 识别图片中的文字
工具 Tesseract pytesseract tesserocr 朋友需要一个工具,将图片中的文字提取出来.我帮他在网上找了一些OCR的应用,都不好用.所以准备自己研究,写一个Web APP供他使 ...
- Vue项目中,要保证某个部分的高度,应该怎么设置
.icons overflow: hidden height: padding-bottom: % background: green
- ionic3 打包 混淆代码
ionic3 项目中遇到安全漏洞 解决办法: https://www.npmjs.com/package/ionic-voricles-obfuscate 安装插件 cordova plugin ad ...
- (三)Knockout 控制流程
foreach 示例1:迭代数组 foreach binding主要作用于lists或是tables内数据单元的动态绑定.下面是一个简单的例子: <table> <thead> ...
- WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!问题
➜ web_develop git:(master) ✗ ssh root@172.16.146.143@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...
- scrapy_redis 相关: 将 jobdir 保存的爬虫进度转移到 Redis
0.参考 Scrapy 隐含 bug: 强制关闭爬虫后从 requests.queue 读取的已保存 request 数量可能有误 1.说明 Scrapy 设置 jobdir,停止爬虫后,保存文件目录 ...
- python基础篇_005_迭代器和生成器
Python迭代器和生成器 1.迭代器 迭代:可以将某个数据集内的数据“一个挨着一个的取出来” for i in range(1, 10, 2): # in 后面的对象必须是一个可迭代的 print( ...
- Round#534 div.2-B Game with string
唔,第一次参加,掉了好多分. http://codeforces.com/contest/1104/problem/B 不用考虑太多,string真的好厉害. #include<stdio.h& ...
- vue加载优化策略
vue.js是一个比较流行的前端框架,与react.js.angular.js相比来说,vue.js入手曲线更加流畅,不管掌握多少都可以快速上手.但是单页面应用也都有其弊病,有时候首屏加载慢的让人捏舌 ...
- 跑的飞快的dinic
orz kczno1 目前还是不知道怎么卡,也不会证明复杂度是正确的 其实我感觉卡不了