2-28

(1)用if else 语句

#include<iostream>

using namespace std;

int main(){
char alphabet;
while (true)
{
cout << "Menu : A(dd) D(elete) S(ort) Q(uit) , Select one:" << endl;
cin >> alphabet ;
if(alphabet=='A')
{
cout << "Data has added" << endl;
}
else if(alphabet=='D')
{
cout << "Data has deleted" << endl;
}
else if(alphabet=='S')
{
cout << "Data has sorted" << endl;
}
else if(alphabet=='Q')
break;
else
cout << "import error,please import another one" << endl;
} return 0;
}

这里用while(true)多组输入,在题目的基础上还多加了一个输入错误的提示。代码运行结果如下:

(2)用switch

switch语句相对于if语句简便了很多

#include<iostream>

using namespace std;

int main(){
char alphabet;
while(true)
{
cout << "Menu: A(dd) D(elete) S(ort) Q(uit),Select one :"<<endl;
cin >> alphabet;
if(alphabet=='Q')
break;
switch(alphabet){
case 'A': cout << "Data has been added" << endl; break;
case 'D': cout << "Data has been deleted" << endl; break;
case 'S': cout << "Data has been sorted" << endl; break;
default : cout << "import error,please import another one" <<endl;
}
} return ;
}

和第一问没有多大区别,运行时间比上一个要快,运行结果如下:

2-29  用穷举法找出1-100的质数

(1)用while

思路是i%j(j<i),如果i=j,就是质数

代码如下:

#include<iostream>

using namespace std;

int main(){
int i=;
while(i<=){
int j=;
while(j<i){
if(i%j==)
break;
j++;
}
if(j==i)
cout << i << endl;
i++;
} return ;
}

运行结果如下:

(2)用do while

由于排列的不够美观,所以这次把结果的排列优化了一遍,代码如下:

#include<iostream>
#include<iomanip> using namespace std; int main(){
int i=;
int a=;
while(i<=){
int j=;
while(j<i){
if(i%j==)
break;
j++;
}
if(j==i)
{
a++;
cout << setw() << i;
if(a%==)
{
cout << endl;
}
}
i++;
} return ;
}

运行结果如下:

(3)用for循环:

代码如下:

#include<iostream>
#include<iomanip> using namespace std; int main(){
int i;
int a=;
for( i=; i<=; i++ )
{
int j=;
for( ; j<i; j++)
{
if(i%j==)
break;
}
if(i==j)
{
a++;
cout << setw() << i;
if(a%==)
cout << endl;
}
} return ;
}

运行结果如下:

从结果来看,3个结果for循环用的时间最少。

2-32 猜数字

(1)用while

#include<iostream>

using namespace std;

const int GUESSNUMBER=;

int main(){
cout << " Please guess a number from 1 to 100 :" << endl;
int num;
while(true){
cin >> num;
if(num==GUESSNUMBER)
{
cout << "Congratulations!You are right!" <<endl;
break;
}
if(num>GUESSNUMBER)
{
cout << "Bigger than num" << endl;
}
if(num<GUESSNUMBER)
{
cout << "smaller than num" << endl;
}
} return ;
}

第一次是定义了一个数字

运行结果如下:

(2)第二次我运用了rand函数,在上一题的基础上优化了一下:

#include<iostream>
#include<cstdlib> using namespace std; int main(){
cout << " Please guess a number from 1 to 100 :" << endl;
int num;
int GUESSNUMBER;
GUESSNUMBER = +(rand()%);
while(true){
cin >> num;
if(num==GUESSNUMBER)
{
cout << "Congratulations!You are right!" <<endl;
break;
}
if(num>GUESSNUMBER)
{
cout << "Bigger than num" << endl;
}
if(num<GUESSNUMBER)
{
cout << "smaller than num" << endl;
}
} return ;
}

运行结果如下:

2-34

(1)不考虑顺序。我是运用了for循环。如果前面比后面的大,就break,代码如下:

#include<iostream>

using namespace std;

int main(){
int total=;
enum Colour { red= , yellow , blue , white , black };
int i,j,k;
for( i=; i<=; i++)
{
for(j=;j<=;j++)
{
if(i>=j)
continue;
for(k=;k<=;k++)
{
if(j>=k)
continue;
total++;
}
}
}
cout << "total = " <<total << endl;
return ;
}

运行结果如下:

(2)我考虑了顺序,也是用for循环

代码如下:

#include<iostream>
#include<cstring> using namespace std; int main(){
enum Colour { red= , yellow , blue , white , black };
char *s[]={ "red", "yellow" , "blue" , "white" , "black"};
int i,j,k;
int total=;
for( i=; i<=; i++)
{
for(j=;j<=;j++)
{
if(i==j)
continue;
for( k=; k<=; k++)
{
if(j==k||i==k)
continue;
total++;
cout <<s[i]<<' '<<s[j]<<' '<<s[k]<<endl;
}
}
}
cout << total << endl;
return ;
}

运行结果如下:

第二章C++实验的更多相关文章

  1. 精通Web Analytics 2.0 (4) 第二章:选择你的网络分析灵魂伴侣的最佳策略

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第二章:选择你的网络分析灵魂伴侣的最佳策略 在Web Analytics 2.0的新世界秩序中,您必须跳出"单一真理来 ...

  2. 第二章 C语言编程实践

    上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...

  3. java多线程编程核心技术——第二章

    第一节synchronized同步方法目录 1.1方法内的变量为线程安全的 1.2实例变量非线程安全 1.3多个对象多个锁 1.4synchronized方法与锁对象 1.5脏读 1.6synchro ...

  4. Day2 《机器学习》第二章学习笔记

    这一章应该算是比价了理论的一章,我有些概率论基础,不过起初有些地方还是没看多大懂.其中有些公式的定义和模型误差的推导应该还是很眼熟的,就是之前在概率论课上提过的,不过有些模糊了,当时课上学得比较浅. ...

  5. 《linux内核设计与实现》第二章

    第二章 从内核出发 一.获取内核源码 1.使用Git(linux创造的系统) 使用git来获取最新提交到linux版本树的一个副本: $ git clone git://git.kernel.org/ ...

  6. Linux 读书笔记 三 (第二章)

      一.学习目标 1. 理解二进制在计算机中的重要地位 2. 掌握布尔运算在C语言中的应用 3. 理解有符号整数.无符号整数.浮点数的表示 4. 理解补码的重要性 5. 能避免C语言中溢出,数据类型转 ...

  7. 【黑金原创教程】【TimeQuest】【第二章】TimeQuest模型角色,网表概念,时序报告

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  8. 【黑金原创教程】【Modelsim】【第二章】Modelsim就是电视机

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  9. java多线程编程核心技术——第二章总结

    第一节synchronized同步方法目录 1.1方法内的变量为线程安全的 1.2实例变量非线程安全 1.3多个对象多个锁 1.4synchronized方法与锁对象 1.5脏读 1.6synchro ...

随机推荐

  1. Insufficient free space for journal files

    前两天请假了,公司的很多app突然挂掉了,说是mongodb莫名的挂掉了,赶紧进去看了看日志: --31T14:: [initandlisten] ERROR: Insufficient free s ...

  2. 一些命令可以帮您了解Linux 操作系统用户信息

    1 显示上次登录的用户信息列表,包括(登录时间.退出时间.登录IP): [sywu@wusuyuan ~]$ last root pts/1 192.168.1.3 Wed Aug 27 22:08 ...

  3. sql insert、update、delete完以后返回主键ID

    以前只用过在insert完以后利用select @@IDENTITY返回主键ID,最近在做微信公众平台,遇到一个需求是在帮绑定万微信openid后自动完成登陆,这就需要update以后返回主键ID,查 ...

  4. 大前端涉猎之前后端交互总结3:使用PHP进行表单数据删除与查询

    1 首先:获取用户 id,根据id 删除指定的数据. 在链接完数据库之后,通过$_GET 超全局变量,获取删除的书内容 $id = $_GET['id']; 2 准备delete SQL语句: $sq ...

  5. Postgresql导出指定的数据表

    两对双引号"\"\""是用于解决:pg_dump: no matching tables were found 问题. pg_dump -h localhost ...

  6. Windows pip

    pip 最常用命令(go语言用go get) 显示版本和路径 pip --version 获取帮助 pip --help 升级 pip pip install -U pip 如果这个升级命令出现问题 ...

  7. linux 管道与重定向

    命令行shell数据流有如下定义: 通过管道和重定向可以控制CLI的数据流

  8. 优化MYSQL配置文件MY.INI

    table_cache=1024 物理内存越大,设置就越大.默认为2402,调到512-1024最佳.由于每个客户端连接都会至少访问一个表,因此此参数的值与max_connections有关.当某一连 ...

  9. SQL函数(不定时更新)

    sum求和:select sum(a) from table1 group by b   依据b列为a列求和 distinct去除重复:select distinct(a) from table1   ...

  10. leetcode 加一

    给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 1: ...