返回首页
苏宁会员
购物车 0
易付宝
手机苏宁

服务体验

店铺评分与同行业相比

用户评价:----

物流时效:----

售后服务:----

  • 服务承诺: 正品保障
  • 公司名称:
  • 所 在 地:

  • 正版新书]C#.NET程序设计项目化教程张震 等9787302491378
  • 全店均为全新正版书籍,欢迎选购!新疆西藏青海(可包挂刷).港澳台及海外地区bu bao快递
    • 作者: 张震 等著 | 张震 等编 | 张震 等译 | 张震 等绘
    • 出版社: 清华大学出版社
    • 出版时间:2018-06-01
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    苏宁商家

    商家:
    君凤文轩图书专营店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    商品分类

    商品参数
    • 作者: 张震 等著| 张震 等编| 张震 等译| 张震 等绘
    • 出版社:清华大学出版社
    • 出版时间:2018-06-01
    • 版次:1
    • 印次:1
    • 印刷时间:2018-06-01
    • 字数:475千字
    • 页数:301
    • 开本:16开
    • ISBN:9787302491378
    • 版权提供:清华大学出版社
  • 作者: 张震 等
  • 著: 张震 等 译
  • 装帧: 暂无
  • 印次: 1
  • 定价: 49
  • ISBN: 9787302491378
  • 出版社: 清华大学出版社
  • 开本: 16开
  • 印刷时间: 2018-06-01
  • 语种: 中文
  • 出版时间: 2018-06-01
  • 页数: 301
  • 外部编号: 庄村47370
  • 版次: 1
  • 成品尺寸: 暂无
  • 项目1 初识Visual C#开发环境
    任务1 Visual Studio 2010开发环境的安装
    任务2 创建C#控制台应用程序
    任务3 创建Windows窗体应用程序
    项目小结
    拓展实训
    习题
    项目2 C#基础知识
    任务1 编写控制台程序——实现个人简历的制作
    任务2 简单计算器程序
    任务3 长方体表面积、体积计算器
    任务4 根据身份证号获取个人信息
    项目小结
    拓展实训
    习题
    项目3 C#流程控制
    任务1 判断一个数是不是3的倍数
    任务2 简易计算器的设计
    任务3 计算机票优惠率
    任务4 猜数字
    任务5 有规律数列求和
    任务6 数据加密
    任务7 输出图形
    任务8 百钱买百鸡问题的求解
    项目小结
    拓展实训
    习题
    项目4 数组
    任务1 求取一个整数数列中的最大值和最小值
    任务2 二维数组的行和列元素互换
    任务3 输出杨辉三角形
    任务4 使用Sort方法对数组快速排序
    任务5 利用冒泡排序算法对数组中的数进行排序
    任务6 利用选择排序算法对数组中的数进行排序
    项目小结
    拓展实训
    习题
    项目5 开发窗体应用程序
    任务1 制作个人信息登记程序
    任务2 制作简易文本编辑器
    项目小结
    拓展实训
    习题
    项目6 使用集合类型开发程序
    任务制作简易通讯录管理程序
    项目小结
    拓展实训
    习题
    项目7 设计面向对象应用程序
    任务1 认知面向对象

    项目3C#流程控制由计算机“想”一个1~100之间的数请人猜,如果猜对了,则在屏幕上输出猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,然后用户可以选择结束游戏或继续猜下一个数;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中,则停止本次数,然后继续猜下一个数或游戏结束。每次程序可以反复猜多个数,直到操作者想停止时才结束。
    if分支选择结构switch多分支结构while()、do…while()、for()循环结构多重循环结构foreach()循环掌握实现分支结构的两种语句,明确其执行流程熟练掌握if语句的各种用法,能够灵活运用if语句实现分支结构程序设计掌握switch语句的使用方法,能用switch语句完成多分支结构程序设计熟练掌握循环结构程序设计掌握多重循环结构程序设计掌握VisualC#中的异常处理机制学会利用分支、循环结构编程解决实际问题任务1判断一个数是不是3的倍数任务2简易计算器的设计任务3计算机票优惠率任务4猜数字任务5有规律数列求和任务6数据加密任务7输出图形任务8百钱买百鸡问题的求解知识要点:if分支选择结构程序设计switch分支选择结构程序设计while循环控制语句do…while循环控制语句for循环控制语句循环的嵌套foreach循环控制语句在前面的学习中,各语句是按自上而下的顺序执行的,执行完上一个语句就自动执行下一个语句,是无条件的,不必做任何判断。这是最简单的程序结构。实际上,在很多情况下,需要根据某个条件是否满足来决定是否执行指定的操作任务,或者从给定的两种或多种操作选择其一,在或者需要重复的执行相同的操作。这就是本章学习的内容——流程控制。
    知识点1if分支选择结构程序设计英文单词if可以翻译成“如果”,例如,“如果考试不及格,就要补考”,这句话如果用C#中的if语句去表达,则可以使用以下形式:if(考试不及格){就要补考;}很容易理解,()中的内容是条件,只有()中的内容成立,才能执行{}里的内容,这便是if语句的最基本的用法。
    if条件语句包含多种形式:单分支、双分支和多分支,其流程图如图31所示。
    图31if条件语句1.单分支结构if(表达式)语句;执行过程如下:先计算表达式的值,如果“表达式”的值为true,执行其后的“语句”;否则不执行该语句。
    说明:(1)条件表达式可以是关系表达式或逻辑表达式,也可以是其他类型的表达式(赋值表达式等),甚至可以是一个变量或常量。
    (2)语句可以是单个语句,也可以是多个语句。如果是多个语句,则需要使用大括号“{}”把这组语句括起来形成语句块,也称为复合语句。
    2.双分支结构if语句更常用的形式是双分支语句,一般形式为:if(表达式)语句1;else语句2;执行过程如下:如果表达式的值为真,则执语句/语句块1;若表达的值为假,则执行语句2。
    说明:(1)if语句无论写在几行上,都是一个整体,属于同一个语句。else子句不能作为语句单独使用,它必须是if语句的一部分,与if配对使用。
    (2)else分支也可省略。
    3.多分支结构前两种形式的if语句一般都用于两个分支的情况。当有多个分支选择时,可采用if…else…if语句,其一般形式为:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;…elseif(表达式n)语句n;else语句n+1;执行过程如下:依次判断表达式的值,当出现某个值为真时,执行其对应的语句,然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n+1,然后继续执行后续程序。
    图32程序运行界面【案例31】输入两个数a和b,按代数值由小到大的顺序输出这两个数。运行效果如图32所示。
    分析:这个问题的算法很简单,只要做一次比较,然后进行一次交换即可。用if语句实现条件判断。
    关键是怎样实现两个变量的值的互换。不能把两个变量直接互相赋值,如为了将a和b对换,不能用下面的方法:a=b;//把变量b的值赋给变量a,a的值等于b的值
    b=a;//再把变量a的值赋给变量b,变量b的值没有改变为了实现互换,必须借助于第3个变量。可以这样考虑:将A和B两个杯子中的水互换,用两个杯子的水倒来倒去的办法是无法实现的。必须借助于第3个杯子C,先把A杯的水倒在C杯中,再把B杯的水倒在A杯中,最后再把C杯的水倒在B杯中,这就实现了两个杯子中的水互换。凡是程序中涉及交换两个变量的值都可以用此方法。
    参考代码如下:classProgram{staticvoidMain(string[]args){floata,b,t;Console.WriteLine(\"请输入两个数:\");a=Convert.ToSingle(Console.ReadLine());b=Convert.ToSingle(Console.ReadLine());if(a>b){//将a和b的值互换t=a;a=b;b=t;}Console.WriteLine(\"按由小到大的顺序输出:\n{0}\n{1}\",a,b);}}【案例32】成绩转换。运行效果如图33所示。
    创建一个Windows窗体应用程序,采用if语句实现由百分制成绩到五级制的转换。评定标准如下:成绩大于等于90分为优,成绩在80~89分为良,成绩在70~79分为中,成绩在60~69分为及格,60分以下为不及格。
    该案例需要在窗体上添加2个标签控件(label1和label2)、2个文本框控件(textBox1、textBox2)、1个命令按钮控件(button1),初始界面如图34所示。
    图33程序运行界面图34程序初始出图323修改属性后的窗体界面按照表35中的要求对窗体和控件的属性进行修改,修改后的界面如图323所示。
    分析:完数:一个数如果恰好等于它的因子之和,这个数称为“完数”,例如,6的因子为1、2、3,因为6=1+2+3。
    参考代码如下:privatevoidbutton1_Click(objectsender,EventArgse){stringstrR=\"\";stringstrT=textBox1.Text.Trim();intm=Convert.ToInt32(strT);for(intn=1;n<=m;n++){intsum=0;for(inti=1;i所谓遍历,就是从头到尾走一趟。遍历数组,即从头到尾逐个读出数组的每个元素。其语法格式如下:foreach(<类型名称><元素变量>in<数组或集合对象>){<循环语句块>}说明:(1)“元素变量”是一个循环变量,在循环中,该变量依次获取数组或集合中各元素的值。
    (2)“类型名称”是循环变量的类型,必须与数组或集合的类型一致,例如,如果要遍历一个字符串数组中的每一项,那么此处变量的类型就应该是string类型。
    (3)在foreach循环体的语句序列中,数组或集合的元素是只读的,其值不能改变。如果需要迭代数组或集合中的各元素并改变其值,应该使用for循环。
    【案例310】利用foreach循环统计用户输入的字符串中的字母个数和数字个数。运行结果如图324所示。
    本案例需添加5个标签控件(label1、label2、label3、label4和label5)、1个文本框(textBox1)、1个命令按钮控件(button1),初始界面如图325所示。
    图324程序运行界面图325程序设计界面控件属性的设置如表36所示。
    表36对象属性的设置对象属性属性值
    Form1Text字符统计label1Text请输入字符串label2Text字母个数为:label3Text数字个数为:label4Text—label5Text—textBox1MultilineTruebutton1Text统计图326修改属性后的窗体界面按照表36中的要求对窗体和控件的属性进行修改,修改后的界面如图326所示。
    分析:依次遍历字符串中的每一个字符,判断字符是字母还是数字。
    参考代码如下:privatevoidbutton1_Click(objectsender,EventArgse){intcountletters=0;intcountdigits=0;stringinput;input=textBox1.Text;foreach(charchrininput){if(char.IsLetter(chr))countletters++;if(char.IsDigit(chr))countdigits++;}label4.Text=Convert.ToString(countletters);label5.Text=Convert.ToString(countdigits);}任务1判断一个数是不是3的倍数▊任务分析编写Windows窗体应用程序,任意输入一个整数x,判断其是否是3的倍数,如果是,则输出“x是3的倍数”;否则输出“x不是3的倍数”。很显然这个可以使用if的双分支结构实现。
    ◆任务实施【步骤1】启动VisualStudio2010,打开“新建项目”窗口。在左侧选择VisualC#,在右侧选择“窗体应用程序”,并在下方的“名称”中输入renwu1,位置中选择“F:\C#工作目录\”,“解决方案名称”中也输入renwu1,单击“确定”按钮,进入窗体设计界面。
    【步骤2】给窗体添加2个标签控件(label1、label2)、1个文本框控件(textBox1)、1个命令按钮控件(button1),适当调整控件的大小及布局,如图327所示。
    【步骤3】按照表37中的要求对窗体和控件的属性进行修改,修改后的界面如图328所示。
    表37对象属性的设置对象属性属性值
    Form1Text判断是否为3的倍数label1Text请输入一个整数label2AutoSizeFalselabel2BorderStyleFixed3Dbutton1Text判断图327程序初始界面图328修改属性后的窗体界面【步骤4】双击“判断”按钮,进入代码编写界面,添加“判断”按钮的Click事件代码如下:privatevoidbutton1_Click(objectsender,EventArgse){intx;x=int.Parse(textBox1.Text);if(x%3==0)label2.Text=textBox1.Text+\"是3的倍数\";elselabel2.Text=textBox1.Text+\"不是3的倍数\";}【步骤5】执行程序,运行结果如图329所示。
    图329程序运行界面任务2简易计算器的设计设计一个Windows窗体应用程序,输入两个操作数,并根据所选择的运算符,在单击“计算”按钮后进行相应的运算,单击“退出”按钮结束程序的运行。
    ▊任务分析供选择的运算符有5个,可以利用并列的if的单分支结构实现,也可以用switch多分支语句实现。
    ◆任务实施【步骤1】启动VisualStudio2010,打开“新建项目”窗口。在左侧选择VisualC#,在右侧选择“窗体应用程序”,并在下方的“名称”中输入renwu2,“位置”中选择“F:\C#工作目录\”,“解决方案名称”中也输入renwu2,单击“确定”按钮,进入窗体设计界面。
    【步骤2】给窗体添加3个标签控件(label1、label2和label3)、3个文本框控件(textBox1、textBox2和textBox3)、2个命令按钮控件(button1和button2)、1个groupBox1控件和5个单选按钮控件(radioButton1、radioButton2、radioButton3、radioButton4和radioButton5),适当调整控件的大小及布局,如图330所示。
    【步骤3】按照表38中的要求对窗体和控件的属性进行修改,修改后的界面如图331所示。
    表38对象属性的设置对象属性属性值
    Form2Text简易计算器label1Text操作数1label2Text操作数2label3Text结果groupBox1Text运算符radioButton1Text+radioButton2Text-radioButton3Text*radioButton4Text/radioButton5Text%button1Text计算button2Text退出图330程序设计界面图331修改窗性后窗体界面【步骤4】双击“计算”按钮,进入代码编写界面,添加“计算”按钮的Click事件代码如下:privatevoidbutton1_Click(objectsender,EventArgse){doublex=double.Parse(textBox1.Text);doubley=double.Parse(textBox2.Text);if(radioButton1.Checked)label4.Text=Convert.ToString(x+y);if(radioButton2.Checked)label4.Text=Convert.ToString(x-y);if(radioButton3.Checked)label4.Text=Convert.ToString(x*y);if(radioButton4.Checked)label4.Text=Convert.ToString(x/y);if(radioButton5.Checked)label4.Text=Convert.ToString(x%y);}【步骤5】双击“退出”按钮,进入代码编写界面,添加“退出”按钮的Click事件代码如下:privatevoidbutton2_Click(objectsender,EventArgse){Application.Exit();}【步骤6】执行程序,输入操作数1和操作数2,单击“计算”按钮,运行结果如图332所示。
    图332程序运行界面任务3计算机票优惠率航空公司规定:根据月份和订票张数来决定机票的优惠率,旅游旺季(7~9月),如果订票数超过20张,票价优惠15%,20张以下优惠5%;在旅游淡季(1~5月、10月、11月),如果订票数超过20张,票价优惠30%,20张以下优惠20%;其他情况一律优惠10%,设计一个Windows窗体应用程序,依据上述规则,输入订票月份和订票张数,输出优惠率。
    ▊任务分析由于一年中一共有12个月,因此可以考虑采用12个case分支的switch语句作为主流程控制结构。对于同一个月份而言,不同的订票数量对应的优惠率是不同的,因此需要采用双分支的if…else结构进行处理。综合分析,程序可采用switch语句中嵌套if…else语句实现。
    ◆任务实施【步骤1】启动VisualStudio2010,打开“新建项目”窗口。在左侧选择VisualC#,在右侧选择“窗体应用程序”,并在下方的“名称”中输入renwu3,“位置”中选择“F:\C#工作目录\”,“解决方案名称”中也输入renwu3,单击“确定”按钮,进入窗体设计界面。
    【步骤2】给窗体添加2个分组框控件(groupBox1与groupBox2)、5个标签控件(label1~label5)、2个文本框控件(textBox1和textBox2)、1个命令按钮控件(button1),适当调整控件的大小及布局,如图333所示。
    【步骤3】按照表39中的要求对窗体和控件的属性进行修改,修改后的界面如图334所示。
    表39对象属性的设置对象属性属性值
    Form1Text优惠机票label1Text月份label2Text订票数label3Text月label4Text张label5Text—groupBox1Text输入月份与订票数groupBox2Text显示优惠率button1Text计算优惠率图333程序设计界面图334修改属性后窗体界面【步骤4】双击“计算优惠率”按钮,进入代码编写界面,添加“计算优惠率”按钮的Click事件代码如下:privatevoidbutton1_Click(objectsender,EventArgse){intmonth,count;month=int.Parse(textBox1.Text);count=int.Parse(textBox2.Text);switch(month){case1:case2:case3:case4:case5:case10:case11:if(count>=20)label3.Text=\"优惠率为30%\";elselabel3.Text=\"优惠率为20%\";break;case7:case8:case9:if(count>=20)label3.Text=\"优惠率为15%\";elselabel3.Text=\"优惠率为5%\";break;default:label3.Text=\"优惠率为10%\";break;}}【步骤5】执行程序,输入月份及订票数量,单击“计算优惠率”按钮,运行结果如图335所示。
    图335程序运行界面任务4猜数字先由计算机“想”一个1~100之间的数请人猜,如果猜对了,则结束游戏,并在屏幕上输出猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人们所猜的数是太大还是太小,直到猜对为止。
    ▊任务分析借用分支程序设计实现的第一步:Console.WriteLine(\"请输入一个0~100之间的数:\");y=int.Parse(Console.ReadLine());if(x==y)printf(\"恭喜,猜对了\");elseif(x>y)Console.WriteLine(\"你猜的太小了!\");elseConsole.WriteLine(\"你猜的太大了!\");用户输入数据进行数据比较的部分重复执行直到猜对为止。
    ◆任务实施【步骤1】启动VisualStudio2010,打开“新建项目”窗口。在左侧选择VisualC#,在右侧选择“控制台应用程序”,并在下方的“名称”中输入renwu4,“位置”中选择“F:\C#工作目录\”,“解决方案名称”中也输入renwu4,单击“确定”按钮,进入代码编辑界面。
    【步骤2】在Main方法中输入如下的语句:staticvoidMain(string[]args){Console.WriteLine(\"请输入一个0~100之间的数\");Randomrm=newRandom();intx,y,count=0;x=rm.Next(0,100);while(true){y=int.Parse(Console.ReadLine());count++;if(x==y)break;elseif(y>x)Console.WriteLine(\"你猜大了\");elseConsole.WriteLine(\"你猜小了\");}Console.WriteLine(\"恭喜你,猜对了!你是第{0}次猜对此数\",count);}【步骤3】按F5键或单击工具栏上的“启动调试”按钮,程序开始运行,结果如图336所示。
    图336程序运行界面任务5有规律数列求和有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13,找出数列的规律并求出前30项的和。
    ▊任务分析观察分数序列,从第二项开始,分母为前一项的分子,而分子为前一项的分子和分母的和。数列共30项,所以需要重复29次执行相同的操作。
    ◆任务实施【步骤1】启动VisualStudio2010,打开“新建项目”窗口。在左侧选择VisualC#,在右侧选择“控制台应用程序”,并在下方的“名称”中输入renwu5,“位置”中选择“F:\C#工作目录\”,“解决方案名称”中也输入renwu5,单击“确定”按钮,进入代码编辑界面。
    【步骤2】在Main方法中输入如下的语句:staticvoidMain(string[]args){inti=1,j=2;intk=1,fz;doubletn;doublesum=0;do{tn=j/(i*1.0);fz=j;j=j+i;i=fz;sum=sum+tn;k++;}while(k<=30);Console.WriteLine(\"多项式前30项的和:\n2/1+3/2+5/3+……={0}\n\n\",sum);}【步骤3】按F5键或单击工具栏上的“启动调试”按钮,程序开始运行,结果如图337所示。
    图337程序运行界面任务6数据加密某公司为了防止数据信息泄露,想采取数据加密,数据是小于8位的整数。加密规则如下:将每位数字都加上5,再用和除以10的余数代替该数字,最后将第一位和最后一位数字交换,如输入1234,则应输出9786,请帮助他们实现加密。
    ▊任务分析(1)将每位数字都加上5,再用其和除以10的余数代替该数字,即可用语句“s=(s+5)%10;”来实现。
    (2)将第一位和最后一位数字交换,分别用first和last两个变量记录首末两位的数字。
    ◆任务实施【步骤1】启动VisualStudio2010,打开“新建项目”窗口。在左侧选择VisualC#,在右侧选择“窗体应用程序”,并在下方的“名称”中输入renwu6,“位置”中选择“F:\C#工作目录\”,“解决方案名称”中也输入renwu6,单击“确定”按钮,进入窗体设计界面。
    【步骤2】给窗体添加2个标签控件(label1和label2)、1个命令按钮控件(button1)、2个文本框控件(textBox1和textBox2),适当调整控件的大小及布局,如图338所示。
    【步骤3】按照表310中的要求对窗体和控件的属性进行修改,修改后的界面如图339所示。
    表310对象属性的设置对象属性属性值
    Form1Text数据加密label1Text加密前:label2Text加密后:button1Text加密图338程序设计界面图339修改属性后窗体界面【步骤4】双击“加密”按钮,进入代码编写界面,添加“加密”按钮的Click事件代码如下:privatevoidbutton1_Click(objectsender,EventArgse){intjmq,jmh,len=0,t,t1,r=0,first=0,last=0;jmq=Convert.ToInt32(textBox1.Text);t=jmq;while(t>0){t=t/10;len++;}t=jmq;for(inti=1;i<=len;i++){t1=(t+5)%10;if(i==1)first=t1;if(i==len)last=t1;if(i!=1&&i!=len)r=r+Convert.ToInt32(t1*System.Math.Pow(10,i-1));t=t/10;}jmh=first*(int)System.Math.Pow(10,len-1)+r+last;textBox2.Text=jmh.ToString();}【步骤5】执行程序,在加密前文本框中输入字符,然后单击“加密”按钮,运行结果如图340所示。
    图340程序运行界面任务7输出图形设计一个Windows窗体应用程序,根据用户的要求,输出三角形和平行四边形图案。
    ▊任务分析输出的图形由行和列构成,所以要用双重循环。
    ◆任务实施【步骤1】启动VisualStudio2010,打开“新建项目”窗口。在左侧选择VisualC#,在右侧选择“窗体应用程序”,并在下方的“名称”中输入renwu7,“位置”中选择“F:\C#工作目录\”,“解决方案名称”中也输入renwu7,单击“确定”按钮,进入窗体设计界面。
    【步骤2】给窗体添加1个标签控件(label1)、2个命令按钮控件(button1和button2),适当调整控件的大小及布局,如图341所示。
    【步骤3】按照表311中的要求对窗体和控件的属性进行修改,修改后的界面如图342所示。
    表311对象属性的设置对象属性属性值
    Form1Text输出图形label1AutoSizeFalselabel1BorderStyleFixed3Dbutton1Text三角形button2Text平行四边形图341程序初始界面图342修改属性后窗体界面【步骤4】双击“三角形”按钮,进入代码编写界面,添加“三角形”按钮的Click事件代码如下:privatevoidbutton1_Click(objectsender,EventArgse){inti,j,k;label1.Text=\"三角形:\n\n\n\";for(i=1;i<=9;i++){for(j=1;j<=20-i;j++)label1.Text+=\"\";for(k=1;k<=2*i-1;k++)label1.Text+=\"*\";label1.Text+=\"\n\";}}【步骤5】双击“平行四边形”按钮,进入代码编写界面,添加“平行四边形”按钮的Click事件代码如下:privatevoidbutton2_Click(objectsender,EventArgse){inti,j,k;label1.Text=\"平行四边形:\n\n\n\";for(i=1;i<=9;i++){for(j=1;j<=15-i;j++)label1.Text+=\"\";for(k=1;k<=17;k++)label1.Text+=\"*\";label1.Text+=\"\n\";}}【步骤6】执行程序,分别单击“三角形”按钮和“平行四边形”按钮,运行结果如图343和图344所示。
    图343程序运行界面(一)图344程序运行界面(二)任务8百钱买百鸡问题的求解▊任务分析每只公鸡值5元,每只母鸡值3元,3只小鸡值1元,用100元买100只鸡,问公鸡、母鸡和小鸡各买几只?
    用三重for循环实现。
    ◆任务实施【步骤1】启动VisualStudio2010,打开“新建项目”窗口。在左侧选择VisualC#,在右侧选择“窗体应用程序”,并在下方的“名称”中输入renwu8,“位置”中选择“F:\C#工作目录\”,“解决方案名称”中也输入renwu8,单击“确定”按钮,进入窗体设计界面。
    【步骤2】给窗体添加1个标签控件(label1)、1个命令按钮控件(button1),适当调整控件的大小及布局,如图345所示。
    【步骤3】按照表312中的要求对窗体和控件的属性进行修改,修改后的界面如图346所示。
    表312对象属性的设置对象属性属性值
    Form1Text百元百鸡label1AutoSizeFalselabel1Textlabel1BorderStyleFixed3Dbutton1Text计算图345程序初始界面图346修改属性后窗体界面【步骤4】双击“计算”按钮,进入代码编写界面,添加“计算”按钮的Click事件代码如下:privatevoidbutton1_Click(objectsender,EventArgse){inti,j,k;for(i=0;i<=33;i++){for(j=0;j<=20;j++)for(k=0;k<=100;k++)if(i+j+k==100&&i*3+j*5+k/3==100&&k%3==0)label1.Text+=\"母鸡\"+i.ToString()+\"只,\"+\"公鸡\"+j.ToString()+\"只,\"+\"小鸡\"+k.ToString()+\"只\n\n\";}}【步骤5】执行程序,单击“计算”按钮,运行结果如图347所示。
    图347程序运行界面拓展知识:一、 跳转语句跳转语句主要用于无条件地转移控制,它会将控制转到某个位置,这个位置就成为跳转语句的目标。如果跳转语句出现在一个语句块内,而跳转语句的目标却在该语句之外,则称该跳转语句退出该语句块。C#提供的跳转语句主要包括break语句、continue语句、goto语句和return语句。
    1.break语句break语句可用于退出整个循环,执行循环后面的代码。它可以与任意C#循环一起使用。有时候特意将某些循环做成死循环,其内部带有break语句,用来终止循环,如服务器响应程序。
    使用break时,需要注意以下两种情况:(1)当多个switch、while、do…while、for或foreach语句彼此嵌套时,break语句只能跳出它所属的那层循环。若要穿越多个嵌套层转移控制,必须使用goto语句。
    (2)break语句不能用于循环语句和switch语句之外的任何其他语句中,否则将产生编译错误。
    2.continue语句continue语句可用于跳过本次循环,并返回到循环的起始处,若循环条件满足就会进入下次循环。
    该语句类似于break,也必须在while、do…while、for或foreach循环中使用。但是它只是跳出了本次循环,而break语句则是结束循环,跳转到循环后面的语句去执行。
    【案例311】新建一个控制台应用程序,输出100~200之间不能被9整除的数。
    staticvoidMain(string[]args){intn;for(n=100;n<=200;n++){if(n%9==0)continue;Console.Write(\"{0}\t\",n);}}3.goto语句goto语句是C#的无条件跳转语句。当遇到goto语句时,程序跳转到goto指定的位置。
    goto语句形式如下:gotoidentifier;gotocase常量表达式;gotodefault;使用goto语句时,应注意以下几种情况:(1)gotoidentifier语句跳转到由identifier标签标记的语句。identifier是一个标识符(标号),标号由字母、数字和下画线构成,且首字母必须是字母或下画线,任何转移到的标号后面应带一个冒号。
    (2)goto语句的后两种形式用于将控制传递给特定的switch…case标签或switch语句中的默认标签。
    (3)goto语句可用于跳出深层嵌套循环,即如果一次要跳出两层或更多层的循环,应使用goto语句。
    (4)goto语句不能直接跳转进入循环体。
    以下程序体现了goto语句的用法:intx=1;loop1;x++;if(x<100)gotoloop1;虽然goto语句有一定的使用价值,但是由于它可能会破坏程序的结构化,目前对它的使用存在争议。有人建议避免使用它,有人建议把它用作排除错误的基本工具。各种观点截然不同,虽然许多人不用goto语句也能够编程,但是仍然有人使用它。读者在使用goto语句时一定要小心,要确保程序是可维护的。
    4.return语句return语句将控制权返回给方法的调用者,它也可以用来返回值。如果return语句放在循环体内,当满足条件时执行return语句,循环自动结束。
    【案例312】classJumpTest{staticintAdd(){inti=0;intsum=0;while(true){i++;if(i>=101)break;if(i%2!=0)continue;elsesum+=i;}returnsum;}}二、 异常处理语句try…catch…finally再优秀的程序员也无法保证所编写的程序是完美无缺、毫无错误的。异常处理是指对程序可能出现错误的处理机制和方法。C#语言的异常处理功能通过使用try语句来定义代码块,实现尝试可能未成功的操作、处理失败以及在事后清理资源等。
    try语句提供一种机制,用于捕捉在块执行期间发生的各种异常。此外,try语句可以指定一个代码块,并保证当控制离开try语句时总是先执行该代码。
    C#的异常处理语句try…catch…finally语法如下:try{}catch{}finally{}执行过程如下:(1)如果中的每一条语句均正常执行,则跳转到(3);如果中某条语句出现异常,则跳转到(2)。
    (2)执行与发生此错误匹配的,然后跳转到(3)。
    (3)执行。
    说明:(1)后面可以跟一个或多个catch语句块。
    (2)不管是否出现异常,都需要执行。但是如果不需要,可以省略。
    【案例313】建立控制台应用程序项目,编写整数除零代码。
    staticvoidMain(string[]args){intx,y,z;x=2;y=0;z=x/y;Console.WriteLine(\"整数除以0,得:{0}\",z);}以上代码没有语法错误,按Ctrl+F5键开始执行。由于0作为除数没有意义,而代码中又没有处理异常,故运行后出现如图348所示的未处理异常运行结果及如图349所示的停止工作对话框。在对话框中单击“关闭程序”按钮可退出程序运行。
    图348未处理异常运行结果图349停止工作对话框如果在停止工作对话框中单击“调试”按钮,则启动调试运行,将出现如图350所示的未处理异常对话框,选择“疑难解界面控件属性的设置如表31所示。
    按照表31中的要求对窗体和控件的属性进行修改,修改后的界面如图35所示。
    表31对象属性的设置对象属性属性值
    Form1Text成绩转换label1Text百分制成绩label2Text五级制成绩button1Text转换图35修改属性后的窗体界面分析:由于分数范围超过两个,因此需要使用多分支选择结构实现。
    参考代码如下:privatevoidbutton1_Click(objectsender,EventArgse){doublescore;stringgrade;score=double.Parse(textBox1.Text);if(score>=90)grade=\"优\";elseif(score>=80)grade=\"良\";elseif(score>=70)grade=\"中\";elseif(score>=60)grade=\"及格\";elsegrade=\"不及格\";textBox2.Text=grade;}说明:(1)本例采用if…elseif结构实现的多分支选择结构,也可以采用多个单分支的if语句实现。
    (2)多分支选择结构的另一种控制方法是通过switch语句实现。
    知识点2switch分支选择结构程序设计if语句只有两个分支可供选择,而实际问题中常常需要用到多分支的选择。例如,学生成绩的分类(90分以上为“优秀”,80~89分为“良好”,70~79分为“中等”,60~69分为“及格”,60分以下为“不及格”等)。尽管这些都可以用嵌套的if语句来处理,但如果分支较多,则嵌套的if语句层数多,程序冗长而且可读性降低。
    switch语句是多分支选择语句。用来实现如图36所表示的多分支选择结构。
    图36switch多分支结构可以看到,switch语句的作用是根据表达式的值,使流程跳转到不同的语句。switch语句的一般形式如下:switch(表达式){case常量表达式1:语句1;break;case常量表达式2:语句2;break;…case常量表达式n:语句n;break;default:语句n+1;break;}执行过程如下:先计算表达式的值,并逐个与其后常量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面的case语句。如果表达式的值与case语句中的常量表达式的值均不相同,则执行default后面的语句。
    说明:(1)表达式所允许的数据类型为整数类型、字符类型、字符串类型或枚举类型。各个case分支后的常量表达式的数据类型必须与表达式的类型相同或者能够隐式地转换为控制表达式的类型。
    (2)switch下面的大括号中是一个答提示:”列表框中的选项可得到相关异常的帮助说明。
    图350启动调试运行时的未处理异常对话框【案例314】改进案例313,在代码中加入异常处理代码块try…catch。
    staticvoidMain(string[]args){try{intx,y,z;x=2;y=0;z=x/y;Console.WriteLine(\"整数除以0,得:{0}\",z);}catch(Exceptionex){Console.WriteLine(\"异常:\"+ex.Message);}}此例中catch语句后面小括号中定义了一个Exception对象ex,用来接收此异常处理。ex.Message属性是string类型,用来描述异常信息,它是只读属性。执行结果如图351所示。
    图351带异常处理整数除零运行结果【案例315】建立控制台应用程序项目,编写整数除法运算代码,使之形成try…catch…finally结构,无论是否存在异常都能正确地执行其中的语句。
    staticvoidMain(string[]args){try{intx,y,z;Console.Write(\"请输入整数的被除数:\");x=int.Parse(Console.ReadLine());Console.Write(\"请输入整数的除数:\");y=int.Parse(Console.ReadLine());z=x/y;Console.WriteLine(\"整除结果:\"+z);}catch(FormatExceptionfex){Console.WriteLine(\"格式异常:\"+fex.Message);}catch(DivideByZeroExceptiondex){Console.WriteLine(\"除数为零异常:\"+dex.Message);}finally{Console.WriteLine(\"-----程序结束\");}}执行程序,每次输入不同的操作数。两次运行的结果如图352和图353所示。从中可见,每次运行,不管是否发生异常,都执行了finally子块的语句。
    图352运行结果1图353运行结果2项目小结结构化程序设计主要有3种基本结构:顺序结构、选择结构和循环结构。顺序结构最简单就是按照语句出现的先后次序执行。选择结构也叫分支结构,分为单分支选择结构、双分支选择结构和多分支选择结构。C#中实现分支结构的语句有两个:if语句和switch语句。在循环结构中,只要满足循环执行的条件,就重复执行循环体内的语句。C#提供了4种不同的循环机制:for、while、do…while和foreach。
    跳转语句可实现程序的无条件转移。C#的跳转语句包括break、continue、goto和return语句。
    C#通过使用try…catch…finally语句来处理系统级和应用程序级的错误,实现尝试可能未成功的操作、处理失败以及在事后清理资源等。
    拓展实训一、 实训的目的和要求
    (1)熟练掌握分支结构程序设计的基本方法。
    (2)掌握if…else语句和switch语句的语法格式和使用技巧。
    (3)熟练掌握循环结构程序设计的方法。
    (4)掌握while语句、do…while语句和for语句的语法格式和使用技巧。
    (5)综合运用选择结构和循环结构解决问题。
    二、 实训内容(1)判断是否为闰年:创建Windows窗体应用程序,程序运行时,在“年份”文本框中输入一个正整数,单击“判断”按钮,就能在标签控件中显示判断结果;单击“退出”按钮则结束程序运行。
    (2)创建控制台应用程序,求解猴子吃桃问题:猴子第一天摘下桃子若干,当即吃了一半后又多吃了一个;第二天又将剩下的桃子吃掉一半后再多吃一个;以后每天都吃掉前一天剩下的一半零一个。到第10天想再吃时,只剩下一个桃子。求猴子第一天共摘下多少个桃子。
    (3)所谓“水仙花数”,指的就是这样一个3位数:其各位数的立方和等于该数。例如:153=13+53+33。编写控制台应用程序,计算输出所有的水仙花数。
    (4)创建一个控制台应用程序,输入月份,输出对应的季节。
    (5)编写程序,求解以下问题:①在窗体上输出100~500之间的所有奇数,并计算它们的和。
    ②统计1~1000之内既能被5整除,也能被7整除的数的个数,并输出在窗体上。
    ③从300开始,找出连续100个既能被3整数又能被5整除的数。
    ④计算s=1!+2!+3!+…+n!(其中n是用户输入的正整数)。
    ⑤计算出不大于1000的10个最大的素数。
    习题一、 选择题1.先判断条件的循环语句是()。
    A.do…whileB.whileC.while…doD.do…loop2.执行下列语句后控制台上的输出是()。
    if(true)System.Console.WriteLine(\"FirstMessage\");System.Console.WriteLine(\"SecondMessage\");A.FirstMessageB.SecondMessageSecondMessageC.无输出D.FirstMessage3.执行C#语句序列“inti;for(i=0;i++<4;);”后,变量i的值是()。
    A.5B.4C.1D.04.若有如下程序,则语句a+1执行的次数为()。
    staticvoidMain(string[]args){intx=1,a=1;do{a=a+1;}while(x!=0)}A.0B.1C.无限次D.有限次5.有如下程序,该程序的输出结果是()。
    staticvoidMain(string[]args){intn=9;while(n>6){n--;Console.WriteLine(n);}}A.987B.876C.8765D.9876二、 填空题1.当程序中执行到语句时,将结束在循环语句中循环体的一次执行。
    2.在switch语句中,每个语句标号所含关键字case后面的表达式必须是。
    3.在while循环语句中,一定要有修改循环条件的语句,否则可能造成。
    4.在C#语言中,实现循环的主要语句有while、do…while、for和语句。
    5.VisualStudio提供方法就是专门用于人为引发异常的。
    三、 写出程序的运行结果1.classProgram{staticvoidMain(string[]args){ints=0,i;for(i=1;;i++){if(s>50)break;if(i%2==0)s+=i;}Console.WriteLine(\"i,s=\"+i+\",\"+s);}}运行结果为:2.staticvoidMain(string[]args){intx=15;while(x>10&&x<50){x++;if(x/3!=0){x++;break;}elsecontinue;}Console.WriteLine(x);}运行结果为:3.staticvoidMain(string[]args){intk=4,n=0;for(;n0){switch(k){case1:n+=k;break;case2:break;case3:n+=k;break;default:break;}k=k-1;}Console.WriteLine(n);}运行结果为:5.staticvoidMain(string[]args){inti=0,s=0;do{if(i%2!=0){i++;continue;}i++;s+=i;}while(i<7);Console.Write(s);}运行结果为:复合语句。这个复合语句也包括若干条语句,它是switch语句的语句体。语句体内包含多个以关键字case开头的语句行和最多一个以default开头的语句行。case后面跟一个常量(或常量表达式)。
    (3)各个case和default的出现次序不影响执行结果。
    (4)每一个case常量必须互不相同,否则就会出现互相矛盾的现象(对switch表达式的同一数值,有两种或多种执行方案)。
    (5)执行完一个case后面的语句后,流程控制转移到下一个case继续执行。“case常量表达式”只起语句标号的作用,并不是在该处进行条件判断。在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,从此标号开始执行下去,不再进行判断。因此,应该在执行一个case分支后,使流程跳出switch结构,即终止switch语句的执行。可以用一个break语句来达到此目的。
    (6)多个case可以共用一组执行语句。
    图37程序运行界面【案例33】采用switch语句实现案例32。运行效果如图37所示。
    分析:本例需要根据输入数据的不同范围执行不同的操作,由于分数范围超过两个,因此需要使用多分支选择结构实现。switch语句是将表达式的值与case后的常量进行比较判断,因此直接取输入的分数则需要设计很多个case分支,程序烦琐,不可取。仔细观察,可找出规律。同一分数段的分数是有共同点的,即每个分数等级的十位上的数值是相同的。因此,控制表达式可以采用“分数整除10”。
    该程序的界面设计和控件属性设置同案例32。
    参考代码如下:privatevoidbutton1_Click(objectsender,EventArgse){doublescore;stringgrade;score=double.Parse(textBox1.Text);switch((int)score/10){case10:case9:grade=\"优\";break;case8:grade=\"良\";break;case7:grade=\"中\";break;case6:grade=\"及格\";break;default:grade=\"不及格\";break;}textBox2.Text=grade;}说明:(1)本例从逻辑结构上较案例32更加清晰明了,建议多分支选择结构时优先选用switch语句。
    (2)switch后面的表达式不能是小数,所以需要(int)score/10,即将score强制转换为整型,注意score为double类型。
    (3)case10和case9共用同一条执行语句。
    【案例34】用控制台程序实现简单计算器。运行效果如图38所示。
    图38程序运行界面参考代码如下:staticvoidMain(string[]args){floata,b;intc;Console.WriteLine(\"简单计算器:\n\");Console.WriteLine(\"=====菜单=====\");Console.WriteLine(\"1--------加法\");Console.WriteLine(\"2--------减法\");Console.WriteLine(\"3--------乘法\");Console.WriteLine(\"4--------除法\");Console.WriteLine(\"==============\");Console.WriteLine(\"请输入你的选择:\");c=int.Parse(Console.ReadLine());Console.WriteLine(\"请输入要运算的数据:\n\");a=Convert.ToSingle(Console.ReadLine());b=Convert.ToSingle(Console.ReadLine());Console.Write(\"运算结果:\");switch(c){case1:Console.WriteLine(\"{0}+{1}={2}\",a,b,a+b);break;case2:Console.WriteLine(\"{0}-{1}={2}\",a,b,a-b);break;case3:Console.WriteLine(\"{0}*{1}={2}\",a,b,a*b);break;case4:if(b==0)Console.WriteLine(\"错误!被除数不能为零.\n\");elseConsole.WriteLine(\"{0}/{1}={2}\",a,b,a/b);break;default:Console.WriteLine(\"error!\n\");break;}}前面介绍了顺序结构和选择结构,但是只有这两种结构是不够的,还需要用到循环结构。在日常生活中或是在程序处理的问题中常常遇到需要重复处理的问题。例如:要向计算机输入全班50个学生的成绩(重复50次相同的输入操作)。
    分别统计全班50个学生的平均成绩(重复50次相同的计算操作)。
    求100个整数之和(重复100次相同的加法操作)。
    检查30个学生的成绩是否及格(重复30次相同的判别操作)。
    要处理以上问题,最原始的方法是分别编写若干个相同或相似的语句或程序段进行处理。
    例如,要求全班30个学生的平均成绩,可以先编写求一个学生平均成绩的程序段:floatscore1,score2,score3,score4,score5,aver;score1=float.Parse(Console.ReadLine());//以下输入一个学生的5门课成绩score2=float.Parse(Console.ReadLine());score3=float.Parse(Console.ReadLine());score4=float.Parse(Console.ReadLine());score5=float.Parse(Console.ReadLine());aver=(score1+score2+score3+score4+score5)/5;//求该学生的平均成绩Console.WriteLine(\"aver={0}\",aver);//输出该学生的平均成绩然后再重复写29个同样的程序段。这种方法虽然可以实现要求,但是显然是不可取的,因为工作量大,程序冗长、重复,难以阅读和维护。实际上,每一种计算机语言都提供了用来处理重复操作的语句,这就是循环控制。
    在C#中,可以用循环语句来处理上面的问题:floatscore1,score2,score3,score4,score5,aver;inti=1;while(i<=30){score1=float.Parse(Console.ReadLine());score2=float.Parse(Console.ReadLine());score3=float.Parse(Console.ReadLine());score4=float.Parse(Console.ReadLine());score5=float.Parse(Console.ReadLine());aver=(score1+score2+score3+score4+score5)/5;Console.WriteLine(\"第{0}个人的平均成绩:aver={1}\",i,aver);i++;}可以看到,用一个循环语句就把需要重复30次的程序段的问题解决了。
    知识点3while循环控制语句while循环也称当型循环,一般形式如下:while(表达式){语句;}其中表达式是循环条件,“语句”为循环体。循环体只能是一个语句,可以是一个简单的语句,也可以是复合语句(用大括号括起来的若干语句)。
    执行过程如下:计算表达式的值,当值为真时,执行循环体语句,为“假”时,就不执行循环体语句。其流程图如图39所示。
    【案例35】输出100以内的所有奇数和、偶数和。运行效果如图310所示。
    分析:求100以内奇数和即求1+3+5+…+99的值,是一个典型的累加操作。相邻两个操作数相差2,所以循环体内改变循环变量取值的语句为i=i+2;100以内偶数的和即求2+4+6+…+100。方法同求奇数的和。奇数和与偶数和的累加可以放在一个循环中实现,即在循环体中通过if…else语句分别进行处理。
    图39while语句图310程序运行界面该案例需要在窗体上添加4个标签控件(label1、label2、label3和label4)、1个命令按钮控件(button1),初始界面如图311所示。
    控件属性的设置如表32所示。
    表32对象属性的设置对象属性属性值
    Form1Text100以内奇数和与偶数和label1Text奇数和:label2Text偶数和:label3AutoSizeFalselabel4AutoSizeFalselabel3BorderStyleFixed3Dlabel4BorderStyleFixed3Dbutton1Text计算按照表32中的要求对窗体和控件的属性进行修改,修改后的界面如图312所示。
    图311程序初始界面图312修改属性后的窗体界面参考代码如下:privatevoidbutton1_Click(objectsender,EventArgse){intsum1=0,sum2=0,i=1;while(i<=100){if(i%2!=0)sum1=sum1+i;elsesum2=sum2+i;i=i+1;}label3.Text=sum1.ToString();label4.Text=sum2.ToString();}知识点4do…while循环控制语句除了while语句以外,C语言还提供了do…while语句来实现循环结构。
    do…while语句的一般形式为:do语句while(表达式);其中的“语句”就是循环体。它的执行过程可以用图313表示。
    do…while语句的执行过程是:先执行循环条件,然后检查条件是否成立,若成立,再执行循环体。这是和while语句不同的。
    注意:do…while语句的特点是:先无条件地执行循环体,然后判断循环条件是否成立。
    【案例36】用do…while语句改写案例35。 参考代码如下:privatevoidbutton1_Click(objectsender,EventArgse){intsum1=0,sum2=0,i=1;do{if(i%2!=0)sum1=sum1+i;elsesum2=sum2+i;i=i+1;}while(i<=100);label3.Text=sum1.ToString();label4.Text=sum2.ToString();}运行结果如图314所示。
    图313do…while语句图314程序运行界面程序分析:从案例35和案例36可以看出,对同一个问题可以用while语句处理,也可以用do…while语句处理。do…while语句结构和while语句结构可以相互转换。
    注意:在一般情况下,用while语句和用do…while语句处理同一问题时,若二者的循环体部分是一样的,那么结果也一样。如案例35和案例36中的循环体是相同的,得到的结果也相同。但是如果while后面的表达式一开始就为假时,则两种循环的结果是不同的。
    while和do…while循环的比较:(1)用while循环。
    staticvoidMain(string[]args){inti,sum=0;Console.WriteLine(\"pleaseenteri,i=?\");i=int.Parse(Console.ReadLine());while(i<=10){sum=sum+i;i++;}Console.WriteLine(\"sum={0}\",sum);}运行结果(两次)如下:(2)用do…while循环。
    staticvoidMain(string[]args){inti,sum=0;Console.WriteLine(\"pleaseenteri,i=?\");i=int.Parse(Console.ReadLine());do{sum=sum+i;i++;}while(i<=10);Console.WriteLine(\"sum={0}\n\",sum);}运行结果(两次)如下:再运行一次:可以看到,当输入i的值小于或等于10时,二者得到结果相同。而当i>10时,二者结果就不同了。这是因为此时对while循环来说,一次也不执行循环体(表达式“i<=10”的值为假),而对do…while循环来说则至少要执行一次循环体。所以可以得出结论:当初始条件为真时,两种循环语句得到的结果是相同的;否则,二者结果不相同(指二者具有相同的循环体的情况)。
    知识点5for循环控制语句除了可以用while语句和do…while语句实现循环外,还有一种循环语句for循环语句。for循环是一种计数型循环语句,语句更加灵活。不仅可以用于循环次数已经确定的情况,还可以用于循环次数不确定而只给出循环结束条件的情况。它完全可以代替while语句。它的一般形式如下:图315for语句for(表达式1;表达式2;表达式3)语句3个表达式的主要作用是:表达式1——设置初始条件,只执行一次。可以为零个、一个或多个变量设置初值。
    表达式2——是循环条件表达式,用来判定是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环。
    表达式3——作为循环的调整如使循环变量增值,它是在执行完循环体后才进行的。
    它的执行过程如图315所示。
    for语句的执行过程如下:第1步,先求解表达式1。
    第2步,求解表达式2,若其值为真,则执行for语句中指定的内嵌语句,然后执行下面第3步;若其值为假,则结束循环,转到第5步。
    第3步,求解表达式3。
    第4步,转回上面第2步继续执行。
    第5步,循环结束,执行for语句下面的一个语句。
    for语句最简单的应用形式也是最容易理解的形式如下:for(循环变量赋初值;循环条件;循环变量增量)语句循环变量赋初值总是一个赋值语句,它用来给循环控制变量赋初值;循环条件是一个关系表达式,决定什么时候退出循环;循环变量增量定义循环控制变量每循环一次后按什么方式变化。
    例如,求1~100的和。
    for(i=1;i<=100;i++)sum=sum+i;它相当于语句:i=1;while(i<=100){sum=sum+i;i++;}说明:(1)for语句的一般形式:for(表达式1;表达式2;表达式3)语句可改写为while循环的形式:表达式1;While(表达式2){语句表达式3}二者无条件等价。
    (2)for循环中的“表达式1(循环变量赋初值)”“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项,可以省略,但“;”不能省略。
    (3)省略了“表达式1(循环变量赋初值)”,表示不对循环控制变量赋初值。例如:for(;i<=100;i++)sum=sum+i;应当注意:由于省略了“表达式1”,没有对循环变量赋初值,因此,为了能正常执行循环,应在for语句之前给循环变量赋以初值。即i=1;for(;i<=100;i++)sum=sum+i;(4)省略了“表达式2(循环条件)”,则不做其他处理便成为死循环。
    例如:for(i=1;;i++)sum=sum+i;相当于:i=1;while(1){sum=sum+i;i++};(5)表达式3也可以省略,可在放在循环体语句中以保证循环能正常结束。
    for(i=1;i<=100;){sum=sum+i;i++;}上面的for语句省略了表达式3,但将i++放在了循环体中,效果是一样的,都能使程序正常结束。如果在循环体中无“i++;”语句,则循环体无止境地执行下去,形成死循环。
    【案例37】输入一个数,判断它是不是素数。运行结果如图316所示。
    本案例需添加2个标签控件(label1和label2)、1个文本框控件(textBox)、1个命令按钮控件(button1),初始界面如图317所示。
    图316程序设计界面图317程序初始界面控件属性的设置如表33所示。
    表33对象属性的设置对象属性属性值对象属性属性值
    Form1Text判素数label2BorderStyleFixed3Dlabel1Text请输入一个数:button1Text判断label2AutoSizeFalse图318修改属性后的窗体界面按照表33中的要求对窗体和控件的属性进行修改,修改后的界面如图318所示。
    分析:什么样的数是素数?如果一个数除了1和它本身之外不能被任何数整除,这个数就是素数。所以对于输入的这个数n,要分别用这个数除以2~n-1,共需执行n-2次。
    参考代码如下:privatevoidbutton1_Click(objectsender,EventArgse){intn,i;boolflag=true;n=int.Parse(textBox1.Text);for(i=2;i<=n-1;i++)if(n%i==0){flag=false;break;}if(flag==true)label2.Text=Convert.ToString(n)+\"是素数\";elselabel2.Text=Convert.ToString(n)+\"不是素数\";}知识点6循环的嵌套一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。
    3种循环(while循环、do…while循环和for循环)可以互相嵌套。
    【案例38】设计一个Windows窗体应用程序,利用for语句设计循环结构程序,输出九九乘法表。运行结果如图319所示。
    图319程序运行界面本案例需添加1个标签控件(label1)、1个命令按钮控件(button1),初始界面如图320所示。
    图320程序初始界面控件属性的设置如表34所示。
    表34对象属性的设置对象属性属性值
    Form1Text乘法表label1Text—label1AutoSizeFalselabel1BorderStyleFixed3Dbutton1Text输出分析:九九乘法表一共要输出9行9列,每一行中输出的列数与行号是有关系的,第1行输出一个,第2行输出两个,因此需要通过两重的for循环嵌套实现,内层循环用于处理每一行,即输出一行中的所有列,外层循环控制行数。
    参考代码如下:privatevoidbutton1_Click(objectsender,EventArgse){inti,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++){label1.Text+=i.ToString()+\"*\"+j.ToString()+\"=\"+(i*j).ToString()+\"\";}label1.Text+=\"\n\";}}【案例39】输出完数。运行结果如图321所示。
    本案例需添加2个标签控件(label1和label2)、2个文本框(textBox1和textBox2)、2个命令按钮控件(button1和button2),初始界面如图322所示。
    图321程序运行界面图322程序初始界面控件属性的设置如表35所示。
    表35对象属性的设置对象属性属性值
    Form1Text完数label1Text指定范围:1至label2Text完数:button1Text计算button2Text退

    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    确定

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购