版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章程序控制语句
3.1使用分支3.2使用循环3.3学生成绩管理系统的菜单3.4习题3.1.1if语句
1.单独if语句
if(布尔表达式)
{
语句块;
}
功能:如果表达式的值为真(即条件成立),则执行if语句所控制的语句块;如果表达式的值为假(即条件不成立),则直接执行语句块后面的语句。这种语句结构的控制流程如图3-1所示。3.1使用分支图3-1if语句控制流程【例3-1】输入两个整数,输出其中较大的整数。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
intnum1,num2,max;
Console.Write("请输入数值1:");
num1=int.Parse(Console.ReadLine());
Console.Write("请输入数值2:");
num2=int.Parse(Console.ReadLine());
max=num1;
if(num2>num1)
max=num2;
Console.WriteLine("较大值为:{0}",max);
}
}
程序运行结果如图3-2所示。图3-2例3-1运行结果
2. if…else语句
if(布尔表达式)
{
语句块1;
}
else
{
语句块2;
}
功能:如果表达式成立,则执行语句块1,然后执行语句块3;如果表达式不成立,则跳过语句块1,执行语句块2,然后执行语句块3。这种语句结构的控制流程如图3-3所示。图3-3if...else语句流程【例3-2】输入两个整数,输出其中较大的整数。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
intnum1,num2;
Console.Write("请输入数值1:");
num1=int.Parse(Console.ReadLine());
Console.Write("请输入数值2:");
num2=int.Parse(Console.ReadLine());
if(num1==num2)
Console.WriteLine("两数相等");
else
{
if(num1>num2)
Console.WriteLine("较大值为:{0}",num1);
else
Console.WriteLine("较大值为:{0}",num2);
}
}
}
运行结果如图3-4所示。图3-4例3-2运行结果
【例3-3】输入一个数字,如果为偶数,则输出“偶数”,否则输出“奇数”。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
Console.Write("请输入一个整数:");
intx=int.Parse(Console.ReadLine());
if(x%2==0)
{
Console.WriteLine("{0}是偶数",x);
}
else
{
Console.WriteLine("{0}是奇数",x);
}
Console.ReadLine();
}
}
运行结果如图3-5所示。图3-5例3-3运行结果
【例3-4】输入一个年份,判断是否为闰年。如果年份可以除尽4并且不能除尽100,或者可除尽400,则其为闰年。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
intnYear;
Console.Write("请输入年份:");
nYear=int.Parse(Console.ReadLine());
if((nYear%4==0&&nYear%100!=0)||nYear%400==0)
Console.WriteLine("是闰年");
else
Console.WriteLine("不是闰年");
}
}
运行结果如图3-6所示。图3-6例3-4运行结果
3. if…elseif…else语句
有些问题的解决方式并不是非此即彼的两个选择,而是由许多复杂的前提条件决定的。这种情况下,可以使用如下格式的if…elseif…else语句:
if(布尔表达式1)
{语句块1;}
elseif(布尔表达式2)
{语句块2;}
elseif(布尔表达式n-1)
{语句块n-1;}
else
{语句块n;}功能:当表达式1为真时,执行语句块1,然后跳过整个结构执行下一个语句;当表达式1为假时,跳过语句块1去判断表达式2。若表达式2为真时,执行语句块2,然后跳过整个结构去执行下一个语句;若表达式2为假时,则跳过语句块2去判断表达式3。依次类推,当表达式l、表达式2、……、表达式n-1都为假时,则执行else中的语句块n。
在这种阶梯形式的if结构中,最后的else语句经常作为缺省条件。就是说如果所有其他条件测试都失败,那么最后的else语句会被执行,流程如图3-7所示。
在实际应用中,elseif语句可以多次使用,但是else语句只有一个。图3-7if...elseif...else语句流程
【例3-5】输入学生的成绩,根据分数输出优(90~100)、良(80~90)、中(70~80)、及格(60~70)和不及格(0~60)。
usingSystem;
usingSystem.IO;
classProgram
{
publicstaticvoidMain(String[]args)
{
intscore;
stringgrade;
Console.Write("请输入学生的成绩:");
score=Int32.Parse(Console.ReadLine());if(score>=90)
grade="优";
elseif(score>=80)
grade="良";
elseif(score>=70)
grade="中";
elseif(score>=60)
grade="及格";
else
grade="不及格";
Console.WriteLine("该学生的考试成绩等级为:{0}",grade);
}
}
运行结果如图3-8所示。图3-8例3-5运行结果3.1.2switch语句
当分支情况很多时,虽然if…elseif…else语句可以实现,但多层的嵌套会使程序变得冗长且不直观。针对这种情况,C#提供了switch语句,用于处理多分支的选择问题。
switch语句的一般形式:
switch(控制表达式)
{
case常量表达式1:
语句块1;
break;
case常量表达式2:
语句块2;
break;
case常量表达式n:
语句块n;
break;
default:
语句块n+1
break;
}
switch语句基于控制表达式的值选择要执行的语句分支,语句的执行过程如下:
(1)控制表达式求值。
(2)如果case标签后的常量表达式的值等于控制表达式的值,则执行其后的内嵌语句。
(3)如果常量表达式的值不等于控制语句的值,则执行default标签后的内嵌语句。在使用时要注意以下几点:
●表达式的值必须是整型数值、字符或字符串,并且要与各个语句中case之后的常量值类型相同。
●一个switch语句中可以有任意多个case语句,case语句中的子语句体可以是一条或者多条任意语句。
●一般情况下,每个case语句的最后是break语句,用来从整个switch语句中跳出,继续执行switch语句下面的语句。如果没有使用break语句,则继续执行下面case语句中的子语句体,直到遇到break语句,或者整个switch语句结束。【例3-6】使用switch语句,实现对成绩等级的评定。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
Console.Write("请输入成绩:");
//从键盘接收一行字符
stringstr=Console.ReadLine();
//转换为整型
inti=Int32.Parse(str.Trim());
if(i>100||i<0){
Console.WriteLine("成绩不在0~100范围内");
}
else
{
switch(i/10)
{
case10:
Console.Write("满分");
gotocase9;
case9:
Console.WriteLine("优秀");
break;
case8:
Console.WriteLine("良好");
break;
case7:
Console.WriteLine("中等");
break;
case6:
Console.WriteLine("及格");
break;
default:
Console.WriteLine("不及格");
break;
}
}
Console.ReadLine();
}
}
运行结果如图3-9所示。图3-9例3-6运行结果
【例3-7】编写一个程序以识别用户输入的字符是元音(a、e、i、o、u)还是辅音。
usingSystem;
classVowelConsotant
{
staticvoidMain(string[]args)
{
charch;
Console.Write("请输入一个字母:");
ch=Convert.ToChar(Console.ReadLine());
switch(ch)
{
case'a':
case'e':case'i':
case'o':
case'u':
Console.WriteLine("{0}是元音",ch);
break;
default:
Console.WriteLine("{0}是辅音",ch);
break;
}
Console.ReadLine();
}
}
运行结果如图3-10所示。图3-10例3-7运行结果
【例3-8】编写一个简单计算器的程序,计数器应该能够执行加、减、乘、除等算术操作。
usingSystem;
classCalculation
{
staticvoidMain(string[]args)
{
Console.WriteLine("主菜单");
Console.WriteLine("1.加法");
Console.WriteLine("2.减法");
Console.WriteLine("3.乘法");
Console.WriteLine("4.除法");
Console.Write("请选择运算1-4:");
charoption=Convert.ToChar(Console.ReadLine());Console.Write("输入第一个数:");
intnum1=Convert.ToInt32(Console.ReadLine());
Console.Write("输入第二个数:");
intnum2=Convert.ToInt32(Console.ReadLine());
intresult;
switch(option)
{
case'1':
result=num1+num2;
Console.WriteLine("结果为:"+result);
break;
case'2':
result=num1-num2;
Console.WriteLine("结果为:"+result);
break;
case'3':
result=num1*num2;
Console.WriteLine("结果为:"+result);
break;
case'4':
result=num1/num2;
Console.WriteLine("结果为:"+result);
break;
default:
Console.WriteLine("无效选项");
break;
}
Console.ReadLine();
}
}
运行结果如图3-11所示。图3-11例3-8运行结果3.2.1for循环
for循环常常用于已知循环次数的情况。使用该循环时,测试是否满足某个条件,如果满足,则进入下一次循环;否则退出该循环。3.2使用循环
for语句的一般格式为:
for(初始化表达式;循环条件;迭代表达式)
{
循环体
}
for语句的执行流程如图3-12所示,其执行过程如下:
(1)在for循环开始执行时,执行初始化表达式,此部分只执行一次。
(2)计算条件表达式的值,以确定是否继续执行for循环;若该条件为假,控制将跳出for循环,并执行循环以后的语句。
(3)若条件表达式为真,则执行循环语句。图3-12for语句控制流程【例3-9】计算1~100的所有自然数之和。
usingSystem;
classtest
{
publicstaticvoidMain()
{
intsum=0;
for(inti=1;i<=100;i++)
{
sum+=i;
}
Console.WriteLine("从1到100的和是{0}",sum);
}
}
运行结果如图3-13所示。图3-13例3-9运行结果【例3-10】打印九九乘法表。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
Console.WriteLine("九九乘法表");
for(inti=1;i<=9;i++)
{
//计算并格式化输出九九表的内容
for(intj=1;j<=i;j++)
{
Console.Write("{0}x{1}={2}\t",i,j,i*j);
}
Console.WriteLine();//换行
}
}
}
运行结果如图3-14所示。图3-14例3-10运行结果3.2.2while循环
while循环结构根据条件来执行一定次数的语句块,while语句在执行循环中的语句时必须检查相应条件。当执行到while循环中最后一条语句时,控制权交回给循环的开始部分。如果条件仍然为真,则再次执行循环中的语句。一直执行循环中的语句,直到条件为假时停止。其语句格式为:
while(布尔表达式)
{
循环体
}条件表达式为关系表达式或逻辑表达式,其运算结果为true(真)或false(假)。在条件表达式中必须包含控制循环的变量,即循环变量。循环语句序列中应包含改变循环变量的语句,以避免陷入死循环。
while语句的执行流程如图3-15所示,其执行过程如下:
(1)计算while语句的条件表达式的值。
(2)如表达式的值为真,则执行循环体语句块,并改变控制循环变量的值。
(3)返回while语句的开始处,重复执行步骤(1)和(2),直到表达式的值为假,跳出循环并执行下一条语句。图3-15while语句控制流程【例3-11】计算1~100的所有自然数之和。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
intsum=0;
inti=1;
while(i<=100)
{
sum+=i;
i++;
}
Console.WriteLine("从1到100的和是{0}",sum);
}
}
运行结果如图3-16所示。图3-16例3-11运行结果3.2.3
do-while循环
do-while语句的特点是先执行循环,然后判断循环条件是否成立。其语句格式为:
do
{
循环体
}while(布尔表达式);
while语句的执行流程如图3-17所示,其执行过程如下:
(1)当程序执行到do语句后,就开始执行循环体语句块,并改变循环变量的值。
(2)执行完循环体语句后,再对while语句括号内的条件表达式进行判断。若表达式条件成立(为真),转向步骤(1)继续执行循环体语句;否则退出循环,执行下一条语句。图3-17dowhile语句控制流程【例3-12】使用do-while语句,计算1 + 2 + 3+ … + 100。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
intsum=0;//初始值设置为0
inti=1;//加数初始值为1
do
{
sum+=i;
i++;
}while(i<=100);
Console.WriteLine("从1到100的和是{0}",sum);
}
}
运行结果如图3-18所示。图3-18例3-12运行结果3.2.4break语句与continue语句
1. break语句
break语句通常用在switch语句和各种循环语句中。break语句可以跳出包含它的switch、while、do、for或foreach语句,其作用是使程序终止循环,跳到循环过程下面的程序语句。
break语句的使用格式为:
break;
注意,如果是多重循环,则break的作用不是使程序跳出所有循环,而是使程序跳出break本身所在的循环。
【例3-13】循环接收和输出键盘输入的每一行的值,当接收的内容为空字符串时退出。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
while(true)
{
Console.Write("请输入一个字符串(直接回车退出):");
strings=Console.ReadLine();
if(s=="")break;
Console.WriteLine("你输入的是:{0}.",s);
}
}
}
运行结果如图3-19所示。图3-19例3-13运行结果
2. continue语句
就像break语句一样,continue语句可以影响循环的执行。不过continue语句并不是中断整个循环,而是中断目前这次循环,即跳过循环体中continue语句下面尚未执行的语句,再判断表达式的条件,以决定是否执行该循环体的下一次循环。
其语法格式为:
continue;【例3-14】输出1到10之间的不能被3整除的数。
usingSystem;
classProgram
{
publicstaticvoidMain(String[]args)
{
for(intn=1;n<=10;n++)
{
if(n%3==0)
continue;
Console.WriteLine(n);
}
}
}
运行结果如图3-20所示。图3-20例3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业6s管理学习心得体会
- 企业实习安全教育心得
- 保安员工获奖感言范文大全(33篇)
- 2026届广东惠州市惠阳区中考英语模试卷含答案
- 八年级道德与法治上册期中重点复习知识考前必看
- 会计实习总结18篇
- 保育员考试:中级保育员考试
- 体育教学工作总结15篇
- 2026 学龄前自闭症关键干预社交课件
- 一年级(下)数学第六单元拔尖测试卷《苏教版》
- 冬虫夏草质量检测与标准规范解读
- 中医护理适任题库及答案解析
- 公司员工调薪机制
- 国开2025年《行政领导学》形考作业1-4答案
- 消费主义课件
- 全国大学生职业规划大赛《工业机器人技术》专业生涯发展展示【高职(专科)】
- 天气雷达塔施工方案
- 新高一化学暑假学习讲义:物质的分类与转化(解析版)
- 2025年上半年盘锦北方沥青股份有限公司校招笔试题带答案
- 重症胰腺炎CRRT治疗病例分享
- 四川省眉山市市级名校2026届中考数学押题试卷含解析
评论
0/150
提交评论