一、循环语句
1.while循环
1.基本结构
while (循环的判断语句) 如果条件为真就会一直执行循环体中的内容
{
循环体
}*/
2.控制循环次数 通过改变循环判断条件的结果,让其循环到一定值的时候会不满足则跳出循环,执行次数变有限了
/*while (true)
{
Console.WriteLine(1);
}*/
//有限循环 控制循环次数 只需让判断条件有一天变为假
//i=1 i<10 => i++ 有一天i就会大于等于10 增量表达式
//i=19 i>=10 => i-- 有一天i就会小于10
/* int i = 10;
while (i > 2)
{
Console.WriteLine(i);
i--; //循环次数8 10=>3 2时不进入循环
}*/
3.练习
1.
/*Console.WriteLine("请输入整数:");
int n = Convert.ToInt32(Console.ReadLine());
int sum = 0;
while (n >= 0)
{
sum = sum + n;
n--;
}
Console.WriteLine(sum);*/
/* Console.WriteLine("请输入整数:");
int n1 = Convert.ToInt32(Console.ReadLine());
int sum1 = 0;
int i = 1;
while (i <= n1)
{
sum = sum + i;
i--;
}
Console.WriteLine(sum);
*/
2.
//输出0-100之间的偶数
/* int n = 100;
while (n >= 0)
{
if (n % 2 == 0)
{
Console.WriteLine(n);
}
n--;
}*/
3.
/* Console.WriteLine("请输入整数:");
int n = Convert.ToInt32(Console.ReadLine());
int i = 0;
while (n > 1)
{
if (n % 2 == 0)
{
n = n / 2;
}
else
{
n = 3 * n + 1;
}
i++;
}
Console.WriteLine(i);*/
4.
/* Console.WriteLine("请输入学生人数:");
int n = Convert.ToInt32(Console.ReadLine());
double sum = 0;
double yaverage = 1;
int i = 1;
while (n > 0)
{
Console.WriteLine("请输入学生年龄:");
int y = Convert.ToInt32(Console.ReadLine());
sum = sum + y;
yaverage = sum / i;
n--;
i++;
Console.WriteLine("平均年龄为{0}",Math.Round(yaverage, 2));
}*/
2.for循环
1.基本结构
/* for (c初始化; 判断条件; 增量表达式)
{
循环体;
}*/
/*int num3 = 1;
for(; num3 < 5; num3++)
{
Console.WriteLine(num3);
}
*/
2.练习题
int n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入第二个数:");
int m = Convert.ToInt32(Console.ReadLine());
int sum = 0;
if (n < m){
Console.Write("n与m之间所有被17整除的数有:");
for (int i = n; i <= m; i++)
{
if (i % 17 == 0)
{
sum += i;
Console.Write(i);
Console.Write(" "); //???如何打出空格,将这两代码转为一行
//Console.Write(" {0}", i);
}
}
Console.WriteLine("n与m之间所有被17整除的数的和为{0}", sum);
}
else
{
Console.Write("n与m之间所有被17整除的数有:");
for (int i = m; i <= n; i++)
{
if (i % 17 == 0)
{
sum += i;
Console.Write(i);
Console.Write(" ");
}
}
Console.WriteLine("n与m之间所有被17整除的数的和为{0}", sum);
}
*/
//上题的优化
/*Console.WriteLine("请输入第一个数:");
int n1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入第二个数:");
int m1 = Convert.ToInt32(Console.ReadLine());
int sum1 = 0;
int max = n1;
if (n1 > m1)
{
n1 = m1; //做值的交换
m1 = max;
}
Console.Write("{0}与{1}之间所有被17整除的数有:",n1, m1);
for (; n1<m1; n1++)
{
if (n1 % 17 == 0)
{
Console.Write(" {0}", n1);
sum1 += n1;
}
}
Console.WriteLine("和为:{0}", sum1);*/
3.do...while循环
1.基本结构
/* int num = 11;
do //不管后面while循环的条件满不满足都会先执行一次
{
Console.WriteLine(num); //11
num++;
} while (num < 10);
Console.WriteLine(num); //12
*/
2.练习
1.
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入一个正整数:");
int n = Convert.ToInt32(Console.ReadLine());
int i = 1;
do
{
i = a * i;
n--;
} while (n>0);
// Console.WriteLine("乘方{0}的{1}次方为{2}", a, n, i);
Console.WriteLine(i);*/
2.
double h = Convert.ToDouble(Console.ReadLine());
double sum = 0; //经过的长度
int i = 1;
for(; i<=10; i++)
{
sum = sum + h;
h = h / 2;
sum = sum + h;
}
Console.WriteLine("反弹的高度{0},经过{1}米",h, sum);
*/
3.
//水仙花数
for (int i = 100; i < 1000; i++)
{
int a = i / 100;
int b = i / 10 % 10;
int c = i % 10;
if(i == a * a * a + b * b * b + c * c * c)
{
Console.WriteLine(i);
}
}
4.变量作用域
- 同一个作用域中的变量不能重名
- 父作用域与子作用域,可以访问父作用域里面的变量,但是父作用域不能访问子作用域中定义的变量
/*int i = 1;
for (; i<10; i++) //1~9 9次 //先找自己的作用域,如没有会往外查找
{
for(int j = 10; j>0; j--) //10~1 10次
{
Console.WriteLine(j);
}
Console.WriteLine(i);
}*/
//Console.WriteLine(i);
5.循环中的break和continue
- break:跳出当前整个循环
- continue:跳出当前这一次循环,继续执行下一次循环的内容
6.嵌套循环练习
1.
/* Console.WriteLine("请输入n:");
int n = Convert.ToInt32(Console.ReadLine());
int i = 1;
for (; i <= n; i++)
{
for(int j = 1; j<=i; j++)
{
Console.Write("*");
}
Console.WriteLine(" ");
}*/
2.
/* Console.WriteLine("请输入n:");
int n = Convert.ToInt32(Console.ReadLine());
int i = 1;
for (; i <= n; i++)
{
for (int j = 1; j <= n-i; j++)
{
Console.Write(" ");
}
for (int j = 1; j <= 2*i-1; j++)
{
Console.Write("*");
}
Console.WriteLine();
}*/
3.
/* Console.WriteLine("请输入n:");
int n = Convert.ToInt32(Console.ReadLine());
int i = 1;
for (; i <= n; i++) //控制行数
{
for (int j = 1; j <= n - i; j++)
{
Console.Write(" ");
}
for (int j = 1; j <= 2 * i - 1; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
for (i = 1; i <= n-1; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write(" ");
}
for (int j = 1; j <= 2 * (n-i) - 1; j++)
{
Console.Write("*");
}
Console.WriteLine();
}*/
4.对称乘法口诀
//int n = Convert.ToInt32(Console.ReadLine());
/* int i = 1;
for (; i <= 9; i++) //控制行数
{
for (int j = 1; j <= i; j++)
{
Console.Write(" {0}*{1}={2}\t", j, i, i*j);
}
Console.WriteLine();
}
for (i = 9; i >= 1; i--) //控制行数
{
for (int j = 1; j <= i; j++)
{
Console.Write(" {0}*{1}={2}\t", j, i, i * j);
}
Console.WriteLine();
}*/
5.百文白鸡
/*for(int g = 1; g<= (100/3); g++)
{
for(int m = 1; m<=(100/5); m++)
{
for(int x = 1; x<=(100/2); x++)
{
if( (100 == 3 * g + 5 * m + 2*x) && (g+m+x<=100))
{
Console.WriteLine("公鸡有{0}, 母鸡有{1}, 小鸡有{2}", g, m, x);
}
}
}
}*/
6.求两数最大公因数
/*Console.WriteLine("请输入数1:");
int num1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入数2:");
int num2 = Convert.ToInt32(Console.ReadLine());
int min;
if (num1 < num2)
{
min = num1;
num1 = num2;
num2 = min;
}
for(int i = num2; i>0; i--)
{
if(num1%i==0 && num2 % i == 0)
{
Console.WriteLine("{0}和{1}的最大公因数为{2}", num1, num2, i);
break;
}
}
*/
7.猜数游戏:与计算猜数,猜大了,打印猜大了;猜小了,打印猜小了;猜对了,打印猜对了,并结束游戏,否则游戏继续直到猜对为止。
int r = a.Next(1, 101);
while (true)
{
Console.WriteLine("请输入数据1~100:");
int num = Convert.ToInt32(Console.ReadLine());
if (num > r)
{
Console.WriteLine("猜大了!");
}
else if(num < r)
{
Console.WriteLine("猜小了!");
}
else
{
Console.WriteLine("猜中了!");
break;
}
}
补充:random
//对象中会有一个方法next(a, b) 表示a到b-1的整数 不包括b
//Random a = new Random(); //Random数据
//int b = a.Next(1, 9); //随机生成1-8
//Console.WriteLine(b);