为了确保题目适合小学生的理解水平,我们将避免使用过于复杂的编程概念,并尽量使用简单易懂的语言和例子。根据NOI及GESP考纲精心设计配套习题集,不定期发布,以供老师、学生们参考。
一、if语句
根据条件的真假,决定执行哪路代码
if .. else.. switch ?: 都有这个能力
if 的条件中尽量用 bool, 其它类型会强制转为bool
if 的条件中可能会发生短路求值现象 if(a表达式 && b表达式) ...
当 a表达式
为假的时候,b表达式
根本不会执行 同理,if(a表达式 || b表达式) ...
int a = 5, b = 8;
int x = 100;
if(a>10 && (x=b)){
cout << "here" << endl;
}
cout << x << endl;
二、switch语句
当分支情况较多时,if .. else if …. else if …. else … 嵌套过多,维护不方便。
switch(表达式){
case 1:
代码块1;
break;
case 2:
代码块2;
break;
default:
默认处理
}
要求:
switch 圆括号中的值必为:整数,字符 或者 枚举类型
三、while循环
最可靠的循环—死循环
while(true){
执行一些动作;
}
配合的出口语句:break if (条件) break;
示例: 对学生成绩进行分类,输出:A, B, C, D, E
5个等级
int score = 100;
int a = score - 60;
char level = 'E';
while(true){
if(a<0) break;
level--;
a -= 10; // a = a - 10;
if(level=='A') break; // 封顶
}
cout << level << endl;
示例: 已知正整数x,从低位到高位,输出每个十进制数位 提示:通过不断整除,消掉最后一位,直到变成0
do-while 循环并不常用,所有情况,可以用内部的break来解决
四、for循环
当我们已知执行次数的时候,用 for 循环更方便一些。
for 循环的语法:
for(初始化循环变量; 循环保持条件; 循环变量变化){
循环体
}
循环变量的生存期 循环变量仅仅在 for 语句范围内有效,是局部变量,放在栈中 循环变量的生存期,比循环体内的局部变量更长。
continue 直接进入下一轮循环
if(条件) continue;
越过循环的某些轮次不做
示例 打印九九乘法表 可以用双层嵌套
for(int j=1; j<=9; j++){
for(int i=1; i<=j; i++){
int k = i * j;
cout << j << "x" << i << "=" << k << " ";
}
cout << endl;
}