C# 练习题 循环结构
U3D_ 晨测试题_day04
1. 写出下列程序运行结果,若有错,请指出并改正.
class Program
{
static void Main( string[] args )
{
int x = 5;
int y = 5;
int z = 5;
x++;
Console.Write( x );
Console.Write( y++ );
Console.Write( ++z );
bool b = 20-(15-8)*2 > 10 && (2%2*2+2) > 2 ;
Console.Write( b );
}
}
X=6 , y=5 ,z=6
解释:本题考查:算术运算符,++(自增运算符)的基本使用。
2.下列语句中,能正确表示逻辑关系“a>=10”或“a<=0”的C#表达式的是(D)。
- a>=10 or a<=0
- a>=10 | a<=0
- a>=10 && a<=0
- a>=10 || a<=0
解释:本题考查C#中逻辑运算符,&&,||,!三种。
3.下列几项运算符中运算结果正确的项是( C D E )。
- Console.WriteLine( 0.8*3 ); //结果为2 改:2.4
- Console.WriteLine( 2/0.5 );//结果为0.4 改:4
- Console.WriteLine( 5/10 );//结果为0
- Console.WriteLine( 9+2.2 );//结果为11.2
- Console.WriteLine( 9 +“2.2”);//结果为92.2
上午
顺序结构
分支结构
循环结构
分支结构---if语句
分支结构---switch语句
2.switch语句
switch ( 值 )
{
case 值1 :
代码块1;
break;
case 值2:
代码块2;
break;
....
}
使用注意事项说明 :
1) switch 中的case可以有多条,每一条最后加
break; 当匹配了一条case之后,其它的case不 执行.遇到 break 跳出switch结构,结束大括号
大括号下面的语句;
2)switch后面小括号跟的类型:
所有的整数类型都可(所有整数,所有小数),
还可以是:string 字符串,枚举
如:
float double
byte short int lo ng
sbyte ushort uint ulong
float double
3) default 语句 只能有一条,表示所有的
case 都不满足时,才执行 default
default 一般是放在最后一个case 下面
也可以放在其它位置,不影响它的意义。
最后才执行。
4) switch..case使用场景:主要为了弥补:
if...else if ...else if ..else
这种分支结构带来的代码复杂,冗余度高
5) switch..case 中,正常每个case后面都要加
break语句。但是有一个特殊使用可以省略
case。
多个case连起来写,且每个case里面没有任何
内容,这时case可省略.会从上往下执行,直到有
break的case
如:
case 0: // 【0 - 10)
case 1: // 【10,20)
case 2: // 【20,30)
case 3:
case 4:
case 5:
level = "不及格";
break;
练习:
测试 switch 处理 字符串数据
描述四季。
代码详见:DAY04_02_Switch 工程--LianXi1.cs
下午
练习:
switch...case 考试等级的处理(分数为小数)
分数小于0或者分数大于100,输入错误。
代码详见:DAY04_02_Switch 工程--LianXi4.cs
分析:
0 - 60 不及格 score >=0 && score < 60
60 - 70 及格
70 - 80 一般
80 - 90 良好
90 - 100 优秀
1.输入小数分数,如何利用构建switch
2.为了避免不知道写多少case的情况,
如何处理小数分数?
解决方案:先将小数转成整数分数,然后再将
分数除以10,这样保证,case最多有10条
如:
60/10 61/10 62/10 63/10 64/10 69 70
6 6 6 6 6
3.从0分到59分,输出的都是不及格。有没有
一种简单的写法,保证不需要在每个caes中
赋值不及格
---------------------------------------------- 三、循环结构
需求:
控制台打印1000行“好困啊”
如何实现呢?----引出 循环结构。
1. C# 中的循环:
while 循环
do while 循环
for 循环
2. 任何一种循环的四个要素:
**********************************************
初始值: 通常一个变量的定义
循环条件:满足条件,反复执行循环体内容
循环体: 反复做的一件事情
迭代操作:改变初始值(i++,i--)
**********************************************
如:控制台打印1000行“好困啊”,使用while
核心代码如下:
int i = 1 ; //初始值
while ( i <= 1000 )//循环条件
{
Console.WriteLine("好困啊");//循环体
i = i + 1; //迭代操作
}
------------------------------------------------
详细介绍每种循环:
1. while循环
基本语法:
while ( 条件 )
{
循环体 ;
}
语法说明:
当条件成立时,反复执行循环体的内容(一组大括号
括起来);直到条件不成立时,不再执行循环体内容 ,
while循环结束大括号的下面语句
说明事项:
1) 小括号中可以是一个布尔值 true false
while ( true )
{ }
一般,都是一个条件表达式
2) while循环表示:当...时候,做...事情
故:
while循环有可能一次也不执行,那么究竟
能不能执行,执行几次,完全取决于条件。
3) while 循环由语法可分析出:适合场景
不明确循环次数,但已知循环执行的条件
这种情况下,使用while循环完成。
比如:
我有一个退休计划:
每年向银行存钱10万,计划存够300万时,
就辞职。银行每年的年利率为0.1%,
问多少年之后,我可以退休?
while ( 存款总额 < 300 万)
{
工作.....
}
练习:控制台打印1000行“好困啊”
使用 while循环完成。
代码详见:DAY04_03_While工程--WhileDemo1.cs
------------------------------------------------
2. do while 循环
基本语法:
do
{
//循环体
} while ( 条件 ) ;
语法说明(和while最大的区别???):
do while 大部分和while类型,唯一的区别:
do while 一上来先执行一次循环体的内容,
执行完再去判断 while 后面的条件,如果条件
确实是成立的,会继续执行循环体内容;
如果条件不成立,不再执行循环体的内容,执行的是
do while 循环下面的语句。
使用时注意事项:
1) do ..while 中 ,while 后面的条件,
指的是条件成立时,才执行循环体的内容
2) while 后面跟一个分号,否则会出现语法错误;
3) 直到..时候|才
------------------------------------------------
练习1:
以下程序是否有误,没有请写出运行结果。
有误请指出并改正。
int i = 0 ;
int count = 0 ;
do
{
i++ ;
if ( i % 4 == 0 )
count++ ;
}while ( i <= 20 );
Console.WriteLine( count );
Console.WriteLine( i );
代码详见:DAY04_03_While工程--DoWhileDemo1.cs
练习2:
找出100以内所有偶数个数,
以及所有偶数的和。
最后打印偶数个数,偶数的和。
要求:使用 while 和 do while 完成。
代码详见:DAY04_03_While工程--LianXi2.cs
分析:两程序需要做两件事情:
1.定义两个变量,一个存放偶数和,一个偶数总个数
2.确定循环的4个要素,搭建两种循环
int count = 0 ; //个数
int sum = 0 ; //总和
循环条件:i <= 100
循环体: 找出偶数(判断这个数字是否是偶数)
if ( i % 2 == 0 )
{
个数+1 count++;
和累加 sum=sum+i;
}
迭代操作:i++
初始值:int i = 0 ;
----------------------------------------------
for 循环
基本语法:
for ( 初始化; 循环条件 ; 迭代操作)
{
//循环体;
}
先执行“初始化”,为变量赋值,再执行“循环条件”
如果条件成立,则执行循环体,循环体执行结束后,
遇到了for循环的结束大括号,返回到 "迭代操作"
修改循环变量的值,修改完值,执行“循环条件”,
如果条件成立,则执行循环体内容,循环体执行结束
后,继续返回到“迭代操作”......
所以:
初始值只会执行一次,反复执行的是 :
循环条件
循环体
迭代操作
1) for循环的使用场景:
明确已知循环次数和循环条件
如:1000行“别叨叨了”
如:打印从1到100的每个数字
如:求100以内所有偶数个数,奇数
如:求一个数的阶乘
5! = 5 * 4 * 3 * 2 *1= 120
8! = 8*7*6*5*4*3*2*1
注:sum=1
for( int i = 0 ; i <= 1000 ; i++ )
{
Console.WriteLine( "别叨叨了" );
}
day04 周五 作业
-----------------------------------------------
1.自由编码题
学习了循环结构后,相信大家对循环结构的基本使用场景和 基本语法已经掌握了.
为了更好的理解循环结构及三种循环的具体使用,请:
找出生活中可以使用循环的一些场景或具体事情,然后将这 个场景或这件事情使用
代码描述出来,不限类型,不限内容,不限代码行数.
2.(必做题) 写出下列程序的运行结果
1. for ( int i = 1; i <= 4 ; i++ )
{
Console.writeLine();
Console.Write("Hi");
if ( x==3 )
continue ;
Console.Write( "Hello" );
}
3. 补充完成下面的程序代码.
下面的代码打印出 1-9 数字,请使用 continue 关键字,使得数字 3 和 8 不会被打印.
class Program
{
static void Main(string[] args)
{
for ( int x = 1; x < 10 ; x++ )
{
//构建代码,使得 3 和 8 不打印.
Console.Write(x);
}
}
}
3.下面程序的功能是打印出5,4,3,2,1 这几个数字,请将第1处和第2处代码补充完整.
static void Main( string[] args )
{
int y = 5 ;
while ( 第1处 ) //请填写
{
Console.WriteLine( y );
第2处; //请填写
}
}
4. 使用三种循环实现:查找100以内所有偶数能被8整数的 数字的和.
要求:使用三个方法实现.
---------------------------------------------------
Random r = new Random();
int n = r.Next( 0,100 ); 【10,20)
1. 加法测试器 ( 尽量做 )
程序依次出10道加法题,由用户输入题目的答案.用户每答完一道题,由系统提示结果:答错了或答对了.10道题答完之后,系统计算得分并输出.如果用户希望提前结束,则可以输入-1退出.
注:加法题中的两个随机数是0到99间的任意数字.
运行程序后,运行结果如下:
****************************************************
欢迎进入测试,默认有10道题,每题10分....
(1) 10 + 20 = ?
请输入正确答案(输入-1结束):
30
答对了
(2) 50 + 99 = ?
请输入正确答案(输入-1结束):
140
答错了
.....
本次答题情况: 共答了 2 道题,得分:10
注:如果输入-1,程序运行结果如下:
1) 10 + 20 = ?
请输入正确答案(输入-1结束):
30
答对了
(2) 50 + 99 = ?
请输入正确答案(输入-1结束):
-1
正在中止中....
本次答题情况: 共答了 2 道题,得分:10