Cpp class exercise 2:修订间差异

来自汉语教学技术研究与应用
跳转到导航 跳转到搜索
HanyuTech留言 | 贡献
HanyuTech留言 | 贡献
 
(未显示同一用户的13个中间版本)
第1行: 第1行:
{{DISPLAYTITLE: “C++ 编程入门班” 练习二}}
{{DISPLAYTITLE: “C++ 编程入门班” 练习二}}
{{DISPLAYTITLE: “C++ 编程入门班” 练习二}}


第17行: 第14行:


== 分支结构:简单单分支 ==
== 分支结构:简单单分支 ==
例2.1
<syntaxhighlight lang="C++" line>
<syntaxhighlight lang="C++" line>
#include <iostream>
#include <iostream>
第26行: 第24行:
     cout << "请输入一个任意整数:" << endl;
     cout << "请输入一个任意整数:" << endl;
     cin >> i;
     cin >> i;
     if(i % 2 == 0)
     if(i % 2 == 0)
     cout << "这是一个偶数。";
     cout << "这是一个偶数。"; //分支部分只有一个语句
return 0;
 
    return 0;
}
}
</syntaxhighlight>
</syntaxhighlight>
=== 小知识:整除 ===
% 是整除符号,结果是0(可以除尽时)或者余数(除不尽时)
例如:
10 % 2 , 除得尽,结果是0(没有余数)
10 % 3 , 除不尽,结果是余数1
=== 小知识: =与==的区别 ===
= 是赋值运算符,用来给变量一个特定的值
== 是关系运算符,是用来比较两边大小的
在条件表达式(判断真假)中要使用 ==


== 分支结构:简单双分支 ==
== 分支结构:简单双分支 ==


<syntaxhighlight lang="C++" line>
<syntaxhighlight lang="C++" line>
//例2.2
#include <iostream>
#include <iostream>
using namespace std;
using namespace std;
第44行: 第61行:
     cin >> i;
     cin >> i;
     if(i % 2 == 0)
     if(i % 2 == 0)
     cout << "这是一个偶数。";
     cout << "这是一个偶数。";//分支1部分只有一个语句
     else
     else
     cout << "这是一个奇数。";
     cout << "这是一个奇数。";//分支2部分只有一个语句
return 0;
 
    return 0;
}
}
</syntaxhighlight>
</syntaxhighlight>
第53行: 第71行:


== 分支结构:复杂分支 ==
== 分支结构:复杂分支 ==
例2.3
<syntaxhighlight lang="C++" line>
<syntaxhighlight lang="C++" line>
#include <iostream>
#include <iostream>
第73行: 第92行:
     if(answer == k)
     if(answer == k)
     {  
     {  
        //分支部分有多个语句时,需要使用{}   
     cout << "回答正确!"<< endl;
     cout << "回答正确!"<< endl;
     cout << i <<"+" <<j <<"=" << k << endl;
     cout << i <<"+" <<j <<"=" << k << endl;
第86行: 第106行:
</syntaxhighlight>
</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>
<syntaxhighlight lang="C++" line>
#include <iostream>
#include <iostream>
第108行: 第150行:


== 循环结构:“直”型循环 ==
== 循环结构:“直”型循环 ==
执行循环体里的代码,然后检查条件,如果成立继续循环执行,“直”到条件不成立


例2.5
<syntaxhighlight lang="C++" line>
<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>
</syntaxhighlight>


== 循环结构:“当”型 “直”型的区别 ==
== 扩展1:“当”型 “直”型循环结构的区别 ==
例2.4、例2.5的运行结果都一样,那两种结构有什么区别呢?


<syntaxhighlight lang="C++" line>
请大家把 例2.4、例2.5 第6行改为
<syntaxhighlight lang="C++">
int i =3;
</syntaxhighlight>
</syntaxhighlight>
运行结果会有什么不同呢?从中可以看出 “当”型 和 “直”型结构的区别是什么呢?


== 循环结构:计次循环 ==
== 循环结构:计次循环 ==
例2.6
<syntaxhighlight lang="C++" line>
#include <iostream>
using namespace std;


<syntaxhighlight lang="C++" line>
int main()
{
    for(int i=0;i<3;i++)
{
cout << "i=" << i <<endl;
}
   
return 0;
}
</syntaxhighlight>
</syntaxhighlight>


=== 小知识 ===
在C/C++ 中计数时,习惯多是从0开始,而不是1。
在循环计数、数组索引中多是从0开始。


== 结构嵌套 ==
== 结构嵌套 ==
在循环结构中嵌套选择结构
在循环结构中嵌套选择结构
例2.7
<syntaxhighlight lang="C++" line>
<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>
</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和本身整除的数)的小程序