版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、用Visual C#.NET編寫服務(wù)器日期控件一、序言Visual HYPERLINK /dotnet/csharp/ t _blank C# HYPERLINK /dotnet/ t _blank .net是微軟公司出品的一種新的編程語(yǔ)言(以下簡(jiǎn)稱C#),它繼承了C語(yǔ)言的一些特性,也加入了一些新的元素。以前用過(guò) HYPERLINK /language/delphi/ t _blank Delphi開(kāi)發(fā)程序的人可能剛開(kāi)始使用C#的時(shí)候,對(duì)其有一種似曾相識(shí)的感覺(jué)(至少包括我)。是的,C#語(yǔ)言的創(chuàng)始人正是以前在Borland公司開(kāi)發(fā)出Delphi語(yǔ)言的Anders Hejlsberg。在我開(kāi)始使用
2、C#開(kāi)發(fā)程序時(shí),就覺(jué)得它是一款很棒的開(kāi)發(fā) HYPERLINK /os/windows/ t _blank Windows Form & HYPERLINK /web/ t _blank Web程序的RAD工具。 在開(kāi)發(fā)Web程序方面,C#的出現(xiàn)打破了以前的網(wǎng)頁(yè)開(kāi)發(fā)模式,實(shí)現(xiàn)了與開(kāi)發(fā)Windows Form程序一樣的所見(jiàn)即所得的功能。C#提供了一些常用的Web Form Control供開(kāi)發(fā)人員使用,并且只需將控件拖入頁(yè)面中即可,非常簡(jiǎn)單。但有時(shí)這些控件也不能滿足開(kāi)發(fā)人員的需要,需要開(kāi)發(fā)人員自己編寫用戶控件(User Control)或自定義控件(Custom Control)來(lái)滿足需求。在這里
3、,我將講解如何在C#中開(kāi)發(fā) HYPERLINK /server/ t _blank 服務(wù)器控件。二、預(yù)備知識(shí)在C#中可以開(kāi)發(fā)兩種服務(wù)器控件,一個(gè)是用戶控件(User Control)和自定義控件(Custom Control)。用戶控件的本質(zhì)與頁(yè)面文件( HYPERLINK /web/asp/ t _blank ASPx文件)差不多,是可被其它aspx頁(yè)面重復(fù)使用的HTML代碼段,當(dāng)然它也包括后臺(tái)代碼(Code-behind),后綴名是ascx。所以在開(kāi)發(fā)一些公用的靜態(tài)頁(yè)面時(shí)(例如頁(yè)頭,頁(yè)腳)經(jīng)常用到,但它的缺點(diǎn)是不易繼承,不易分發(fā),無(wú)法編譯成二進(jìn)制代碼來(lái)進(jìn)行部署。但是自定義控件的功能就強(qiáng)大許
4、多,它可以被編譯成二進(jìn)制代碼(DLL文件),可以被擴(kuò)展、繼承、分發(fā)。就像Web Form Control一樣,其實(shí)它們每個(gè)控件就是一個(gè)DLL文件。開(kāi)發(fā)用戶控件比較簡(jiǎn)單,就像編寫一個(gè)aspx頁(yè)面一樣,在這里就不介紹了。本文對(duì)象是自定義控件。服務(wù)器控件的基類是System.Web.UI.Control。如果要開(kāi)發(fā)可視化的服務(wù)器控件,那我們需要從System.Web.UI. HYPERLINK /dotnet/aspnet/webcontrols/ t _blank WebControls來(lái)繼承,否則從System.Web.UI.Control繼承。服務(wù)器控件在設(shè)計(jì)時(shí)以runat=”server”腳
5、本代碼嵌入到aspx文件中來(lái)表示此控件是在服務(wù)器端運(yùn)行的。在服務(wù)器控件所在頁(yè)面提交回傳(PostBack)過(guò)程中是依靠ViewState(視圖狀態(tài))來(lái)維護(hù)控件狀態(tài)的。所以我們?cè)谠O(shè)計(jì)服務(wù)器控件屬性時(shí),其值應(yīng)保存在ViewState中。三、代碼編寫C#中有一個(gè)日歷控件Calendar,但是現(xiàn)在我需要一個(gè)可以下拉的日歷控件,并且初始時(shí)不顯示日歷,當(dāng)我點(diǎn)擊下拉按鈕時(shí)才彈出,并且當(dāng)選擇了日期,日歷會(huì)自動(dòng)隱藏且選擇的日期值會(huì)顯示到相應(yīng)的輸入框中。顯然Calendar控件不能滿足我的需要,但是稍后我會(huì)在我的自定義控件中用到它。首先新建項(xiàng)目,在項(xiàng)目類型中選擇Visual C#項(xiàng)目,在模板列表中選擇Web控件庫(kù)
6、,輸入項(xiàng)目名稱AquaCalendar,然后選擇項(xiàng)目所在目錄,點(diǎn)擊【確定】按鈕。C#將會(huì)生成基本的框架代碼。將項(xiàng)目中的類文件和類名改名為DatePicker(即日期控件的類名)。由于DatePicker是可視化控件,所以我們必須從System.Web.UI.WebControls繼承。并且它包括一個(gè)輸入框,一個(gè)按鈕和日歷控件,需要在DatePicker類中聲明它們。像這種以多個(gè)服務(wù)器控件組合的控件成為復(fù)合控件。代碼如下,比較重要的方法和代碼在注釋中會(huì)加以說(shuō)明:using System;using System.Web.UI;using System.Web.UI.WebControls;usi
7、ng System.ComponentModel;using System.Drawing;namespace AquaCalendarDefaultProperty(Text), /在屬性工具箱中顯示的默認(rèn)屬性ToolboxData()public class DatePicker : System.Web.UI.WebControls.WebControl , IPostBackEventHandler/選擇日期按鈕的默認(rèn)樣式private const string _BUTTONDEFAULTSTYLE = BORDER-RIGHT: gray 1px solid; BORDER-TOP
8、: gray 1px solid; BORDER-LEFT: gray 1px solid; CURSOR: hand; BORDER-BOTTOM: gray 1px solid;/按鈕默認(rèn)文本private const string _BUTTONDEFAULTTEXT = .;private System.Web.UI.WebControls.Calendar _Calendar;public override ControlCollection ControlsgetEnsureChildControls(); /確認(rèn)子控件集都已被創(chuàng)建return base.Controls;/創(chuàng)建子
9、控件(服務(wù)器日歷控件)protected override void CreateChildControls()Controls.Clear();_Calendar = new Calendar();_Calendar.ID = MyCalendarID;_Calendar.SelectedDate = DateTime.Parse(Text);_Calendar.TitleFormat = TitleFormat.MonthYear;_Calendar.NextPrevFormat = NextPrevFormat.ShortMonth;_Calendar.CellSpacing = 0;_
10、Calendar.Font.Size = FontUnit.Parse(9pt);_Calendar.Font.Name = Verdana;_Calendar.SelectedDayStyle.BackColor = ColorTranslator.FromHtml(#333399);_Calendar.SelectedDayStyle.ForeColor = ColorTranslator.FromHtml(White);_Calendar.DayStyle.BackColor = ColorTranslator.FromHtml(#CCCCCC);_Calendar.TodayDaySt
11、yle.BackColor = ColorTranslator.FromHtml(#999999);_Calendar.TodayDayStyle.ForeColor = ColorTranslator.FromHtml(Aqua);_Calendar.DayHeaderStyle.Font.Size = FontUnit.Parse(8pt);_Calendar.DayHeaderStyle.Font.Bold = true;_Calendar.DayHeaderStyle.Height = Unit.Parse(8pt);_Calendar.DayHeaderStyle.ForeColor
12、 = ColorTranslator.FromHtml(#333333);_Calendar.NextPrevStyle.Font.Size = FontUnit.Parse(8pt); _Calendar.NextPrevStyle.Font.Bold = true;_Calendar.NextPrevStyle.ForeColor = ColorTranslator.FromHtml(White);_Calendar.TitleStyle.Font.Size = FontUnit.Parse(12pt); _Calendar.TitleStyle.Font.Bold = true;_Cal
13、endar.TitleStyle.Height = Unit.Parse(12pt);_Calendar.TitleStyle.ForeColor = ColorTranslator.FromHtml(White);_Calendar.TitleStyle.BackColor = ColorTranslator.FromHtml(#333399);_Calendar.OtherMonthDayStyle.ForeColor = ColorTranslator.FromHtml(#999999);_Calendar.NextPrevFormat = NextPrevFormat.CustomTe
14、xt;_Calendar.NextMonthText = 下月;_Calendar.PrevMonthText = 上月;_Calendar.Style.Add(display,none); /默認(rèn)不顯示下拉日歷控件_Calendar.SelectionChanged += new EventHandler(_Calendar_SelectionChanged);this.Controls.Add(_Calendar);Category(Appearance), /該屬性所屬類別,參見(jiàn)圖DefaultValue(), /屬性默認(rèn)值Description(設(shè)置該日期控件的值。) /屬性的描述pu
15、blic string TextgetEnsureChildControls();return (ViewStateText = null)?System.DateTime.Today.ToString(yyyy-MM-dd):ViewStateText.ToString();setEnsureChildControls();DateTime dt = System.DateTime.Today;trydt = DateTime.Parse(value);catchthrow new ArgumentOutOfRangeException(請(qǐng)輸入日期型字符串(例如:1981-04-29)!);
16、ViewStateText = DateFormat = CalendarEnum.LongDateTime?dt.ToString(yyyy-MM-dd):dt.ToString(yyyy-M-d);/重載服務(wù)器控件的Enabled屬性,將選擇日期按鈕變灰(禁用)public override bool EnabledgetEnsureChildControls();return ViewStateEnabled = null?true:(bool)ViewStateEnabled;setEnsureChildControls();ViewStateEnabled = value;publi
17、c string ButtonStylegetEnsureChildControls();object o = ViewStateButtonSytle;return (o = null)?_BUTTONDEFAULTSTYLE:o.ToString();setEnsureChildControls();ViewStateButtonSytle = value;DefaultValue(CalendarEnum.LongDateTime),public CalendarEnum DateFormatgetEnsureChildControls();object format = ViewSta
18、teDateFormat;return format = null?CalendarEnum.LongDateTime:(CalendarEnum)format;setEnsureChildControls();ViewStateDateFormat = value;DateTime dt = DateTime.Parse(Text);Text=DateFormat = CalendarEnum.LongDateTime?dt.ToString(yyyy-MM-dd):dt.ToString(yyyy-M-d);Browsable(false),DesignerSerializationVis
19、ibility(DesignerSerializationVisibility.Hidden)public string MyCalendarID /復(fù)合控件IDgetEnsureChildControls();return this.ClientID+_MyCalendar;Browsable(false),DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)public string MyCalendarName /復(fù)合控件名稱getEnsureChildControls();return this.
20、UniqueID+:MyCalendar;Browsable(false),DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)public string DatePickerInputID /復(fù)合控件中輸入框的IDgetEnsureChildControls();return this.ClientID+_DateInput;Browsable(false),DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)pu
21、blic string DatePickerInputName /復(fù)合控件中輸入框的名稱getEnsureChildControls();return this.UniqueID+:DateInput;Browsable(false),DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)public string DatePickerButtonID /復(fù)合控件中按鈕的IDgetEnsureChildControls();return this.ClientID+_DateButton;Browsable
22、(false),DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)public string DatePickerButtonName /復(fù)合控件中按鈕的名稱getEnsureChildControls();return this.UniqueID+:DateButton;public string ButtonTextgetEnsureChildControls();return ViewStateButtonText = null?_BUTTONDEFAULTTEXT:(string)ViewSta
23、teButtonText;setEnsureChildControls();ViewStateButtonText = value;/ / 將此控件呈現(xiàn)給指定的輸出參數(shù)。/ / 要寫出到的 HTML 編寫器 protected override void Render(HtmlTextWriter output)/在頁(yè)面中輸出控件時(shí),產(chǎn)生一個(gè)表格(二行二列),以下是表格的樣式output.AddAttribute(HtmlTextWriterAttribute.Cellspacing, 0);output.AddAttribute(HtmlTextWriterAttribute.Border,
24、 0);output.AddAttribute(HtmlTextWriterAttribute.Cellpadding, 0);output.AddStyleAttribute(LEFT, this.StyleLEFT);output.AddStyleAttribute(TOP, this.StyleTOP);output.AddStyleAttribute(POSITION, absolute);if (Width != Unit.Empty)output.AddStyleAttribute(HtmlTextWriterStyle.Width, Width.ToString();elseou
25、tput.AddStyleAttribute(HtmlTextWriterStyle.Width, 200px);output.RenderBeginTag(HtmlTextWriterTag.Table); /輸出表格output.RenderBeginTag(HtmlTextWriterTag.Tr); /表格第一行output.AddAttribute(HtmlTextWriterAttribute.Width, 90%);output.RenderBeginTag(HtmlTextWriterTag.Td);/以下是第一行第一列中文本框的屬性及其樣式設(shè)置if (!Enabled)out
26、put.AddAttribute(HtmlTextWriterAttribute.ReadOnly, true);output.AddAttribute(HtmlTextWriterAttribute.Type, Text);output.AddAttribute(HtmlTextWriterAttribute.Id, DatePickerInputID);output.AddAttribute(HtmlTextWriterAttribute.Name, DatePickerInputName);output.AddAttribute(HtmlTextWriterAttribute.Value
27、, Text);output.AddStyleAttribute(HtmlTextWriterStyle.Width, 100%);output.AddStyleAttribute(HtmlTextWriterStyle.Height, 100%);output.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, Font.Name);output.AddStyleAttribute(HtmlTextWriterStyle.FontSize, Font.Size.ToString();output.AddStyleAttribute(HtmlTe
28、xtWriterStyle.FontWeight, Font.Bold?bold:);output.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, ColorTranslator.ToHtml(BackColor);output.AddStyleAttribute(HtmlTextWriterStyle.Color, ColorTranslator.ToHtml(ForeColor);output.RenderBeginTag(HtmlTextWriterTag.Input); /輸出文本框output.RenderEndTag()
29、;output.RenderEndTag();output.AddAttribute(HtmlTextWriterAttribute.Width, *);output.RenderBeginTag(HtmlTextWriterTag.Td);/以下是第一行第二列中按鈕的屬性及其樣式設(shè)置if (!Enabled)output.AddAttribute(HtmlTextWriterAttribute.Disabled, true);output.AddAttribute(HtmlTextWriterAttribute.Type, Submit);output.AddAttribute(HtmlTe
30、xtWriterAttribute.Id, DatePickerButtonID);output.AddAttribute(HtmlTextWriterAttribute.Name, DatePickerButtonName);output.AddAttribute(HtmlTextWriterAttribute.Value, ButtonText);output.AddStyleAttribute(HtmlTextWriterStyle.Width, 100%);output.AddAttribute(HtmlTextWriterAttribute.Onclick, Page.GetPost
31、BackEventReference(this); /點(diǎn)擊按鈕時(shí)需要回傳服務(wù)器來(lái)觸發(fā)后面的OnClick事件output.AddAttribute(HtmlTextWriterAttribute.Style, ButtonStyle);output.RenderBeginTag(HtmlTextWriterTag.Input); /輸出按鈕output.RenderEndTag();output.RenderEndTag();output.RenderEndTag();output.RenderBeginTag(HtmlTextWriterTag.Tr);output.AddAttribute
32、(HtmlTextWriterAttribute.Colspan, 2);output.RenderBeginTag(HtmlTextWriterTag.Td);_Calendar.RenderControl(output); /將日歷子控件輸出output.RenderEndTag();output.RenderEndTag();output.RenderEndTag();/復(fù)合控件必須繼承IpostBackEventHandler接口,才能繼承RaisePostBackEvent事件public void RaisePostBackEvent(string eventArgument)On
33、Click(EventArgs.Empty);protected virtual void OnClick(EventArgs e)/點(diǎn)擊選擇日期按鈕時(shí),如果日歷子控件沒(méi)有顯示則顯示出來(lái)并將文本框的值賦值給日歷子控件if (_Calendar.Attributesdisplay != )_Calendar.SelectedDate = DateTime.Parse(Text);_Calendar.Style.Add(display,);/復(fù)合控件中的日歷控件日期變化事件private void _Calendar_SelectionChanged(object sender, EventArg
34、s e)/當(dāng)選擇的日期變化時(shí),將所選日期賦值給文本框并將日歷子控件隱藏Text = _Calendar.SelectedDate.ToString();_Calendar.Style.Add(display,none);在上面的代碼中,需要注意以下幾點(diǎn):如果你想將此控件的某些屬性供重載,則在聲明屬性前加上virtual關(guān)鍵字;在頁(yè)面輸出此控件時(shí)(即在Render事件中),是先定義子控件的樣式或?qū)傩裕缓笤佼a(chǎn)生子控件;在隱藏日歷子控件時(shí),建議不要使用Visible屬性來(lái)顯示/隱藏,使用Visible=false隱藏時(shí)服務(wù)器端將不會(huì)將日歷控件HTML代碼發(fā)送給客戶端,會(huì)導(dǎo)致復(fù)合控件裝載日歷控件的表
35、格會(huì)空白一塊出來(lái),影響頁(yè)面的布局。所以使用樣式display=none設(shè)置來(lái)使日歷控件在客戶端隱藏,但是HTML代碼依然存在于頁(yè)面中;四、結(jié)束語(yǔ)在編寫服務(wù)器控件時(shí),需要一定的HTML語(yǔ)言基礎(chǔ),也要清楚.NET程序的請(qǐng)求處理方式。服務(wù)器控件封裝了客戶端行為及邏輯判斷,無(wú)需開(kāi)發(fā)者添加更多代碼。當(dāng)然,有些地方使用服務(wù)器控件可以帶來(lái)方便,但是也增加了服務(wù)器的負(fù)荷。有時(shí)適當(dāng)?shù)慕Y(jié)合 HYPERLINK /web/javascript/ t _blank JavaScript使一些代碼在客戶端運(yùn)行,可提高WEB應(yīng)用程序效率。附錄資料:不需要的可以自行刪除Abstract: Based on the comp
36、rehensive analysis on the plastic parts structure service requirement, mounding quality and mould menu factoring cost. A corresponding injection mould of internal side core pulling was designed. By adopting the multi-direction and multi-combination core-pulling. A corresponding injection mould of in
37、ternal side core pulling was designed, the working process of the mould was introducedC語(yǔ)言詳解 - 枚舉類型注:以下全部代碼的執(zhí)行環(huán)境為VC+ 6.0在程序中,可能需要為某些整數(shù)定義一個(gè)別名,我們可以利用預(yù)處理指令#define來(lái)完成這項(xiàng)工作,您的代碼可能是:#define MON 1#define TUE 2#define WED 3#define THU 4#define FRI 5#define SAT 6#define SUN 7在此,我們定義一種新的數(shù)據(jù)類型,希望它能完成同樣的工作。這種新的數(shù)據(jù)類
38、型叫枚舉型。1. 定義一種新的數(shù)據(jù)類型 - 枚舉型 以下代碼定義了這種新的數(shù)據(jù)類型 - 枚舉型enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN;(1) 枚舉型是一個(gè)集合,集合中的元素(枚舉成員)是一些命名的整型常量,元素之間用逗號(hào),隔開(kāi)。(2) DAY是一個(gè)標(biāo)識(shí)符,可以看成這個(gè)集合的名字,是一個(gè)可選項(xiàng),即是可有可無(wú)的項(xiàng)。(3) 第一個(gè)枚舉成員的默認(rèn)值為整型的0,后續(xù)枚舉成員的值在前一個(gè)成員上加1。(4) 可以人為設(shè)定枚舉成員的值,從而自定義某個(gè)范圍內(nèi)的整數(shù)。(5) 枚舉型是預(yù)處理指令#define的替代。(6) 類型定義以分號(hào);結(jié)束。2. 使用枚舉類型對(duì)
39、變量進(jìn)行聲明新的數(shù)據(jù)類型定義完成后,它就可以使用了。我們已經(jīng)見(jiàn)過(guò)最基本的數(shù)據(jù)類型,如:整型int, 單精度浮點(diǎn)型float, 雙精度浮點(diǎn)型double, 字符型char, 短整型short等等。用這些基本數(shù)據(jù)類型聲明變量通常是這樣:char a; /變量a的類型均為字符型charchar letter;int x, y, z; /變量x,y和z的類型均為整型intint number;double m, n;double result; /變量result的類型為雙精度浮點(diǎn)型double既然枚舉也是一種數(shù)據(jù)類型,那么它和基本數(shù)據(jù)類型一樣也可以對(duì)變量進(jìn)行聲明。方法一:枚舉類型的定義和變量的聲明分
40、開(kāi)enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN;enum DAY yesterday;enum DAY today;enum DAY tomorrow; /變量tomorrow的類型為枚舉型enum DAYenum DAY good_day, bad_day; /變量good_day和bad_day的類型均為枚舉型enum DAY方法二:類型定義與變量聲明同時(shí)進(jìn)行:enum /跟第一個(gè)定義不同的是,此處的標(biāo)號(hào)DAY省略,這是允許的。 saturday, sunday = 0, monday, tuesday, wednesday, thursday,
41、 friday workday; /變量workday的類型為枚舉型enum DAYenum week Mon=1, Tue, Wed, Thu, Fri Sat, Sun days; /變量days的類型為枚舉型enum weekenum BOOLEAN false, true end_flag, match_flag; /定義枚舉類型并聲明了兩個(gè)枚舉型變量方法三:用typedef關(guān)鍵字將枚舉類型定義成別名,并利用該別名進(jìn)行變量聲明:typedef enum workday saturday, sunday = 0, monday, tuesday, wednesday, thursday,
42、 friday workday; /此處的workday為枚舉型enum workday的別名workday today, tomorrow; /變量today和tomorrow的類型為枚舉型workday,也即enum workdayenum workday中的workday可以省略:typedef enum saturday, sunday = 0, monday, tuesday, wednesday, thursday, friday workday; /此處的workday為枚舉型enum workday的別名workday today, tomorrow; /變量today和tom
43、orrow的類型為枚舉型workday,也即enum workday也可以用這種方式:typedef enum workday saturday, sunday = 0, monday, tuesday, wednesday, thursday, friday;workday today, tomorrow; /變量today和tomorrow的類型為枚舉型workday,也即enum workday注意:同一個(gè)程序中不能定義同名的枚舉類型,不同的枚舉類型中也不能存在同名的命名常量。錯(cuò)誤示例如下所示:錯(cuò)誤聲明一:存在同名的枚舉類型typedef enum wednesday, thursday
44、, friday workday;typedef enum WEEK saturday, sunday = 0, monday, workday; 錯(cuò)誤聲明二:存在同名的枚舉成員typedef enum wednesday, thursday, friday workday_1;typedef enum WEEK wednesday, sunday = 0, monday, workday_2;3. 使用枚舉類型的變量3.1 對(duì)枚舉型的變量賦值。實(shí)例將枚舉類型的賦值與基本數(shù)據(jù)類型的賦值進(jìn)行了對(duì)比:方法一:先聲明變量,再對(duì)變量賦值#include/* 定義枚舉類型 */enum DAY MON=
45、1, TUE, WED, THU, FRI, SAT, SUN ;void main() /* 使用基本數(shù)據(jù)類型聲明變量,然后對(duì)變量賦值 */ int x, y, z; x = 10; y = 20; z = 30; /* 使用枚舉類型聲明變量,再對(duì)枚舉型變量賦值 */ enum DAY yesterday, today, tomorrow; yesterday = MON; today = TUE; tomorrow = WED; printf(%d %d %d n, yesterday, today, tomorrow);方法二:聲明變量的同時(shí)賦初值#include /* 定義枚舉類型 *
46、/enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ;void main() /* 使用基本數(shù)據(jù)類型聲明變量同時(shí)對(duì)變量賦初值 */ int x=10, y=20, z=30; /* 使用枚舉類型聲明變量同時(shí)對(duì)枚舉型變量賦初值 */ enum DAY yesterday = MON, today = TUE, tomorrow = WED; printf(%d %d %d n, yesterday, today, tomorrow);方法三:定義類型的同時(shí)聲明變量,然后對(duì)變量賦值。#include /* 定義枚舉類型,同時(shí)聲明該類型的三個(gè)變量,它們都為全局
47、變量 */enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN yesterday, today, tomorrow;/* 定義三個(gè)具有基本數(shù)據(jù)類型的變量,它們都為全局變量 */int x, y, z;void main() /* 對(duì)基本數(shù)據(jù)類型的變量賦值 */ x = 10; y = 20; z = 30; /* 對(duì)枚舉型的變量賦值 */ yesterday = MON; today = TUE; tomorrow = WED; printf(%d %d %d n, x, y, z); /輸出:10 20 30 printf(%d %d %d n, yes
48、terday, today, tomorrow); /輸出:1 2 3方法四:類型定義,變量聲明,賦初值同時(shí)進(jìn)行。#include /* 定義枚舉類型,同時(shí)聲明該類型的三個(gè)變量,并賦初值。它們都為全局變量 */enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN yesterday = MON, today = TUE, tomorrow = WED;/* 定義三個(gè)具有基本數(shù)據(jù)類型的變量,并賦初值。它們都為全局變量 */int x = 10, y = 20, z = 30;void main() printf(%d %d %d n, x, y, z); /輸
49、出:10 20 30 printf(%d %d %d n, yesterday, today, tomorrow); /輸出:1 2 33.2 對(duì)枚舉型的變量賦整數(shù)值時(shí),需要進(jìn)行類型轉(zhuǎn)換。#include enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ;void main() enum DAY yesterday, today, tomorrow; yesterday = TUE; today = (enum DAY) (yesterday + 1); /類型轉(zhuǎn)換 tomorrow = (enum DAY) 30; /類型轉(zhuǎn)換 /tomorrow =
50、 3; /錯(cuò)誤 printf(%d %d %d n, yesterday, today, tomorrow); /輸出:2 3 303.3 使用枚舉型變量#includeenum BELL = a, BACKSPACE = b, HTAB = t, RETURN = r, NEWLINE = n, VTAB = v, SPACE = ;enum BOOLEAN FALSE = 0, TRUE match_flag;void main() int index = 0; int count_of_letter = 0; int count_of_space = 0; char str = Im Ely efod; match_flag = FALSE; for(; strindex != 0; i
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024速記服務(wù)保密協(xié)議確保政府會(huì)議記錄及政策解讀安全3篇
- 2025至2031年中國(guó)防爆套筒連接桿行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國(guó)連續(xù)式小袋顆粒包裝機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024年有機(jī)玻璃密封罐項(xiàng)目可行性研究報(bào)告
- 2024年尼龍針織手套項(xiàng)目可行性研究報(bào)告
- 2024年光源產(chǎn)品項(xiàng)目可行性研究報(bào)告
- 2024至2030年高鎳白銅眼鏡框絲項(xiàng)目投資價(jià)值分析報(bào)告
- 2024至2030年非標(biāo)柴油項(xiàng)目投資價(jià)值分析報(bào)告
- 2024至2030年中國(guó)自行車修理工具數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024年08月廣東中信銀行惠州分行社會(huì)招考(811)筆試歷年參考題庫(kù)附帶答案詳解
- 浙江省金華市婺城區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末數(shù)學(xué)試卷(含答案)
- 天津市河西區(qū)2024-2025學(xué)年高二上學(xué)期1月期末英語(yǔ)試題(含答案無(wú)聽(tīng)力音頻及聽(tīng)力原文)
- 重慶市2023-2024學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 安徽省合肥市蜀山區(qū)2023-2024學(xué)年五年級(jí)上學(xué)期期末質(zhì)量檢測(cè)科學(xué)試題
- 高數(shù)(大一上)期末試題及答案
- 員工工資條模板
- 14K118 空調(diào)通風(fēng)管道的加固
- 山區(qū)道路安全駕駛教案
- 常見(jiàn)浮游植物圖譜(1)
- 丙酮-水連續(xù)精餾塔的設(shè)計(jì)
- 菜鳥(niǎo)也上手:最最完整的Cool Edit Pro 圖文操作手冊(cè)
評(píng)論
0/150
提交評(píng)論