-
for 循环使我们可以通过索引访问数组元素;而 foreach 循环则可以不依赖索引而读取每一个数组元素。下面的示例代码声明了一个整型数组,然后通过两种方法打印数组元素:
运行结果是相同的:
使用 foreach 的语法:
需要解释一下 ④ ,如上面的示例代码,迭代变量 x 只能用于读取数组 num 中的值,但是不能给数组元素赋值,如果尝试给 x 赋值,则会有下面的错误提示:
了解了 foreach 循环的语法,你可能会有疑问:好像 foreach 循环能做的 for 都能做, foreach 存在的意义是什么呢?其实,C#中还存在一些类似于数组的数据组织方式,它们中有一些是没有元素索引的,对于这些元素,只能通过 foreach 遍历。
查看全部 -
如果人名中包含“诺贝尔”,就打印“有诺贝尔”,如果没有,就打印“木有木有”:
通过源代码可以看到,数组的第二个元素就是要查找的“诺贝尔”,运行结果是这样的:
这段代码有一个逻辑错误,事实上,数组中只要有一个“诺贝尔”就可以认定“有诺贝尔”,但必须所有的名字都不是“诺贝尔”,才能认定“木有木有”。
或者这么说:一组数据中只要有一个符合条件,就可以认为“有符合条件的数据”;但只有一组数据中每一个都不符合条件,才能认为“没有符合条件的数据”——一个相等即为"有",全都不等才是"无"。
那么,到底应当怎样判断有无呢?请看下面的代码:
变量 hasNbr 起到了关键作用:记录筛选结果。它的初始值为 false ,表示没有,如果循环中找到了相等的数据,再修改 hasNbr 的值为 true ,表示有。循环结束后,只要看看变量 hasNbr 是 true 还是 false ,就知道循环中是否修改过。运行结果如下(有诺贝尔):
删去数组中的“诺贝尔”,再次运行程序:
查看全部 -
循环变量从 1 循环到了 10 ,但输出的只有 2 4 6 8 10 ,对,这是在打印 1-10 之间的偶数。像这样,循环访问一组数据,从中找出符合条件的数据,这样的算法叫做查找。
写查找的算法,需要做 2 件事,一是写循环访问每一个数据,二是对每一个数据进行验证。这样,就需要写 2 个“条件”:循环条件和筛选条件。
如上例,循环条件是
x<=10
,筛选条件是x%2==0
。初学者常见的错误是把 2 个条件都写在循环条件里,比如把循环条件写成 x<=10 && x%2== 0 ,请注意甄别:循环条件必须能够遍历每一个数据,如果你写的循环条件会漏掉某些数据,或者循环没有能够正常运行,请检查是不是把筛选条件也写在循环条件里了。查看全部 -
循环中可以应用 continue 关键字中止一次循环,直接进入下一次。请看下面的例子:
当程序执行到到 continue; 的时候,会立即停止本次循环体,直接进入下一次循环。所以,第三行输出比其他行少一些:
所以,可以使用 continue 关键字,在循环中剔除一些特殊的数据。
查看全部 -
if...else 之外,C#中还有一种 switch 条件结构,可以用来对变量进行多个分支的等值判断。语法如下:
(变量)与每一个 case 后面的常量进行等值比较,如果相等,就执行对应的分支。执行分支以后, break 关键字会使 switch 结构中止,不会再判断后面的常量。如果变量与所有的常量都不相同,则执行 default 后面的分支。
下面的代码,根据运算符完成了四则运算中的一项:
上面的代码,因为变量oper的值与 case '*' 匹配,所以会输出乘积“18”。
switch 中的(变量)只能是3种类型:整型(如 int )、字符型( char )、字符串类型( string )。
查看全部 -
C#提供了一种条件运算符,能够代替简单的 if...else 结构。这种条件运算符的语法如下:
条件表达式 ? 分支1 : 分支2
?: 就是条件运算符,可以看到它有3个操作数,所以又被称为三元运算符。它的运算逻辑是:当条件表达式为 true 时,执行分支1;当条件表达式为 false 时,执行分支2。
下面的例子中,根据年龄的大小,输出“成年人”或“未成年人”:
因为
age=17
,所以条件表达式age>=18
的值为 false ,返回“未成年人”。查看全部 -
比较数字大小,或者比较数字相等的运算符是比较运算符。C#中的比较运算符有:
注意:表示两个值相等的“等于”是由2个“=”组成的。
比较运算的结果,都是布尔类型( bool ),bool类型我们是第一次提到,它表示逻辑上的真(成立)与假(不成立)。真与假用关键字 true 和 false 表示。
上面程序中, x>=y 不成立会返回 false , x<=y 成立,会返回 true 。运行结果:
查看全部 -
强制类型转换:无法自动转换为我们需要的类型,可以用强制类型转换,比如上例可以这样完成:
int i=(int)3.0;
数字前面的(int)表示转换的目标类型为int,3.0会被强制转换为3。
需要注意, double 型强制转换为int型将失去小数部分,比如(int)2.8,我们得到的将是2。查看全部 -
字符类型 char ,存储用 '' (单引号)括起来的一个字符,例如:
char sex='男';//存储性别
字符串类型 string ,存储用“”(双引号)括起来的一串字符,例如:
string address="北京市宣武区牛街北口";//存储地址
整数类型 int ,存储整数,例如:
int age=23;//存储年龄
双精度浮点型 double ,存储小数,例如:
double salary=7991.63;//存储工资
查看全部 -
string a="振刚";//第一个变量string b="文峰";//第二个变量string temp;//中间变量//第一步:将变量a赋值给中间变量temp=a;//如同牛奶倒入空杯//第二步:将变量b赋值给变量aa=b;//如同咖啡倒入牛奶杯//第三步:将中间变量赋值给变量bb=temp;//如同空杯中的牛奶倒入咖啡杯//此时交换完成,变量a存储了“文峰”,b存储了“振刚”
查看全部 -
static viod Main(string [] args) //Main方法,程序的入口,也就是说程序运行的起点。
1行代码也叫一条命令,命令通常以“;”结尾。“;”代表命令的结束。“;”代表打印,打印“”内的内容。
Ctrl+F5,不调试,直接运行。
namespace:命名空间,组织和管理类。
class:类,类是C#程序最小的单元,程序有多个类组成。
程序的开头using语句是导入微软自带的命名空间,以便使用其中的类。
查看全部 -
查找最大值的索引
查看全部 -
查找数组最大值
查看全部 -
姓名为字符串数组;分数为整数数组
查看全部 -
当执行到continue时,不继续往后执行,往回走进行下一循环。
查看全部
举报