C#复习以及break、continue、while、do-while的运用
一、复习:
循环。反复执行某段语句一种语法形式。
1.基本语法:
for( 初始条件 ; 循环条件 ; 状态的改变 )
{
循环体
}
循环的四要素。
循环的执行过程。初始条件--循环条件--循环体--状态改变--循环条件--。。。。。
案例:1.打印10您好。2.显示1-100的数(所有的数,奇数,偶数)。3.显示ASCII码。
2.循环的嵌套。
for( ...;... ; ...)
{
for(...;...;...)
{
}
}
案例:打印各种图形——外层的循环,打印行。内层循环,打印列。
3.应用(迭代,穷举)
迭代:按照某种规律,通循环逐步推导出最终结果来。 // 结果不正确往往是方法有问题,方法不正确往往是思想有问题。
最重要的——把迭代的规律找出来,并且用表达式表示出来。
案例:
1.100以内所有数的和。
2.阶乘
3.年龄推导。
4.折纸。棋盘上放粮食。
5.猴子吃桃子。
6.落球
7.兔子生兔子。
穷举:把所有可能的情况都走上一遍,根据要求找出满足条件的结来。
最重要的——能够看出是否可以用穷举来解决;如何把穷举的语法写出来。
案例:
1.100以内与7有关的数。
2.硬币组合问题。1,2,5 组合出1毛5来。
3.买东西。牙刷,香皂,洗发水。
4.百鸡百钱,百马百石。
5.侦察兵
6.等式填运算符
二、新课:
1.break与continue.
这两个关键字一般放在循环的花括号里面使用。
break——结束整个循环。
continue——结束本次循环,进入下次循环。
break的案例:
int i = 1;
for(;;)
{
if(i>100)
{
break;
}
Console.Write(i+"\t");
i++;
}
continue的案例:
for (int i = 1; i <= 100; i++)
{
if(i%2 == 0)
{
continue;
}
Console.Write(i + "\t");
}
2.while循环
//初始条件
while(循环条件)
{
//循环体
//状态的改为
}
案例:
int i = 1;
int count=0; //记录与7有关的数字的个数
while(i<=100)
{
if(i%7==0 || i%10==7||i/10==7)
{
Console.Write(i+"\t");
count++;
//1
}
i++;
//2
}
//3
Console.Write("共有"+count+"个与7相关的数");
3.do...while(循环条件)简单了解。
即使初始条件不满足循环条件,循环还会执行一次。
至少执行一次。
数组:解决同一类大量数据在内存存储和运算的功能。
分类:一维数组、二维数组、多维数组。
特点:连续,同一类数据。
一维数组:类似豆角。
定义:指定类型,指定长度,指定名称。
int[] a = new int[5]; //5是长度。从1开始算。默认5个元素初始值都是0.
int[] a = new int[5] { 90, 95, 89, 76, 99 };
int[] a = new int[5] { 90, 95, 89 }; //语法有错,后面初始化的值必须是5个。
int[] a = new int[] { 90, 95, 89, 76, 99}; //计算机会根据后面的赋值,动态计算数组的长度。
赋值:
数组名[下标数值] = 值;
int[] a = new int[5];
a[0] = 10;
a[1] = 20;
a[2] = 30;
a[3] = 40;
a[4] = 50;
取值:
数组名[下标数值]; //下标数值从0开始。
Console.WriteLine(a[3]+a[0]);数组的好处1.对于大量数据来说,保存的时候,定义一个数组即可解决。2.用循环来控制数组的下标,可以对数组进行批量操作。
例如:
int[] a = new int[5];
for (int i = 0; i < 5;i++ )
{
a[i] = (i + 1) * 10;
}
//数组的批量取值。
for (int j = 0; j < 5;j++ )
{
Console.WriteLine(a[j]); //0下标。
}
案例一:做一个教练为6个球员打分的程序。
//定义一个保存球员成绩的数组
int[] a = new int[6];
//输入
for (int i = 0; i < a.Length; i++)
{
Console.Write("请输入第"+(i+1)+"个球员的成绩:");
a[i] = Convert.ToInt32(Console.ReadLine());
}
//输出
for(int j=0;j
Console.WriteLine("第"+(j+1)+"位球员的分数是"+a[j]+"分。");
}
案例二:在案例一的基础上,显示球员总分和平均分。
int sum=0;
for (int i = 0; i < a.Length; i++) //利用for循环的迭代使用求出总和
{
sum = sum + a[i];
}
double avg = 1.0*sum / a.Length;//用总分除以个数得出平均值
Console.WriteLine("总分是:"+sum +"。平均分是:"+avg+"。");
案例三:在案例二的基础上,显示最高分和最低分,以及相应球员的代号。
int max=0,min=999;
int num1=0,num2=0;
for (int i = 0; i < a.Length; i++)//从头至尾,依次取出数据两两比较,存储较大值,最后得出的就是最大值
{
if (max < a[i])//定义整型变量max,存储通过运算得到的大数
{
max=a[i];
num1=i+1;
}
if (min > a[i])//求最小值,参考求最大值
{
min = a[i];
num2 = i+1;
}
}
Console.WriteLine("最好成绩是:" + max + "," + num1 + "号球员;最差成绩是" + min + "," + num2 + "号球员");
案例四:青歌赛中有10个评委给一个选手打分,每打分后,要去掉一个最高分和一个最低分,计算该选手的平均得分。
Console.WriteLine("请输入选手得到分数:");
int[]a=new int [10];
for (int i = 0; i < 10; i++)
{
Console.Write("请输入第"+(i+1)+"个得分:");
a[i] = Convert.ToInt32(Console.ReadLine());
}
int max = 0, min = 999,sum = 0;
double avg;
//求出最高分和最低分
for (int i = 0; i < 10; i++)//依次比较两个值大小,取最大值(最小值);
{
if (a[i] > max)
{
max = a[i];
}
}
for (int i = 0; i < 10; i++)
{
if (a[i] < min)
{
min=a[i];
}
}
//用迭代法计算总得分
for (int i = 0; i < 10; i++)
{
sum=sum+a[i];
}
//计算去掉最高分、最低分后的平均值
avg = 1.0 * (sum - max - min) / (a.Length - 2);
Console.WriteLine("该选手平均得分是:"+avg+"分");
案例五:做一个36选7的彩票生成器。
Random rand = new Random();//随机数生成器
int[] a = new int[7];
for (int i = 0; i < a.Length; i++)//对数组进行赋值
{
int n = rand.Next(36);
bool chong = false;//查重,将新生成的随机数与前面以生成的随机数进行比较,若有相同值,重新生成
for (int j = 0; j <= i; j++)
{
if (n == a[j])
{
chong = true;//通过chong的值标记是否有相同值。
break;
}
}
if (chong == false)
{
a[i] = n;
Console.Write(a[i] + "\t");
}//没有相同值,打印该随机数
else
{
i--;
}//重新生成
}
案例六 20个手机号 滚动显示,随机抽取一个中奖号码
string[] a = new string[20];
Random rand = new Random();
Console.WriteLine("请输入20个手机号");
for (int i = 0; i < a.Length; i++)
{
Console.Write("请输入第" + (i + 1) + "个手机号");
a[i] = Console.ReadLine();
}
for (int i = 0; i < 50; i++)
{
int j = rand.Next(20);//通过随机数生成器获取随机数,打出随机的数组a元素
Console.WriteLine(a[j]);
System.Threading.Thread.Sleep(100);//每输出一个值,停顿100毫秒
Console.Clear();
}
Console.WriteLine("中奖号码是:");
int m = rand.Next(20);
Console.WriteLine(a[m]);
案例7 选班长 30个同学投票,从5个候选人中选出一个班长
int[] a = new int[5];
for (int m = 0; m < 30; m++)
{
Console.Write("请投票(a-0;b-1;c-2;d-3;e-4):");
int i = Convert.ToInt32(Console.ReadLine());
a[i]++;//通过键盘获取值,让相应的数组元素值得到累加。
}
Console.WriteLine("a:" + a[0] + "票b:" + a[1] + "票c:" + a[2] + "票d:" + a[3] + "票e:" + a[4] + "票");