知识点
语句
while语句
格式:
while(表达式){
循环体
}
条件表达式成立,执行一次循环体。当表达式成立时,不断重复执行循环体。
do-while语句
格式:
do{
循环体
}while(表达式);
先执行一次循环体,然后判断表达式是否成立,如果成立,则返回继续执行循环。
for语句
for 语句的格式如下:
for( 表达式 1; 表达式 2; 表达式 3){
循环体
}
循环嵌套
循环结构与分支结构的嵌套类似,也可以在一个循环语句的循环体里出现另一个循环语句,不管是 while 语句、do-while 语句还是 for 语句。这样的循环结构称为“循环嵌套”。
break语句和continue语句
break 语句:就会立刻跳出循环体,执行循环结构后面的语句。
continue 语句:就会忽略本次循环的后续语句而去执行下一次循环。
意义:减少运算次数
例如:
例 1、与 7 无关的数。
【问题描述】
一个正整数,如果它能被 7 整除,或者它的某一位上的数字为 7,则称其为“与 7 相关”的数。现在,请编程求出所有小于或等于 n 的“与 7 无关”的正整数个数。
【输入格式】
一行一个正整数 n,n≤10^6 。
【输出格式】
一行一个整数,表示答案。
#include
using namespace std;
int main(){
int n,ans = 0;
cin >> n;
for(int i = 1; i <= n; i++){
int flag1 = 1,flag2 = 1;
if(i % 7 == 0) flag1 = 0;
int x = i;
while(x){
if(x % 10 == 7) {flag2 = 0; break;}
x = x / 10;
}
if(flag1 && flag2) ans++;
}
cout << ans << endl;
return 0;
}
例 2、与 7 无关的数。
【问题描述】
一个正整数,如果它能被 7 整除,或者它的某一位上的数字为 7,则称其为“与 7 相关”的数。
请编程求出所有小于或等于 n 的“与 7 无关”的正整数个数。
【输入格式】
一行一个正整数 n,n≤10^6 。
【输出格式】
一行一个整数,表示答案。
#include
using namespace std;
int main(){
int n,ans = 0;
cin >> n;
for(int i = 1; i <= n; i++){
int flag = 1;
if(i % 7 == 0) continue;
int x = i;
while(x){
if(x % 10 == 7) {flag = 0; break;}
x = x / 10;
}
if(flag) ans++;
}
cout << ans << endl;
return 0;
}
程序的调试
静态查错
(1)语句的顺序、思路、逻辑是否有误
(2)语法是否有误,如关键字是否录入错误、变量是否没有定义就使用、变量的大小写问题、用错标点符号(注意全半角)等。
(3) 变量未赋初值
(4) 中间运算结果越界
(5) if-else 语句混乱
(6) 实数比较出错
动态差错
(1)加输出语句
例如:
#include
using namespace std;
int main(){
int x;
cin >> x;
for(int i = 2; i < x; i++){
if(x % i == 0) {
cout << x << “ “ << i << endl; // 用于查看 x 和 i 的值
cout << “ not “ ;
break;
}
}
cout << “ prime ” << endl;
return 0;
}
(2)通过“单步执行”观察跟踪某个变量的值的变化。
重点
-
while和if条件判别的区别
和 if 语句不同的是,while语句执行完一次循环体后,又回到开始处,继续计算和判断表达式的真假,决定是否再次执行循环体。 -
do-while 语句是 C++ 中用于解决至少执行一次重复操作(循环体)的循环语句。
-
如果重复执行的操作(循环体)次数是固定的、已知的,则一般使用 for 语句。若输入次数不定用while语句
例如:
描述
给出一些整数对,它们表示一些平面上的坐标点,给定一个点,求所有那些点到该点最短距离的点。结构为:第一个整数对为所给定的点,后面的整数对为所有其他的点。
输入
第一个整数对为所给定的点,后面的整数对为所有其他的点。
输出
到第一个点最短距离的点
#include
#include
using namespace std;
int main()
{
int x,y,d=1000000,x1,y1;
cin>>x>>y;
while(cin>>x1>>y1)
{if(d>sqrt((x-x1)(x-x1)+(y-y1)(y-y1))){d=sqrt((x-x1)(x-x1)+(y-y1)(y-y1));
}}cout<<x1<<" "<<y1<<endl;
return 0;
} -
死循环
注意当条件恒成立时循环不能结束,形成死循环。 -
在必要时使用标记变量
学习感悟
最近的学习使我认识到:对于编程来说最难的不是语言,最难的是解决问题的思路,比如调换任意位数字,对比自己粗暴的对每一位乘相应位次的幂,可以选用加合依次乘10。面对实际问题应该多思考,寻求更简单的解题方法以编程。
关于调程序,应抱有怀疑的态度,应用差错方法,找错误。
多思多尝试。
本文介绍了三种循环语句(while、do-while、for)的格式与使用,包括循环嵌套和break、continue语句的应用。通过实例展示了如何找出与7无关的数,并探讨了程序调试的方法,包括静态查错和动态差错的常见问题及解决策略。强调了在编程中解决问题的思路和调试的重要性。

446

被折叠的 条评论
为什么被折叠?



