一.循环(重点)
什么时候用循环?
想让一段代码执行多次, 这段代码可能不一样但是一定有一个规律.
1.while 循环
格式:
while(循环条件)
{
循环执行的代码;
}
循环的机制: 当循环条件为真, 执行循环体内的代码, 然后再判断循环条件, 为真一直继续这个过程, 知道判断出循环条件为假, 终止并跳出整个while循环.
注意:
1.一定要在外界定义一个循环变量;
2.一定要在循环的内部更改循环变量!
这两点缺一不可, 不然会陷入死循环!!!
练习:
1> 从键盘上随机输入一个数, 求出这个数的位数
Console.WriteLine("请输入一个数:"); int num = int.Parse(Console.ReadLine()); int i = 0; while (num != 0) { num /= 10; i++; } Console.WriteLine(i);
2> 从键盘上随机输入一个数, 求出这个数的二进制
int i = 1, c = 0; Console.WriteLine("请输出一个数:"); int num = int.Parse(Console.ReadLine()); while (num != 0) { c += (num % 2) * i; i *= 10; num = num / 2; }
2.do while 循环
格式:
do
{
循环要执行的代码;
}while(循环条件)
练习
1.求使 sum = 1+2+3+4+...+N 小于10000的最大的整数N
int sum = 0, n = 1; do { sum += n; n++; } while (sum <= 10000); n--; sum -= n; n--; Console.WriteLine(""+n+sum); // 要注意这里n必须要减两次, 第一次是因为sum 多加了上一个n的值,导致直接打印出Sum的值超过了10000, n再减一次是因为那个使sum临界的n的值应当是上一个.
3.for循环
格式:
for (初始化循环变量; 循环条件; 循环变量自身的变化)
{
循环执行的代码;
}
练习
1.打印1-100内既不包含7又不是7的倍数的数
for (int i = 1; i <= 100; i++) { if (!(i % 7 == 0 || i / 10 == 7 || i % 10 == 7)) { Console.WriteLine(i); } }
2.打印1-100的奇数之和
int sum = 0; for (int i = 1; i <= 100; i++) { if (i % 2 != 0) { sum += i; } } Console.WriteLine(sum);
3.2continue 和 break
continue 是用来终止本次循环, 也就是说如果在程序执行的过程中遇到了continue 那么在循环执行的代码中continue之后的代码就不会被执行; 直接跳到一下个循环里, 也就是到了"循环变量自身的变化";
break 是用来终止循环, 在程序执行过程中如果遇到break, 那么不管有没有达到循环结束的条件, 整个循环(本层)都会被停止, 提前结束生命;
练习
1.从键盘上输入一个数, 判断这个数是否是质数;
int num = int.Parse(Console.ReadLine()); bool isB = false; for (int i = 2; i < num / 2; i++) { if (num % i == 0) { isB = true; break; } } if (!isB) { Console.WriteLine("是质数"); }
2.打印图形
for (int i = 1; i <= 4; i++) { for (int j = 1; j <= 4 - i; j++) { Console.Write(" "); } for (int k = 1; k <= i; k++) { Console.Write("* "); } Console.WriteLine(); } for (int i = 3; i >= 1; i--) { for (int j = 3; j >= i; j--) { Console.Write(" "); } for (int k = 1; k <= i; k++) { Console.Write("* "); } Console.WriteLine(); }
3.打印九九乘法表
for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { Console.Write("{0} * {1} = {2} ", j, i, j * i); } Console.WriteLine(); }
怎么选择这几种循环呢?
知道循环的次数 使用for 循环
知道循环的条件 使用while循环
也不一定非要这个样, 但是这样选择会让代码和逻辑更清晰简洁一点.
二.一维数组
数组的定义:
1.数据类型[] 数组名 = new 数据类型[数组长度] [ {元素1, 元素2, ...}]; 一开始可以不先赋值
2.数组是存放相同数据类型的容器;
3.数组的访问形式是通过下标的形式 数组名[下标] 下标是从0开始的;
4.数组的下标必须不能越界;
5.数组必须指定长度, 要么直接指定(第二个中括号直接写上长度), 要么间接指定(第二个中括号不写长度, 但必须赋值, 赋值的个数就自动决定了数组的长度);
6.数组是一个整体 , 不能直接参与运算, '=' 号除外;
foreach
专门遍历集合里的元素(只有只读性, 不能改写 只能使用它)
格式:
foreach( 类型 变量 in 集合名)
{
代码;
}