怎么用C#实现日期的输入输?
LZ 逻辑没问题多地方够简练先集说几严重错误1。 LZ 对 if else 语法够熟悉每选择分支 {} 代表完整语句用加;了像定义类此时{}面加;另有意乱加;也造成 LZ if 嵌套混乱重要原因之2。 LZ 讲 if 嵌套混乱由两原因引起第从 LZ 贴出来代码看LZ 没有养成规范编写格式习惯规范代码格式细节多LZ 用 VS 类 IDE 编写时候 IDE 能自动帮 LZ 做定缩进使代码规范我下面帮 LZ 改了样代码结构清晰易读 if 嵌套关系更容易理解第二关于避免 if else 匹配换乱LZ 养成管多简单 if 语句要用 if(condition)statement; 格式即用简单...全部
LZ 逻辑没问题多地方够简练先集说几严重错误1。 LZ 对 if else 语法够熟悉每选择分支 {} 代表完整语句用加;了像定义类此时{}面加;另有意乱加;也造成 LZ if 嵌套混乱重要原因之2。
LZ 讲 if 嵌套混乱由两原因引起第从 LZ 贴出来代码看LZ 没有养成规范编写格式习惯规范代码格式细节多LZ 用 VS 类 IDE 编写时候 IDE 能自动帮 LZ 做定缩进使代码规范我下面帮 LZ 改了样代码结构清晰易读 if 嵌套关系更容易理解第二关于避免 if else 匹配换乱LZ 养成管多简单 if 语句要用 if(condition)statement; 格式即用简单格式坚持使用带 {} 完整格式样 else 遗漏容易被发现3。
标准库名称没有 using 声明都得加 std:: 表示 cout cin endl 之类名称 标准库里定义样编译器才知道哪里参考们4。 使用合适类型存储年月日里 unsigned 比 int 更加适合下面修改代码修改之处做了注释下代码 VS2010 编译通过运行成功#include<iostream> // 标准带 。
h#include <string>#include <sstream>class date{private:unsigned year,month,day;public:date(unsigned x,unsigned y,unsigned z) {year=x;month=y;day=z;}bool fun1(unsigned a); // 建议直接使用内置 bool 类型避免转化错误void fun2();unsigned fun3(){return year;}unsigned fun4(){return month;}unsigned fun5(){return day;}};bool date::fun1(unsigned a) // 建议直接使用内置 bool 类型避免转化错误{// 直接返回结行了用定义局部变量return (a%4==0&&a%100!=0||a%100==0&&a%400==0)?true:false; }void date::fun2(){ if(day<=27){day++;}else{switch(day){case 28:if(month==2){if(fun1(year)) // if 条件做相应修改更加简洁{day++;}else {month++;day = 1; // 非闰月2月28日天3月1日}}else{day++;}break;case 29:if(fun1(year)) // 修改理由参见上方修改{if(month==2) {month++;day=1;}else {day++;}}else {if(month==2){std::cout<<"您输入了错误日期"<< std::endl; // 没有使用using 声明得加 std::break;}else {day++;}}break;case 30: if(month==2){std::cout<<"您输入了错误日期"<<std::endl; // 没有使用using 声明得加 std::break;}else {if(month==4||month==6||month==9||month==11){month++;day=1;}else {day++; // 少了 ++运算符}}break;case 31:if(month==2||month==4||month==6||month==9||month==11){std::cout<<"您输入了错误日期"<<std::endl;break;}else{if(month==1||month==3||month==5||month==7||month==8||month==10){month++;day=1;}else if(month==12){year++;month++;day=1;};}break;default:std::cout<<"您输入了错误日期"<<std::endl;}}}void main(){std::cout<<"请依次输入正确年/月/日(任意非数字符号间隔该程序显示第二天日期):"<<std::endl;std::string inputstr; // C++ 字符串用来保存用户输入( 1998-12-121999/12/23 …)std::cin >> inputstr;std::istringstream instr(inputstr); // instr 用于年月日信息抽取出来char dump; // dump 用于/ -之类分隔符过滤掉unsigned a,b,c; // 年月日没有负数所 unsigned 更加适合instr >> a >> dump >> b >> dump >> c; date date1(a,b,c);date1。
fun2();if(date1。fun5()!=c) // 调用成员函数别忘了()std::cout<<std::endl<<date1。fun3()<<"/"<<date1。
fun4()<<"/"<<date1。fun5()<<std::endl; // 调用成员函数别忘了()}==================运行结 请依次输入正确年/月/日(任意非数字符号间隔该程序显示第二天日期):1998-2-281998/3/1Press any key to continue 。
。 。收起