Cpp class exercise 2:修订间差异
创建页面,内容为“{{DISPLAYTITLE: “C++ 编程入门班” 练习二}} == 练习说明 == 初学时,不要复制示例代码,请全部都自己输入一遍。 C++ 入门知识…” |
|||
| (未显示同一用户的16个中间版本) | |||
| 第1行: | 第1行: | ||
{{DISPLAYTITLE: “C++ 编程入门班” 练习二}} | {{DISPLAYTITLE: “C++ 编程入门班” 练习二}} | ||
== 练习说明 == | == 练习说明 == | ||
初学时,不要复制示例代码,请全部都自己输入一遍。 | 初学时,不要复制示例代码,请全部都自己输入一遍。 | ||
(在自己刚完成的实例基础上扩展时,可以复制) | |||
C++ 入门知识手册 | C++ 入门知识手册 | ||
| 第11行: | 第11行: | ||
(参考:屏幕抓图方法汇总 https://mp.weixin.qq.com/s/llhievU1S_Zw6IxCGGqqDg) | (参考:屏幕抓图方法汇总 https://mp.weixin.qq.com/s/llhievU1S_Zw6IxCGGqqDg) | ||
== 分支结构:简单单分支 == | |||
例2.1 | |||
<syntaxhighlight lang="C++" line> | |||
#include <iostream> | |||
using namespace std; | |||
int main() | |||
{ | |||
int i; | |||
cout << "请输入一个任意整数:" << endl; | |||
cin >> i; | |||
if(i % 2 == 0) | |||
cout << "这是一个偶数。"; //分支部分只有一个语句 | |||
return 0; | |||
} | |||
</syntaxhighlight> | |||
=== 小知识:整除 === | |||
% 是整除符号,结果是0(可以除尽时)或者余数(除不尽时) | |||
例如: | |||
10 % 2 , 除得尽,结果是0(没有余数) | |||
10 % 3 , 除不尽,结果是余数1 | |||
=== 小知识: =与==的区别 === | |||
= 是赋值运算符,用来给变量一个特定的值 | |||
== 是关系运算符,是用来比较两边大小的 | |||
在条件表达式(判断真假)中要使用 == | |||
== 分支结构:简单双分支 == | |||
<syntaxhighlight lang="C++" line> | |||
//例2.2 | |||
#include <iostream> | |||
using namespace std; | |||
int main() | |||
{ | |||
int i; | |||
cout << "请输入一个任意整数:" << endl; | |||
cin >> i; | |||
if(i % 2 == 0) | |||
cout << "这是一个偶数。";//分支1部分只有一个语句 | |||
else | |||
cout << "这是一个奇数。";//分支2部分只有一个语句 | |||
return 0; | |||
} | |||
</syntaxhighlight> | |||
== 分支结构:复杂分支 == | |||
例2.3 | |||
<syntaxhighlight lang="C++" line> | |||
#include <iostream> | |||
#include <stdlib.h> | |||
#include <time.h> | |||
#define random(x) (rand()%x) | |||
using namespace std; | |||
int main() | |||
{ | |||
int i,j,k; | |||
srand((int)time(0));//用系统时间来做种子 | |||
i = random(100); | |||
j = random(100); | |||
k = i + j ; | |||
int answer; | |||
cout << i <<"+" <<j <<"= ?" << endl; | |||
cin >> answer; | |||
if(answer == k) | |||
{ | |||
//分支部分有多个语句时,需要使用{} | |||
cout << "回答正确!"<< endl; | |||
cout << i <<"+" <<j <<"=" << k << endl; | |||
} | |||
else | |||
{ | |||
cout << "回答错误!"; | |||
cout << i <<"+" <<j <<"=" << k << endl; | |||
} | |||
return 0; | |||
} | |||
</syntaxhighlight> | |||
=== 小知识:引用头文件=== | |||
也叫包含(include)头文件 | |||
我们可以把经常使用的函数写成函数库,以方面重复调用 | |||
一个函数库可以分成两个文件, .h 文件 和 .cpp 文件 | |||
.h 文件里写的是函数的声明,.cpp 文件里写的是具体的函数代码 | |||
当我们需要使用一个函数库时,只需要把函数声明部分,即头文件引用过来就可以了 | |||
注意有两种引用格式,带.h 的,和不带的 | |||
例2.3 的2、3行也可以写成: | |||
<syntaxhighlight lang="C++"> | |||
#include <cstdlib> | |||
#include <ctime> | |||
</syntaxhighlight> | |||
请注意观察它们有什么区别? | |||
== 循环结构:“当”型循环 == | |||
“当”条件成立(为真)时,执行循环体里的代码。 | |||
例2.4 | |||
<syntaxhighlight lang="C++" line> | |||
#include <iostream> | |||
using namespace std; | |||
int main() | |||
{ | |||
int i =0; | |||
while(i<3) | |||
{ | |||
cout << "i=" << i <<endl; | |||
i++; | |||
} | |||
return 0; | |||
} | |||
</syntaxhighlight> | |||
== 循环结构:“直”型循环 == | |||
执行循环体里的代码,然后检查条件,如果成立继续循环执行,“直”到条件不成立 | |||
例2.5 | |||
<syntaxhighlight lang="C++" line> | |||
#include <iostream> | |||
using namespace std; | |||
int main() | |||
{ | |||
int i =0; | |||
do | |||
{ | |||
cout << "i=" << i <<endl; | |||
i++; | |||
}while(i<3); | |||
return 0; | |||
} | |||
</syntaxhighlight> | |||
== 扩展1:“当”型 和 “直”型循环结构的区别 == | |||
例2.4、例2.5的运行结果都一样,那两种结构有什么区别呢? | |||
请大家把 例2.4、例2.5 第6行改为 | |||
<syntaxhighlight lang="C++"> | |||
int i =3; | |||
</syntaxhighlight> | |||
运行结果会有什么不同呢?从中可以看出 “当”型 和 “直”型结构的区别是什么呢? | |||
== 循环结构:计次循环 == | |||
例2.6 | |||
<syntaxhighlight lang="C++" line> | |||
#include <iostream> | |||
using namespace std; | |||
int main() | |||
{ | |||
for(int i=0;i<3;i++) | |||
{ | |||
cout << "i=" << i <<endl; | |||
} | |||
return 0; | |||
} | |||
</syntaxhighlight> | |||
=== 小知识 === | |||
在C/C++ 中计数时,习惯多是从0开始,而不是1。 | |||
在循环计数、数组索引中多是从0开始。 | |||
== 结构嵌套 == | |||
在循环结构中嵌套选择结构 | |||
例2.7 | |||
<syntaxhighlight lang="C++" line> | |||
#include <iostream> | |||
#include <stdlib.h> | |||
#include <time.h> | |||
#define random(x) (rand()%x) | |||
using namespace std; | |||
int main() | |||
{ | |||
int i,j,k; | |||
int n =0; | |||
while(n<3) | |||
{ | |||
srand((int)time(0));//用系统时间来做种子 | |||
i = random(100); | |||
j = random(100); | |||
k = i + j ; | |||
int answer; | |||
cout << i <<"+" <<j <<"= ?" << endl; | |||
cin >> answer; | |||
if(answer == k) | |||
{ | |||
cout << "回答正确!"<< endl; | |||
cout << i <<"+" <<j <<"=" << k << endl; | |||
} | |||
else | |||
{ | |||
cout << "回答错误!"; | |||
cout << i <<"+" <<j <<"=" << k << endl; | |||
} | |||
n++; | |||
} | |||
return 0; | |||
} | |||
</syntaxhighlight> | |||
== 扩展2 == | |||
请使用“直”型循环结构 改写 例2.7 | |||
== 扩展3 == | |||
请使用计次循环结构 改写 例2.7 | |||
== 扩展4 == | |||
请使用计次循环结构,写一个判断质数(只能被1和本身整除的数)的小程序 | |||
2019年4月7日 (日) 17:34的最新版本
练习说明
初学时,不要复制示例代码,请全部都自己输入一遍。 (在自己刚完成的实例基础上扩展时,可以复制)
C++ 入门知识手册 https://www.kancloud.cn/wizardforcel/w3school-cpp/100716
软件相关问题请附屏幕图片
(参考:屏幕抓图方法汇总 https://mp.weixin.qq.com/s/llhievU1S_Zw6IxCGGqqDg)
分支结构:简单单分支
例2.1
#include <iostream>
using namespace std;
int main()
{
int i;
cout << "请输入一个任意整数:" << endl;
cin >> i;
if(i % 2 == 0)
cout << "这是一个偶数。"; //分支部分只有一个语句
return 0;
}
小知识:整除
% 是整除符号,结果是0(可以除尽时)或者余数(除不尽时)
例如:
10 % 2 , 除得尽,结果是0(没有余数) 10 % 3 , 除不尽,结果是余数1
小知识: =与==的区别
= 是赋值运算符,用来给变量一个特定的值
== 是关系运算符,是用来比较两边大小的
在条件表达式(判断真假)中要使用 ==
分支结构:简单双分支
//例2.2
#include <iostream>
using namespace std;
int main()
{
int i;
cout << "请输入一个任意整数:" << endl;
cin >> i;
if(i % 2 == 0)
cout << "这是一个偶数。";//分支1部分只有一个语句
else
cout << "这是一个奇数。";//分支2部分只有一个语句
return 0;
}
分支结构:复杂分支
例2.3
#include <iostream>
#include <stdlib.h>
#include <time.h>
#define random(x) (rand()%x)
using namespace std;
int main()
{
int i,j,k;
srand((int)time(0));//用系统时间来做种子
i = random(100);
j = random(100);
k = i + j ;
int answer;
cout << i <<"+" <<j <<"= ?" << endl;
cin >> answer;
if(answer == k)
{
//分支部分有多个语句时,需要使用{}
cout << "回答正确!"<< endl;
cout << i <<"+" <<j <<"=" << k << endl;
}
else
{
cout << "回答错误!";
cout << i <<"+" <<j <<"=" << k << endl;
}
return 0;
}
小知识:引用头文件
也叫包含(include)头文件
我们可以把经常使用的函数写成函数库,以方面重复调用
一个函数库可以分成两个文件, .h 文件 和 .cpp 文件
.h 文件里写的是函数的声明,.cpp 文件里写的是具体的函数代码
当我们需要使用一个函数库时,只需要把函数声明部分,即头文件引用过来就可以了
注意有两种引用格式,带.h 的,和不带的
例2.3 的2、3行也可以写成:
#include <cstdlib>
#include <ctime>
请注意观察它们有什么区别?
循环结构:“当”型循环
“当”条件成立(为真)时,执行循环体里的代码。
例2.4
#include <iostream>
using namespace std;
int main()
{
int i =0;
while(i<3)
{
cout << "i=" << i <<endl;
i++;
}
return 0;
}
循环结构:“直”型循环
执行循环体里的代码,然后检查条件,如果成立继续循环执行,“直”到条件不成立
例2.5
#include <iostream>
using namespace std;
int main()
{
int i =0;
do
{
cout << "i=" << i <<endl;
i++;
}while(i<3);
return 0;
}
扩展1:“当”型 和 “直”型循环结构的区别
例2.4、例2.5的运行结果都一样,那两种结构有什么区别呢?
请大家把 例2.4、例2.5 第6行改为
int i =3;
运行结果会有什么不同呢?从中可以看出 “当”型 和 “直”型结构的区别是什么呢?
循环结构:计次循环
例2.6
#include <iostream>
using namespace std;
int main()
{
for(int i=0;i<3;i++)
{
cout << "i=" << i <<endl;
}
return 0;
}
小知识
在C/C++ 中计数时,习惯多是从0开始,而不是1。
在循环计数、数组索引中多是从0开始。
结构嵌套
在循环结构中嵌套选择结构
例2.7
#include <iostream>
#include <stdlib.h>
#include <time.h>
#define random(x) (rand()%x)
using namespace std;
int main()
{
int i,j,k;
int n =0;
while(n<3)
{
srand((int)time(0));//用系统时间来做种子
i = random(100);
j = random(100);
k = i + j ;
int answer;
cout << i <<"+" <<j <<"= ?" << endl;
cin >> answer;
if(answer == k)
{
cout << "回答正确!"<< endl;
cout << i <<"+" <<j <<"=" << k << endl;
}
else
{
cout << "回答错误!";
cout << i <<"+" <<j <<"=" << k << endl;
}
n++;
}
return 0;
}
扩展2
请使用“直”型循环结构 改写 例2.7
扩展3
请使用计次循环结构 改写 例2.7
扩展4
请使用计次循环结构,写一个判断质数(只能被1和本身整除的数)的小程序