1)、写完一段程序后,想看一下这段程序的执行过程。
2)、当你写完这段程序后,发现,程序并没有按照你想象的样子去执行。
调试方法:
1)、F11逐语句调试(单步调试)
2)、F10逐过程调试(方法时候开始用)
3)、断点调试
程序运行到断点处,就不在往下执行
二、for循环
语法:
for(表达式1;表达式2;表达式3)
{
循环体;
}
表达式1一般为声明循环变量,记录循环的次数(int i=0;)
表达式2一般为循环条件(i<10)
表达式3一般为改变循环条件的代码,使循环条件终有一天不再成立(i++)。
执行过程:程序首先执行表达式1,声明了一个循环变量用来记录循环的次数,
然后执行表达式2,判断循环条件是否成立,如果表达式2返回的结果为true,
则执行循环体。当执行完循环体后,执行表达式3,然后执行表达式2继续判断循环条件是否成立,
如果成立则继续执行循环体,如果不成立,则跳出for循环。
for小练习
//求1-100之间的所有整数和,偶数和,奇数和
int sum = 0;
for (int i = 1; i <= 100; i++)
{
if (i % 2 != 0)
{
sum += i;
}
}
Console.WriteLine(sum);
Console.ReadKey();
/找出100-999间的水仙花数
//水仙花数指的是 这个百位数字
//百位的立方+十位的立方+个位的立方==当前这个百位数字
//百位:153/100 十位:153%100/10 个位:153%10
int bai = 0;
int shi = 0;
int ge = 0;
for (int i = 100; i < 1000; i++)
{
bai = i / 100;
shi = i % 100 / 10;
ge = i % 10;
if ((bai * bai * bai) + (shi * shi * shi) + (ge * ge * ge) == i)
{
Console.WriteLine(i);
}
}
Console.ReadKey();
//乘法口诀表(特别注意console.writeline起到的是j循环换行的作用,j<=i是因为j循环几次,式子就打印几次)
for (int i = 1; i <=9; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write("{0}*{1}={2}\t", i, j, i * j);
}
Console.WriteLine();//换行用的
}
Console.ReadKey();
//让用户输入一个数,给出加法式子
Console.WriteLine("请输入一个数");
int number = Convert.ToInt32(Console.ReadLine());
for (int i = 0; i <= number; i++)
{
Console.WriteLine("{0}+{1}={2}", i,number-i, number);
}
Console.ReadKey();
三、int.TryParse
int.parse、double.parse.............(出错抛异常)
尝试着将一个字符串转换成int类型。
conver调用的就是parse,所以效果是一样的
//使用convert进行转换,成就成了,不成抛异常
//int numberOne = Convert.ToInt32("123abc");
//parse也是一样,区别在于convert调用的是Parse,parse效率更高
//int numberTwo = int.Parse("123abc");
//Tryparse失败,不抛异常,性能更高,不成功将变量赋值为0
int number = 1;
//方法 参数 返回值
bool b = int.TryParse("123abc", out number);
Console.WriteLine(b);
Console.WriteLine(number);
//称为方法或者函数,这个方法就是将字符串转换为int类型
Console.ReadKey();
/*
循坏录入5个人的年龄并计算平均年龄,如果了录入的数据出现负数或大于
100的数,立即停止输入并报错。(这题还有反序的做法,很简单)
*/
int sum = 0;
bool c = true;
for (int i = 1; i <= 5; i++)
{
try
{
Console.WriteLine("请输入第{0}个人的年龄", i);
int age = Convert.ToInt32(Console.ReadLine());
if (age >= 0 && age <= 100)
{
sum += age;
}
else
{
Console.WriteLine("输入的年龄范围不对,退出程序!");
c = false;
break;
}
}
catch
{
Console.WriteLine("输入的内容不能转换成年龄,退出程序!");
c = false;
break;
}
}
if (c)
{
Console.WriteLine("5个人的平均年龄是:{0}", sum / 5);
}
Console.ReadKey();
/*
在while中用break实现要求用户一直输入用户名和密码,只要不是admin/888888
就一直提示要求重新输入,如果正确则提示登录成功
*/
string userName = "";
string userPwd = "";
while (true)
{
Console.WriteLine("请输入用户名");
userName = Console.ReadLine();
Console.WriteLine("请输入密码");
userPwd = Console.ReadLine();
if (userName == "admin" && userPwd == "888888")
{
Console.WriteLine("登录成功");
break;
}
}
Console.ReadKey();
/*
1-100之间的整数相加,得到累加值大于20的当前述(比如:1+2+3+4+5+6=21)结果6 (这题开始没读懂提议,所以每累加一次都将sum归零一次,这样就求得1-100所有20的累加数,如果按照题意,只需要打印6则将sum=0替换为break;)
*/
int sum = 0;
for (int i = 1; i <= 100; i++)
{
sum += i;
if (sum >= 20)
{
console.writeline(i);
sum = 0;
}
}
console.readkey();
四、continue关键字和质数
continue:立即结束本次循环,判断循环条件如果成立,则进入下一次循环,否则退出循环
//计算1-100之间的数,除了能被7整除的数的和
int sum = 0;
int i = 0;
while (i <= 100)
{
if (i % 7 == 0)
{
i++;
continue;
}
else
{
sum += i;
i++;
}
}
Console.WriteLine(sum);
Console.ReadKey();
//找出100以内的所有素数(这题是初级算法题,bool放第一个for循环里面,因为每次都要将bool值重置回来,不然就一直都是false)
//素数就是质数:只能被1和这个数字本身整除的数字,1不算!
for (int i = 2; i <= 100; i++)
{
bool b = true;
for (int j = 2; j < i; j++)
{
//除尽说明不是质数,没必要在继续下去
if (i % j == 0)
{
b = false;
break;
}
}
if (b)
{
Console.WriteLine("质数有{0}", i);
}
}
Console.ReadKey();
四、三元表达式
语法:
表达式1?表达式2:表达式3;
表达式1一般为一个关系表达式。
如果表达式1的值为true,那么表达式2的值就是整个三元表达式的值。
如果表达式1的值为false,那么表达式3的值就是整个三元表达式的值。
注意:表达式2的结果类型必须跟表达式3的结果类型一致,并且也要跟整个三元表达式的结果类型一致。
//让用户输入两个数字比两个数字的大小
try
{
Console.WriteLine("输入第一个数字");
int numberOne = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("输入第二个数字");
int numberTwo = Convert.ToInt32(Console.ReadLine());
int max = numberOne > numberTwo ? numberOne : numberTwo;
Console.WriteLine(max);
}
catch
{
Console.WriteLine("输入的数字不能正确被转换,退出程序!");
}
Console.ReadKey();
//让用户输入姓名,只要不是老赵,就都返回杂种
Console.WriteLine("请输入姓名");
string name = Console.ReadLine();
string result = name == "老赵" ? "淫才啊" : "杂种啊";
Console.WriteLine(result);
Console.ReadKey();
五、随机数
//产生随机数
//1。创建能够产生随机数的对象
Random r = new Random();
//2.让产生随机数的这个对象调用方法来产生随机数
int rNumber = r.Next(1, 10);
Console.WriteLine(rNumber);
Console.ReadKey();
//输入名字随机显示这个人上辈子是什么人
//1.创建能够产生随机数的对象
//2.产生随机数
Console.WriteLine("输入你的姓名");
string name = Console.ReadLine();
Random r = new Random();
int n = r.Next(1, 7);
switch (n)
{
case 1:Console.WriteLine("茅十八");
break;
case 2:Console.WriteLine("小桂子");
break;
case 3:Console.WriteLine("鳌拜啊");
break;
case 4:Console.WriteLine("神龙教主");
break;
case 5:Console.WriteLine("吴应熊");
break;
case 6:Console.WriteLine("陈近南");
break;
}
Console.ReadKey();