C#基础(上)

第一章  开发入门

1-01 从一段代码开始

①计算机语言

概念:人类与计算机沟通的工具

常见的计算机语言:C.PHP.Ruby.Java.C#.Basic.js.C++. ...等等

②源代码

概念:用某种计算机语言编写的内容(目前C#源代码)

代码的执行:源代码→编译器compiler(负责编译的工具)→
编译compile→
机器代码101010100011111010

③编译

将源代码转换成机器代码

拓展:软件开发中的常见术语

①二进制

  在我们现实世界中,有十个数字(0-9),因此,到达十的时候,数字不够用了,就必须要进一,这叫做逢十进一。

而计算机只能识别高电平和低电平两种状态,它只能使用两个数字(0-1)来表示,因此,到达二的时候,数字不够用,就必须要进一,这叫做逢二进一。

下面的表格表示了十进制数字和二进制数字的对应关系:
十进制数字 二进制数字
0   0
1   1
2   10
3   11
4   100

②指令

  指令是能够被CPU理解并执行的二进制命令

CPU全称Central Processing Unit,译为中央处理器,它是计算机的一个重要组件。你可以把CPU想象成计算机的大脑,这个繁忙的大脑每时每刻都在处理各种命令。

这些命令可能是让它作一个加减运算,也可能是让它把某个文字存放起来,又或者是读取出来。

但CPU毕竟是个电子元件,它并不能理解所有的命令,你不能让它给你来个少林功夫+唱歌跳舞。

所以,我们把能够被CPU理解并执行的命令称为指令。而CPU作为一个电子元器件,能够理解的命令格式,一定是二进制的。因此,指令,也必定是二进制的。

③程序

  程序的概念其实非常简单,一条指令能够做一件事,多条指令能够做多件事。把多条指令按照一定的序列串起来、排好队,就是程序。这些指令一个一个交给CPU执行,就可以完成丰富的功能,就像下图这样:

计算机语言发展进程

  计算机语言大致经过了机器语言、汇编语言、高级语言三个阶段的发展历程。

①汇编语言

汇编语言使用助记符来替代机器指令

机器语言这种反人类的设计,阻碍了软件的发展。

因此,后来出现一种语言,它使用一些人类世界中的单词,来代表机器指令,这样的单词,叫做助记符,而这种语言,叫做汇编语言。

②高级语言

高级语言更加符合人类的思维习惯

汇编语言虽然使用了很多助记符,但它仍然要关注计算机硬件的执行原理,比如:寄存器、控制器、逻辑部件、缓冲区等等等等。因此,汇编语言仍然难以被人类学习和理解。

我们开发的软件,功能上已经够复杂的了,还要在编程时考虑计算机底层的硬件原理……
简直痛不欲生,生,生离死别,别,别了,世界!

高级语言解决了这一问题,使用高级语言,你不用再去考虑计算机硬件是怎么执行的,你可以将目光更加专注于功能的开发。

实际上,高级语言也会考虑一部分计算机的底层原理,只不过这一部分非常之少,相对于汇编来说,已经是极大的改善了。

高级语言有很多,比如:C#、java、C、js、Python等等等等。

③语句

语句是指代码中一句可独立运行的代码

简单来说,语句就是代码中的一句话,这句话表达了一个功能点,一个完整的代码,可以由一条,也可以由很多条语句组成。

比如,这节课中的代码就是一条输出语句,用于在控制台中输出内容:

Console.WriteLine("Hello,World");

当然你可以写多条语句,就像这样:

Console.WriteLine("Hello,World");
Console.WriteLine("你好");

④语法

语法是指代码中单词、符号的组合规则

和现实场景一样,语法,就是规定你应该怎么说话,应该如何组织字、词、符号。

在现实场景中,你可以问我:“吃了吗?”,这是符合语法的,但如果你说:“吗了吃!”,我不仅听不懂你在说什么,而且感觉你在骂我……

同样的,在计算机语言中,也有很多的语法规则,这里,我先介绍C#语言中的三个基本语法规则:

所有的单词,区分大小写

就是说,两个单词如何相同,但大小写不同,C#会认为它们是两个不同的单词。
比如:Console和console是两个不同的单词。

所有的符号都必须是英文符号

这个很好理解,你可以写:

Console.WriteLine("Hello,World");

但不可以写:

Console。WriteLine("Hello,World");

但这里有个例外,就是双引号和单引号中的字符不作限制,以后你就会知道了。

所有的语句都必须以分号结束

和很多语言一样,C#语言也是使用分号作为每一条语句的结尾。

⑤总结

下面,用于一个表格,对以上的术语进行总结:
术语名 解释
二进制   二进制是计算机使用的一种计数方式
指令  指令是能够被CPU理解并执行的二进制命令
程序   程序,也就是软件,它是指多个指令的有序排列
计算机语言发展历程  机器语言 -> 汇编语言 -> 高级语言
机器语言  机器语言是能够直接被计算机理解并执行的语言
汇编语言  汇编语言使用助记符来替代机器指令
高级语言  高级语言更加符合人类的思维习惯
语句  语句是指代码中一句可独立运行的代码
语法  语法是指代码中单词、符号的组合规则

1-02  code  compile run

1 .code  编码

· 使用C#语言

· 用Windows记事本编写(  *注意:代码间标点用英文状态)

·  实现在控制台输出“hello,world”的功能

2. compile  编译

·  使用C#编译器exe(位置:C:\Windows\Microsoft.NET\Framework\v4.0.30319)

·  将编译结果保存到exe文件中

3. run   运行

使用命令行(快捷键Ctrl+R)→   cmd

拓展:  认识.NET

1.再谈C#的编译过程

为什么不是机器代码?

CPU的差异性;操作系统平台的差异性

中间代码

  C#语言的编译器CSC,为了解决跨机器跨平台的问题,不会将源代码直接编译为机器代码,而是将其编译成中间代码,称为IL。

中间代码,既不是源代码,也不是机器代码,你可以把它想象成一种介于源代码与机器代码之间的代码。在阅读难易程度上,它的易读性比源代码高,比机器代码低。

编译成中间代码起什么作用呢?注意!巧妙的地方来啦!

世界上,没有任何一个操作系统,也没有任何一款CPU,能够识别这种中间代码。全世界,只有一款软件可以识别,这款软件就是.NET。

.NET可以识别并执行中间代码,它会根据当前的运行环境(CPU和操作系统),将中间代码转换为最合适的平台代码(可以理解为机器代码),交给CPU和操作系统执行。

也就是说,用C#开发的程序,编译好后,可以放到任何一台计算机、任何一种操作系统上执行,前提条件是,它要安装一个软件.NET。

win7、win8、win10操作系统安装后,会自动安装.NET。windows xp或之前版本的操作系统则不会。

如果你是windows xp或之前版本的操作系统,想要运行.NET程序,需要单独下载.NET安装。但是我不会告诉你在哪里下载又怎么安装。因为我的建议是,作为看一个开发人员,赶快,麻溜儿的给我去升级操作系统!

如果你使用的是mac,这篇文章会帮助到你:http://jingyan.baidu.com/article/14bd256e79797dbb6d2612c8.html

于是,我们可以得到C#语言从源代码到执行的完成过程:→

这样一来,使用C#语言开发程序,只需要编译一次,就可以将编译结果放到任何一台计算机上正确执行,真正做到了跨机器、跨平台。

当然别忘了,前提条件是,该计算机要安装.NET,因为这一切,都是.NET的功劳。

实际上,.NET平台不仅仅可以解决跨机器跨平台的问题,它还有很多强大的功能,下面介绍它的几个重要功能。

2. NET的组成部分

.NET运行时

.NET运行时,全称Common Language Runtime,缩写为CLR,中文译为:公共语言运行时。

前面提到的,.NET可以根据当前的运行环境,将中间代码转换为特定最终代码的功能,就是CLR提供的。
.NET跟语言无关!不管你是用java还是php,不管是用C还是VB,只要你能把源代码转换成中间代码,.NET的CLR就可以执行,它不用管你的源代码到底是什么语言。
正是因为这一特性,.NET可以支持各种各样的计算机语言,它把这些能够编译成中间代码的语言叫做公共语言,而CLR正是用于执行这些语言编译结果的,所以,它叫做公共语言运行时。

也正是因为这一特性,.NET获得了很多语言的支持,你使用以下这些语言编写代码,都可以顺利的交给.NET运行

公共类库

  可以把公共类库想象成一个超大型的知识库,知识库中存在大量的、已经完成的代码,这些已经写好的代码可以极大的方便你的开发。只要是.NET支持的语言,都可以从这个知识库中获取它各个层面的功能。不同的语言,只是表达方式有差异罢了。

实际上,在控制台中输出内容,并非一件简单的事情,你之所以可以用这段简单的代码就可以达到输出内容的目的,正是因为这句代码使用了公共类库中的功能。公共类库中已经给你写好了输出代码,你只需要使用C#的语法使用即可。

1-03  开发工具

IDE(intergrated development environment集成开发环境)

Java:Eclipse

Html:WebStorm

C#:Visual Studio

使用VS2013

新建工程

编写代码

编译和运行

找到编译文件

迁移工程

拓展 :Visual Studio安装教程

本文介绍如何在windows平台中安装Visual Studio,如果你是mac,请安装VS Code

Visual Studio 是一款优秀的IDE,但它不免费,并且价格不菲。

庆幸的是,微软在2014年发布了免费版的Visual Studio,将其称为Visual Studio 社区版(Visual Studio Community),该版本专门面向学生和个人开发人员,并且随着以后VS每一次的更新换代,都会发布对应的免费社区版。

虽然社区版(免费)缺少了企业版(收费)的一些功能,但不用担心,对于学习阶段的开发者,完完全全够用。

所以,没时间解释了,赶快上车!



1 下载

第1步

在浏览器中打开下面的地址: 
https://www.visualstudio.com/zh-hans/downloads/

通过该地址,会得到VS最新一代的社区版,比如,在我写这篇文章的时候,该链接会得到VS2015社区版。

估计看到这里,有些小伙伴就要纠结了:那这样一来,不是和视频教学中使用版本不一样了吗?

乖,不要在意这些细节,VS的每个版本其实大同小异,都差不多,不用担心。

第2步

打开该地址后,找到页面的这个区域,然后点击+号:

第3步

找到展开后的这个区域,然后选择单选框下拉列表,如下图所示,选择好后点击Download下载:

下载完成后,进入下一阶段 —— 安装。

2 安装

注意:VS的安装时间比较长,可能长达一个小时,中途不要中断!

第1步

你下载的文件是一个后缀名为ISO的镜像文件,需要使用虚拟光驱打开。

win8和win10操作系统都自带虚拟光驱功能,但不排除某些不可描述的原因,导致有些win8系统没有自带虚拟光驱功能。

那如何查看自己的操作系统是否自带虚拟光驱功能呢?

最简单的方式就是看图标!如果你发现刚刚下载的文件是一个类似光盘的图标,双击打开即可。

如果不是,参考这里: 
http://jingyan.baidu.com/article/fec4bce220196ef2618d8b1a.html

这里其实还有一种情况,就是图标是光盘图标,但是双击后没有反应。如果是这种情况,其实已经加载虚拟光驱成功了。你可以进入我的电脑,会发现多了一个光驱,大概是这个样子: 
 
进入这个光驱即可。

第2步

打开虚拟光驱后,双击这个文件,进入安装:

第3步

一开始,安装程序会进行一些初始化的操作,这里需要耐心等待一段时间。

第4步

一段时间后,会看到如下界面:

这里的安装位置你可以更改,强烈建议你不要改,如果一定要改,必须保证如下几点

  • 目录中不得包含中文和中文符号
  • 最终的安装目录必须是一个空白的文件夹
  • 以上两点念三遍

安装类型保持默认即可。

然后点击安装

第5步

  • 别让你的电脑在安装过程中断电
  • 不要在安装的过程中用电脑玩游戏
  • 不要在安装的过程中使用很占资源的应用
  • 更加不要点击取消,你会后悔的
  • 实际上,我建议你去睡一会儿

第6步

当一切都安装好后,点击启动。

第7步

启动后,会提示你使用微软的live账号登录,这一步必须完成,因为尽管社区版免费,但仅针对使用live账号的人免费。如果你没有live账号,可以点击注册。

注册账号并不复杂,赶紧的。

第8步

登录后,会提示你完善账号信息,其中Full name(你的全名)是必填,其他不管,填好后,点击Continue:

点击后可能会让你选择风格和语言 
语言选择C# 
风格随便,我推荐深色 
选择完成后,点击启动Visual Studio

第9步

在VS为你的第一次使用完成准备后,就会进入该界面:

说明什么,朋友?

大声的告诉我,你成功了!

等等,为了你以后能够顺利的打开VS,你可以在开始菜单中找到Visual Studio 2015,然后添加它的桌面快捷方式。

好了,以上,就是安装VS社区版的过程,祝安装顺利。

1-04  认识主函数

·  定义:程序启动时运行的函数。又称main函数,入口函数,启动函数

·  运行时,程序从上到下依次运行函数体中的每一句代码

·  主函数运行结束后,程序结束

第二章   变量和数据类型

2-01  数据和数据类型

数据:有用的信息

数据类型:对数据的分类

C#语言中的数据类型(常见)

char  字符类型

单个文字(汉子、字母、数字、标点符号)

书写方式:用成对的英文单引号表示(eg:  ‘汉‘    ‘A‘   ‘2‘   ‘?‘  )

string  字符串类型

不限数量的文字(汉字、字母、数字、标点符号)

书写方式;用成对的英文双引表示(eg:  "汉"     " "   "hello,world"  )

int  整数类型

简称整型,用于表示一个整数

书写方式:直接书写(eg:0   100  -1   -100)

double  小数类型

用于表示包含小数点的数字

书写方式:直接书写(eg:0.0   1.1   -1.1  -1.123)

2-02   认识变量

变量:一块存储数据的内容空间,并且该内存区域的数据内容可以变化

变量的声明

指定一块内存空间,用于存放数据

语法: 数据类型  变量名 (eg:①int number;   ②string str;)

变量的赋值:将数据存放到变量的内存空间

eg:int number; string=s;
number=6; s="yes"

*注意:①生命和赋值的变量名一致
②赋值的类型与声明要一致
③“=”叫做赋值符号,不是等号

总结

变量用于在内存中存储数据

变量存储的数据可变

变量必须先声明后赋值

2-03  变量命名

概念:给变量取个名称

变量命名的规范

硬性要求(必须遵循的规则)

1.变量名只能由数字、字母、下划线组成
2.变量名不得以数字开头
3.变量名不能与关键字相同(eg:int,double,char,...在VS中,使用蓝色标记关键字)
4.同一个函数中变量名不得相同

软性要求

变量名首字母小写
除第一个单词外,其他单词首字母大写
变量名要能够望文知义
*使用驼峰命名法,做到望文知义

2-04  变量的技巧

合并声明
对多个同类型的重复声明,可以在一条声明语句中完成
声明时初始化
在声明一个变量的同时,对变量进行初始化
变量三要素:数据类型,变量名,变量值

2-05  数据运算(1)

数据运算
数字运算
字符串运算
数字运算规则:支持运算:加(+)、减(-)、乘(*)、除(/)、求余(%)
返回类型:与运算类型相同
int类型与int→int;double类型与double→double;double与int→double

2-06  数据运算(2)

字符串运算
数据类型 变量名;
等效→ 数据类型 变量名=变量值
变量名=变量值;
运算规则:拼接(+)→结果 字符串1字符串2
   ←
字符串 → 任意类型
(string) (int、double)
返回类型:字符串

2-07  数据运算案例分析

变量值的复制
代码的实现:→ int x=1;
       int x=y;
变量的自增或自减
代码实现:→ int x=1;
      x=x+5;
      x=x-4;
多个数据的运算:两个以上的数据参与运算
int x=1,y=2;
x=x+y-1;
*注意每一步的返回类型
变量值交换
eg: int x=1,y=2;
  int z=x;
  x=y;
  y=z;

2-08  输入语句

概念:在控制台中获取用户输入的内容
作用:程序暂停执行,等待用户输入
输入语句的代码书写:Console.ReadLine();
*返回类型:string(将用户输入的内容形成字符串数据)
总结
让程序暂停执行,等待用户输入
用户按下回车键后,获取用户输入的内容,类型为string
用户按下回车键后,程序继续执行,直到主函数结束

2-09  类型转换

1.将任意类型转换为string
转换代码:带转换的数据.ToString();
eg: int a=10;
string b=a.ToString;
返回类型:string
2.int类型与double类型的互转
取值范围小的数字类型→取值范围大的数字类型(隐式转换)
double的取值范围>int的取值范围
取值范围大的数字类型→取值范围小的数字类型(显式转换)
*int类型只能表示整数,显示转换(强制转换)有可能造成数据丢失

3.string转换为数字

① string→int
int.Parse(待转换的字符串)
返回类型:int
② string→double
double.Parse(待转换的字符串)
返回类型:double
总结

拓展:char类型的数值转换

char转为int
在C#语言中,使用Unicode编码来存储字符。
比如汉字 ‘汉’,对应的Unicode编码是27721,在计算机内存中,将使用汗27721对应的二进制来存储。
因此,如果要把 ‘汉’ 转换为int类型的数字,转换的结果就是27721。

为什么char类型的数据赋值给int类型的变量可以使用隐式转换呢?
是因为char类型的数据在内存中存储时使用的是Unicode编码,Unicode编码占16位(两个字节),而int类型占32位(4个字节)。因此,char类型的数据占位少,取值范围小,而int类型的数据占位多,取值范围大。所以,这样的赋值是安全的,不会造成数据丢失,可以隐式转换。

int转为char

int类型的数据转换为char类型时必须使用显示转换。
char类型的取值范围小于int,因此,将取值范围大的int类型转换为取值范围小的char类型是不安全的,所以要用显示转换。

字符数据的运算

char类型的数据,在进行数学运算(+、-、*、/、%)时,会将它当做int进行运算,运算的返回类型是int。

也就是说,字符也可以参与数学运算,在运算的时候,会把这个字符的编码进行运算,运算的返回结果是一个整数int。

比如,’a’+’1’,这个代码计算的是’a’的编码加上’1’的编码,返回的是编码相加的整数。’a’的编码是97,’1’的编码是49,计算结果是一个int类型的整数146。

2-10  圆的面积计算器

实现代码

class Program
{
static void Main(string[] args)
{
Console.Write("请输入圆的半径(单位米):");
String input = Console.ReadLine();
double r = double.Parse(input);
double pi=3.14;
double area = pi * r * r;
double premeter = pi * r * 2;
string result = "圆的面积为:" + area + "平方米";
Console.WriteLine(result);
result = "圆的周长为:" + premeter + "米";
Console.WriteLine(result);
Console.Write("按回车键结束程序");
Console.ReadLine();
}
}

2-11  转义符
在代码中书写一个斜杠(\),用于改变斜杠后出现字符的意义

常见的转义符

举例

2-12  数字类型

数字类型
整数类型
实数类型
位:是计算机的最小存储单元,一位,可以存放一个二进制数字
其实,位的概念非常简单,我们知道,在计算机中,无论是数字还是字符,无论是图片还是音乐,存储时,都是使用二进制格式的数字来存储,这个二进制数字的其中一位就是“位”的概念。
比如,一个字符’a’,在unicode编码下,它的二进制格式是:
0000 0000 0110 0001
那么我们可以认为,一个’a’字符,在计算机中占16位。
以上,就是位的概念。
浮点数
float 单精度←最多7个有效数字(小数点后)
double 双精度←最多15个有效数字
数值后缀
1.23→double
1.23f→float
1.23m→decimal
...
数字类型的使用原则
对于计算精度要求精度很高的实数,使用decimal(财务计算,科学实验分析等)
对于内存使用要求苛刻的软件,尽量在保证取值范围的前提下使用占位较少的类型
如果没有上述要求,整数用int,实数用double

位:是计算机的最小存储单元,一位,可以存放一个二进制数字
其实,位的概念非常简单,我们知道,在计算机中,无论是数字还是字符,无论是图片还是音乐,存储时,都是使用二进制格式的数字来存储,这个二进制数字的其中一位就是“位”的概念。
比如,一个字符’a’,在unicode编码下,它的二进制格式是:
0000 0000 0110 0001
那么我们可以认为,一个’a’字符,在计算机中占16位。
以上,就是位的概念。

2-13  代码注释

概念:即使用一些描述语句,让你的代码便于阅读和理解,注释的内容,没有任何实质功能,不参与编译,只存在于源代码中。
书写代码注释
单行注释→//注释内容
多行注释→

/*
注释内容
注释内容
*/
文档注释
什么时候使用注释
代码不易理解
代码非常复杂
代码量大
在团队协作开发中,会有其他人阅读你的代码

2-14  软件中的错误与调试

编译错误(导致源代码无法通过编译)
发现错误:查看开发工具VS的错误列表
解决错误:根据错误提示,做出相应修改
错误特点:容易发现,容易修改
运行错误(在运行过程中报错)
发现错误:在调试模式下运行,并运行到报错的语句
解决错误:根据错误提示,做出相应修改
错误特点:难以发现,难以修改
逻辑错误(运行结果和预期不符)
发现错误:仔细核对运行结果,看与预期是否一致
解决错误:使用VS的断点调试,检查每一步的执行结果
(在代码前面打上打上一个红色的点)
错误特点:极难发现,极难修改

第三章  运算符和表达式

3-01   认识运算符
概念:又叫操作符,是一个用于运算的符号,它作用于一个或多个操作数(操作数:参与运算的数据)
运算符的分类
按操作的数量
一元(目)预算符 ← 作用于一个操作数
二元(目)预算符 ←作用于两个操作数
三元(目)预算符 ←作用于三个操作数
按运算符的功能
算术运算符 ← 用于数学运算
逻辑运算符 ← 用于判断真假
位运算符 ← 用于二进制运算
其他

3-02   常见的运算符:小括号
书写方式 ( )
功能作用
类型转换
改变运算顺序
函数调用

3-03   常见运算符:算术运算符
加加运算符
书写方式
变量名++
1.计算返回结果,与变量相同
2.将变量的值自增1
++变量名
1.计算返回结果,为变量值加1
2.将变量的值自增1
减减运算符
书写方式
变量名--
1.计算返回结果,与变量相同
2.将变量的值自减1
--变量名
1.计算返回结果,为变量值减1
2.将变量的值自减1
常见的算术运算符:+ - * / % ++ --
运算顺序:++ -- → * / % → + -

3-04  常见运算符:赋值运算符
变量=运算代码(將运算代码赋值给变量)
赋值运算符:= += -= *= /= %=

3-05   常见运算符:逻辑运算符
==              !=                >     >=   <    <=   &&   ||   !
等于 不等于 大于 大于等于 小于 小于等于 并且 或者 非
&&:对两个bool类型进行运算,运算的结果:真真为真,其他为假:
||:对两个bool类型进行运算,运算的结果:假假为假,其他为真;
!:一元运算符,对一个bool类型的数据求反。数据为真,其结果为假;数据为假,其结果为真。
返回类型:bool (布尔)→ true 或者false

3-06   常见运算符:三目运算符
又叫做三元运算符,他需要三个操作数参与运算
书写方式:操作数1 ? 操作数2 : 操作数3
↓ △(? : 为英文符号)

bool类型 相同类型
返回结果:如果操作数1判定结果为真,则将操作数2作为返回结果;
如果操作数1判定结果为假,则将操作数3作为返回结果。
举例:

3-07 位运算符(只做了解)
用于对数字进行二进制运算
位运算符
&与 11取1,其他取0
|或 00取0,其他取1
^异或 相同取0,不同取1
<<左移 左移指定的位数
>>右移 右移指定的位数
~取补 1变0,0变1

3-08   表达式
一条有意义的语句,并且该语句至少包含一个操作数和一个操作符。
每一个表达式,都有一个返回类型。
每个表达式都可以与其他表达式进行运算,只要类型符合要求。
如图

常见表达式返回类型总结
①声明变量:void(无返回类型)
②变量赋值:返回类型和变量类型相同
③算术运算:返回类型为取值返回大的类型
④逻辑运算:bool(所有的逻辑运算(>、<、=、!=、<=、>=、&&、||、!),返回类型固定为bool)
⑤类型转换:返回类型为转换的目标
⑥字符串拼接:string
⑦函数调用:
输出语句:void
输入语句:string
ToString:string
xxx.Parse:xxx

3-09   运算符优先级
使用多个运算符的常见场景
赋值运算 (永远最后运行)
数学运算:按照数学中的运算顺序进行:先运行括号,有嵌套则从里到外运行,在运行乘除,求余;最后运行加减
类型转换(指显示转换)和函数调用:先运行函数调用,再进行类型转换
逻辑运算:將&&和||符号两端的表达式看做一个整体
三目运算:表达式1 ? 表达式2 : 表达式3
其他:使用小括号或分开书写来控制运算顺序

3-10   健康计算器
健康计算器实现代码:

/*
标准体重计算公式
男:(身高-80)*0.7
女:(身高-70)*0.6
健康:在标准体重正负10%范围内
偏胖:高于标准体重10%
偏瘦:低于标准体重10%
*/
Console.Write("请输入性别(男或女):");
string sex=Console.ReadLine();
Console.Write("请输入身高(厘米):");
double height = double.Parse(Console.ReadLine());
Console.Write("请输入体重(千克)");
double weight = double.Parse(Console.ReadLine());
double standardweight =sex== "男" ? (height - 80) * 0.7 : (height - 70) * 0.6;
double minhealthweight = standardweight * 0.9;
double maxhealthweight = standardweight * 1.1;
string result=weight<=minhealthweight &&weight >=maxhealthweight?"身体非常健康,请继续保持!":
(weight<minhealthweight?"身体偏瘦,请补充营养":"身体偏胖,请多运动");
Console.WriteLine(result);
Console.ReadLine();

C#基础(上)结束。

时间: 2024-10-28 20:56:20

C#基础(上)的相关文章

【G】开源的分布式部署解决方案(二) - 好项目是从烂项目基础上重构出来的

G.系列导航 [G]开源的分布式部署解决方案 - 预告篇 [G]开源的分布式部署解决方案(一) - 开篇 [G]开源的分布式部署解决方案(二) - 好项目是从烂项目基础上重构出来的 分析目前项目结构 眼前出现这么一坨坨的文件夹,相信很多人已经看不下去了.是的,首先就是要把它给做掉. 按照这个项目文件夹的命名意图,大概可以划分如下: 1.Business:业务代码 2.Data:数据访问 3.Helpers:辅助类(通用类库之类的) 4.Models:各种模型(包括视图模型) 5.theme:皮肤

【linux基础】17、TCP/IP网络基础(上)

一.计算机网络概述 1.什么是网络? 一群具有独立功能的计算机组成的系统通过通信设备及传输媒体互连起来,在通信软件支持下,实现资源共享.信息交换的整个系统 产生计算机网络的基本条件:通信技术与计算机技术的结合 2.计算机网络的产生与发展 1954年 主机-终端的通信网络  第一代计算机网络 以单个主机为中心.面向终端设备的网络结构.系统中除主计算机具有独立的数据处理功能外,系统中所连接的终端设备均无独立处理数据的功能 1969年 主机-主机的通信网络  ARPANET网  第二代计算机网络 以分

最佳的项目一定建立在最佳的软件工程基础上的

快速软件开发有几个基本原则:管理原则.技术原则.质量保证原则. 其中和我目前关系较深的是技术原则. 作者在第四章的前段便引用了这句话“最佳的项目一定建立在最佳的软件工程基础上的”. 而我认为我计算机相关的基础都比较薄弱,作者并没有给出软件工程基础相关的推荐书籍. 不知道是否有一些软件工程基础的推荐书籍. 最好是能够相互对照的.

【转】Android 工程在4.0基础上混淆

Android现在对安全方面要求比较高了,我今天要做的对apk进行混淆,用所有的第三方工具都不能反编译,作者的知识产权得到保障了,是不是碉堡了. 一,首先说明我这是在4.0基础上进行的. 先看看project.properties 这个文件. # This file is automatically generated by Android Tools. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! # # This file

.net在当前日期的基础上加一天

比如今天是:2015-11-10 18:57:01,在这个基础上加一天,那么就是2015-11-11 18:57:01,代码如下: DateTime now_dt = DateTime.Now; string now_days=now_dt.AddDays(1).ToString(); 假如你需要的是这种格式的话 2015-11-11 00:00:00,代码如下: DateTime now_dt = DateTime.Now; string now_days=now_dt.AddDays(1).

Swing是在AWT基础上的扩展

JFrame组件import java.awt.Color;import javax.swing.JFrame; import javax.swing.JPanel;/* * Swing是在AWT基础上的扩展  * javax.swing包及其扩展包,组件的命名多以J开关  *  * JFrame组件  */ public class Test08 {    public static voi... http://ask.360kad.com/question/166093.htmlhttp:/

【JavaEE】SSH+Spring Security基础上配置AOP+log4j

Spring Oauth2大多数情况下还是用不到的,主要使用的还是Spring+SpringMVC+Hibernate,有时候加上SpringSecurity,因此,本文及以后的文章的example中都不会包含oauth2的配置,需要的话把前文的applicationContext-security.xml和pom.xml加上就可以了,本文在“SSH+Spring Security搭建方法及example”一文的基础上做一些调整,主要内容是:配置Spring AOP并且用log4j来记录日志.

【跟随万一老师的足迹】查找目录下文件,在万一老师的基础上升级下,支持多文件查找

看了万一老师的"遍历某个文件的文件及子文件",经过层层优化,结合实际需要,在万一老师代码的基础上,增加了多文件查找的功能 //sysGetFileList(List,'c:\','*.doc,*.exe'); List通过查找添加多文件 //sysGetFileList(List,'c:\','*.doc'); List通过查找添加单文件 procedure sysGetFileList(List: TStrings; SourFile,FileName: string); var S

Spring基础-上-概念篇

*什么是IoC(Inversion of Control)? 即控制反转.其思想是控制资源获取的方向.传统的资源获取的方式为向容器发起请求,然后容器返回资源,而应用了IOC之后,容器主动地将资源退送给它所管理的组件,组件要做的仅仅是选择一种合适的方式来接收资源即可. 买菜的例子. *什么是DI(Dependency Injection)? 即依赖注入.通常来讲,一个复杂的应用需要多个类相互协作,譬如类A要实现功能A需要类B的协作,那么类A就是依赖于类B,传统的做法是在类A的内部直接创建B的对象,

如何在响应式基础上提升移动性能///响应式不是万能的!教你提升响应式设计的移动性能(一)

如何在响应式基础上提升移动性能 摘要:如何在响应式基础上提升移动性能,从细节做起,结合网站,做好响应式页面的设计优化工作.,随着互联网的高速发展,合肥网站建设小编今天为大家介绍,为解决移动性能的响应式页面设计并不是万能的,而应该不断的改进,从而更好的为用户服务.随着互联网的高速发展,例如近段时间炒得火热的谷歌申请的无人机技术,以及电商门户网站阿里巴巴的上市等等,这都促进了互联网日新月异的变化. 所以作为网站seo人员不应固步自封,而应该努力的跟上时代的步伐,不仅需要学习相关的seo知识,而且对于