C sharp #001# hello world
饮水思源:金老师的自学网站
1、编写一个简单的控制台程序。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.Title = "my title" + DateTime.Now;
Console.ForegroundColor = System.ConsoleColor.DarkGreen;
Console.BackgroundColor = System.ConsoleColor.White; Console.WriteLine("Hello worldd 2019-04-28"); String userinput = Console.ReadLine();
Console.WriteLine("{0}这是两个占位符号{1}", userinput, userinput.Length); Console.Beep();
Console.ReadKey(); // ReadKey是Console类的另一个方法,用于接收按键
Console.ReadKey(true); // 添加true参数不回显所接收按键 // 生成的.exe文件可运行在任何具有相应版本.NET的计算机上
}
}
}
2、日期计算的结构化编程实现
结构化编程一般设计步骤:
- 先设计数据结构。
- 基于数据结构确定算法。简单的情形是,将人的计算方法转化为计算机算法,每个算法步骤用一个函数实现。
- 进一步细化与调整方案
- 将整体装配成一个函数,得到最终设计方案
PPT截图:

开发时,依据依赖关系由下至上。通常情况,避免跨层调用。
namespace CalculateDaysForSP
{
//封装日期信息
public struct MyDate
{
public int Year; //年
public int Month; //月
public int Day; //日
} }
MyDate.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CalculateDaysForSP
{
class Program
{
//存放每月天数,第一个元素为0是因为数组下标从0起,而我们希望按月份直接获取天数
static int[] months = { , , , , , , , , , , , , }; static void Main(string[] args)
{
MyDate d1, d2; //起始日期和结束日期
//1999年5月10日
d1.Year = ;
d1.Month = ;
d1.Day = ;
//2006年3月8日
d2.Year = ;
d2.Month = ;
d2.Day = ;
//计算结果
int days = CalculateDaysOfTwoDate(d1, d2); string str = "{0}年{1}月{2}日到{3}年{4}月{5}日共有天数:";
str = String.Format(str, d1.Year, d1.Month, d1.Day, d2.Year, d2.Month, d2.Day);
Console.WriteLine(str + days); //暂停,敲任意键结束
Console.ReadKey();
} //计算两个日期中的整天数
static int CalculateDaysOfTwoDate(MyDate beginDate, MyDate endDate)
{
int days = ;
days = CalculateDaysOfTwoYear(beginDate.Year, endDate.Year);
if (beginDate.Year == endDate.Year) days += CalculateDaysOfTwoMonth(beginDate, endDate, true);
else
days += CalculateDaysOfTwoMonth(beginDate, endDate, false); return days;
} //计算两年之间的整年天数,不足一年的去掉
static int CalculateDaysOfTwoYear(int beginYear, int endYear)
{
int days = ;
for (int i = beginYear + ; i <= endYear - ; i++)
{
if (IsLeapYear(i))
days += ;
else
days += ;
}
return days;
} //根据两个日期,计算出这两个日期之间的天数
static int CalculateDaysOfTwoMonth(MyDate beginDate, MyDate endDate, bool IsInOneYear)
{
int days = ;
//对于同一月,天数直接相减
if (beginDate.Month == endDate.Month)
if (IsInOneYear)
return endDate.Day - beginDate.Day;
else
if (IsLeapYear(beginDate.Year))
return + (endDate.Day - beginDate.Day);
else
return + (endDate.Day - beginDate.Day); //不同月
int i = ;
if (IsInOneYear)
{
//同一年
for (i = beginDate.Month; i <= endDate.Month; i++)
{
days += months[i];
//处理闰二月
if ((IsLeapYear(beginDate.Year) && (i == )))
days += ;
} //减去月初到起始日的天数
days -= beginDate.Day;
//减去结束日到月底的天数
days -= months[endDate.Month] - endDate.Day;
}
else
{
//不同年
//计算到年底的天数
for (i = beginDate.Month; i <= ; i++)
days += months[i]; //减去月初到起始日的天数
days -= beginDate.Day;
//从年初到结束月的天数
for (i = ; i <= endDate.Month; i++)
days += months[i]; //减去结束日到月底的天数
days -= months[endDate.Month] - endDate.Day;
}
return days;
} //根据年数判断其是否为闰年
static bool IsLeapYear(int year)
{
//如果年数能被400整除,是闰年
if (year % == )
{
return true;
}
//能被4整除,但不能被100整除,是闰年
if (year % == && year % != )
{
return true;
}
//其他情况,是平年
return false;
}
}
}
Program.cs
3、日期计算机面向对象编程实现
MyDate.cs同上,但命名空间改为CalculateDaysForOO
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CalculateDaysForOO
{
/// <summary>
/// 用于完成日期计算
/// </summary>
public class DateCalculator
{ //存放每月天数,第一个元素为0是因为数组下标从0起,而我们希望按月份直接获取天数
private int[] months = { , , , , , , , , , , , , }; //计算两个日期中的整天数
public int CalculateDaysOfTwoDate(MyDate beginDate, MyDate endDate)
{
int days = ;
days = CalculateDaysOfTwoYear(beginDate.Year, endDate.Year);
if (beginDate.Year == endDate.Year) days += CalculateDaysOfTwoMonth(beginDate, endDate, true);
else
days += CalculateDaysOfTwoMonth(beginDate, endDate, false); return days;
} //计算两年之间的整年天数,不足一年的去掉
private int CalculateDaysOfTwoYear(int beginYear, int endYear)
{
int days = ;
for (int i = beginYear + ; i <= endYear - ; i++)
{
if (IsLeapYear(i))
days += ;
else
days += ;
}
return days;
} //根据两个日期,计算出这两个日期之间的天数
private int CalculateDaysOfTwoMonth(MyDate beginDate, MyDate endDate, bool IsInOneYear)
{
int days = ;
//对于同一月,天数直接相减
if (beginDate.Month == endDate.Month)
if (IsInOneYear)
return endDate.Day - beginDate.Day;
else
if (IsLeapYear(beginDate.Year))
return + (endDate.Day - beginDate.Day);
else
return + (endDate.Day - beginDate.Day); //不同月
int i;
if (IsInOneYear)
{
//同一年
for (i = beginDate.Month; i <= endDate.Month; i++)
{
days += months[i];
//处理闰二月
if ((IsLeapYear(beginDate.Year) && (i == )))
days += ;
} //减去月初到起始日的天数
days -= beginDate.Day;
//减去结束日到月底的天数
days -= months[endDate.Month] - endDate.Day;
}
else
{
//不同年
//计算到年底的天数
for (i = beginDate.Month; i <= ; i++)
days += months[i]; //减去月初到起始日的天数
days -= beginDate.Day;
//从年初到结束月的天数
for (i = ; i <= endDate.Month; i++)
days += months[i]; //减去结束日到月底的天数
days -= months[endDate.Month] - endDate.Day;
}
return days;
} //根据年数判断其是否为闰年
private bool IsLeapYear(int year)
{
//如果年数能被400整除,是闰年
if (year % == )
{
return true;
}
//能被4整数,但不能被100整除,是闰年
if (year % == && year % != )
{
return true;
}
//其他情况,是平年
return false;
}
}
}
DateCalculator.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CalculateDaysForOO
{
class Program
{
static void Main(string[] args)
{
MyDate d1, d2; //起始日期和结束日期 //1999年5月10日
d1.Year = ;
d1.Month = ;
d1.Day = ;
//2006年3月8日
d2.Year = ;
d2.Month = ;
d2.Day = ; string str = "{0}年{1}月{2}日到{3}年{4}月{5}日共有天数:";
str = String.Format(str, d1.Year, d1.Month, d1.Day, d2.Year, d2.Month, d2.Day); //创建类CalculateDate的对象,让变量obj引用它
DateCalculator obj = new DateCalculator();
//调用对象obj的CalculateDaysOfTwoDate方法计算
int days = obj.CalculateDaysOfTwoDate(d1, d2); Console.WriteLine(str + days); //暂停,敲任意键结束
Console.ReadKey();
}
}
}
Program.cs
4、直接应用已有组件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CalculatorDaysUseDotNet
{
class Program
{
static void Main(string[] args)
{
DateTime d1 = new DateTime(, , );
DateTime d2 = new DateTime(, , );
//计算结果
double days = (d2 - d1).TotalDays; string str = "{0}年{1}月{2}日到{3}年{4}月{5}日共有天数:";
str = String.Format(str, d1.Year, d1.Month, d1.Day, d2.Year, d2.Month, d2.Day);
Console.WriteLine(str + days); //暂停,敲任意键结束
Console.ReadKey();
}
}
}
C sharp #001# hello world的更多相关文章
- swift 001
swift 001 = 赋值是没有返回值的 所以 int a=10; int b=20; if(a=b){ printf("这个是错误的"); } swift 中的模运算 是支 ...
- 16 On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima 1609.04836v1
Nitish Shirish Keskar, Dheevatsa Mudigere, Jorge Nocedal, Mikhail Smelyanskiy, Ping Tak Peter Tang N ...
- [SDK2.2]Windows Azure Virtual Network (4) 创建Web Server 001并添加至Virtual Network
<Windows Azure Platform 系列文章目录> 在上一章内容中,笔者已经介绍了以下两个内容: 1.创建Virtual Network,并且设置了IP range 2.创建A ...
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数001·3D函数
<zw版·Halcon-delphi系列原创教程> Halcon分类函数001·3D函数 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“proce ...
- Android 开发错误信息001
Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessExceptio ...
- python解无忧公主的数学时间编程题001.py
python解无忧公主的数学时间编程题001.py """ python解无忧公主的数学时间编程题001.py http://mp.weixin.qq.com/s?__b ...
- php大力力 [005节] php大力力简单计算器001
2015-08-22 php大力力005. php大力力简单计算器001: 上网看视频,看了半天,敲击代码,如下: <html> <head> <title>简单计 ...
- php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28
php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28 话说,嗯嗯,就是我自己说,做事认真要用表格,学习技 ...
- Web前端学习笔记(001)
....编号 ........类别 ............条目 ................明细....................时间 一.Web前端学习笔记 ...
随机推荐
- nginx r日志中午出现\xE5\x88\x98\xE4\xB8\x96\xE5\xA5\x87
参考文档: https://www.cnblogs.com/hark0623/p/5715726.html https://www.cnblogs.com/fqfanqi/p/7900758.html ...
- SSM 记录
前言:本过程从0开始,先是导入最核心的jar包,然后随着ssm中的功能实现,打包===>启动===>报错,一步步解决问题,增加额外的必须的jar包来熟悉ssm 1.导包(核心包) myba ...
- postman自动化,测试脚本
//获取当前时间的时间戳 function getTimestamp(len=10) { // 如果需要自动获取则将此处代码放开 // var tmp = Date.parse( new Date() ...
- mysql查询两个日期之前相隔的天数
select timestampdiff(SECOND,'2011-09-25 23:23:13','2011-09-26 22:23:11'); 其中SECOND同样可以改为HOUR,MINUTE
- windows android ndk的某些编译工具报错乱码0x5 或拒绝访问05
在IDEA或者AndroidStudio的快捷方式上右键属性 > 兼容性 > 以管理员身份运行 解决问题.
- 关于 RESTful API 中 HTTP 状态码的定义
最近正好使用了一会儿 Koa ,在这说一下自己对各个 请求码的见解和使用场景,懒人直接看 200.400.401.403.404.500 就可以了. 其中 2XX/3XX 其实都是请求成功,但是结果不 ...
- Postman接口自动化测试实例用到的完整的SM2前端加密算法代码
var __g__ = {}; !function(t,e){"object"==typeof exports?module.exports=exports=e():"f ...
- 在C#中,Newtonsoft.Json + dynamic动态解析jsonString,jsonString转实体
记录一下 引用 using Newtonsoft.Json; using Newtonsoft.Json.Linq; var jsonString = "{\"ApiResourc ...
- 使用datagrid时json的格式
EasyUI的DataGrid要求返回的JSON数据集是这样的形式: {"total":总记录数量,"rows":[数据记录数组]}. 例如: {"t ...
- shiro认证登录实现
准备工作: 在web.xml中配置shiro核心过滤器 在spring配置文件中提供核心过滤器运行所需要的辅助bean对象,在对象内注入安全管理器 拦截认证 配置三个url 拦截除了登录页面以及认证a ...