今天我们来接着学习C#,内容大概为:控制台接收数据,还有几道练习题。
什么叫控制台接收数据?
我们回想一下第二天的学习内容中,我们要求得小明、小红、小刚三个人的总成绩和三门科目的平均成绩,那么他们的成绩是怎么得到的呢?是我们在代码里面就给它赋值,然后它才进行一系列运算。这就涉及到了交互性,我们开发的软件、编写的程序是给客户用的,我们给客户提供的是一个完整的产品,而不是一个代码集,也就是说用户不会在代码里去输入数据,他只会在界面上的相应位置输入数据,那么我们的程序就要读取到用户输入的数据,并把它转换成相应的类型。
所以我们会这样写:
Console.WriteLine("请输入小明的数学成绩:");
string mathMing = Console.ReadLine();
这样我们给用户提示,告诉用户在哪里输入什么内容。因此我们之前提到的ReadLine()方法就派上用场了,它可以获取到用户从键盘输入控制台的一个字符串,并按下回车键确认完成输入。
但是这样还不够!
既然是成绩,那肯定是数字,况且我们后面还要进行运算,你给我一个string类型的mathMing我怎么计算呢?
不用担心,我们有将字符串转换成整型数值的方法:
Convert.ToInt32();
Convert.ToInt32()方法将一个字符串转换成32位的整型数值,这样我们的问题就迎刃而解了。
接下来看看几个练习题作业:
一、在Main方法中定义变量,用这些变量存储游戏中一个敌人应该有的一些属性,定义尽可能多的变量;
static void Main(string[] args)
{
string enemyName = "影流之主";
int enemyAge = 35;
bool enemyIsDie = false;
int enemyHP = 2530;
int enemyMP = 1000;
byte enemyLevel = 12;
string skillQ = "";
string skillW = "";
string skillE = "";
string skillR = "";
bool isBack = true;
}
二、 接收用户输入的两个整数,存到两个变量中,交换变量存储的值;
int num3 = Convert.ToInt32(Console.ReadLine());
int num4 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(num3);
Console.WriteLine(num4);
int num5 = num3;
num3 = num4;
num4 = num5;
Console.WriteLine(num3);
Console.WriteLine(num4);
Console.ReadKey();
三、编写一个控制台应用程序,要求用户输入4个int值,并显示它们的乘积;
int num6 = Convert.ToInt32(Console.ReadLine());
int num7 = Convert.ToInt32(Console.ReadLine());
int num8 = Convert.ToInt32(Console.ReadLine());
int num9 = Convert.ToInt32(Console.ReadLine());
int num10 = num6 * num7 * num8 * num9;
Console.WriteLine(num10);
Console.ReadKey();
四、从键盘输入一个三位正整数,按数字的相反顺序输出;
Console.WriteLine("请输入一个三位正整数:");
int num11 = Convert.ToInt32(Console.ReadLine());
//方法一:把三个数字完全拆分开
int num12 = num11 / 100 + (num11 - num11 / 100 * 100) / 10 * 10 + (num11 - num11 / 100 * 100 - ((num11 - num11 / 100 * 100) / 10 *
10)) * 100;
//方法二:通过求余来获得各个位置上的数字
int num13 = num11 / 100+num11%(num11/100*100)/10*10+num11%(num11/100*100+num11%(num11/100*100)/10*10)*100;
//方法三:简单求余求商得到各个数字
int num14 = num11/100;//得到百位上的数字
int num15 = num11%10;//得到各位上的数字
int num16 = (num11/10)%10;//得到十位上的数字,先/10是将三位数去掉最后一位变成两位数,然后再去这个两位数的个位数,比如123/10=12 12%10=2 这是一个很巧妙的算法
Console.WriteLine(num12);
Console.WriteLine(num13);
Console.ReadKey();
五、 编写一个程序,输入梯形的上底、下底和高,计算出梯形的面积并显示出来;
Console.WriteLine("请输入梯形的上底{0} 下底{1} 和高{2} ",Console.ReadLine(),Console.ReadLine(),Console.ReadLine());
Console.WriteLine("请输入梯形的上底:");
int upLength = Convert.ToInt32( Console.ReadLine());
Console.WriteLine("请输入梯形的下底:");
int downLength = Convert.ToInt32( Console.ReadLine());
Console.WriteLine("请输入梯形的高:");
int height = Convert.ToInt32( Console.ReadLine());
Console.WriteLine("梯形的面积为"+(upLength+downLength)*height/2);
Console.ReadKey();
这里用到了Convert类进行类型转换,但是要注意具体使用那个方法,因为int类型涉及到除法时如果有小数,会因为精度问题而使结果不精确。
六、计算半径为n的圆的周长和面积。
float PI=3.1415926f;
Console.WriteLine("请输入圆的半径n:");
int radius = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("圆的周长为:{0},面积为:{1}",2*PI*radius,PI*radius*radius);
Console.ReadKey();
这里我们暂时没有用到数学类Math,所以PI的值是我们人为给它设定的。
这就是我们对前两天内容回顾的一个小练习。
总结:
今天最主要的内容就是用ReadLine()方法从控制台获取字符串,用Convert类中的方法ToInt32()将字符串转化成整型数值,前提是我们从控制台输入的字符串是数字,否则会报错,提示字符串格式不正确。
今天就先记录到这里,有不正确的地方欢迎大家讨论和指点,感激不尽!