#include stdio.h
成都創(chuàng)新互聯(lián)作為成都網(wǎng)站建設(shè)公司,專注成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),有關(guān)成都企業(yè)網(wǎng)站建設(shè)方案、改版、費(fèi)用等問題,行業(yè)涉及被動防護(hù)網(wǎng)等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。
struct zh
{
char name[20];
int haoma;
enum {w,m}xb;
char zhiye;
union nn
{
int clas;
char zhiwu[20];
}th;
};
int main()
{
int n,i,j;
struct zh kk[100];
char ch;
scanf("%d",n);
ch=getchar();
for(i=0;in;i++)
{
scanf("%s",kk[i].name);
scanf("%d",kk[i].haoma);
scanf("%d",j);
if(j==0)
kk[i].xb=w;
else
kk[0].xb=m;
printf("=======%d\n",kk[0].xb);
}
return 0;
}
就加了一條輸出語句
你給的枚舉變量已經(jīng)賦值了,是默認(rèn)的
以下是百度上的內(nèi)容,我覺得寫得很正確;
枚舉是用標(biāo)識符表示的整型常數(shù)集合,這些常數(shù)是該類型變量可取的合法值,這些標(biāo)識符稱為枚舉常量。
定義:enum枚舉名{標(biāo)識符1,標(biāo)識符2...標(biāo)識符n};
比如enum weekday{sun,mon,tue};
就表示定義了3個(gè)枚舉型常量,默認(rèn)他們的值是從0開始,依次遞增,也就是sum=0,mon=1,tue=2
你也可以直接給他們賦值,比如enum weekday{sun=1,mon,tue};
如果這樣的話mon的值就為2,tue的值就為3.
你也可以用其他變量代替枚舉常量的值,比如
enum weekday{sun,mon,tue}a,b,c;
a=sun;
b=mon;
c=tue;
如果輸出的話a=0,b=1,c=2
如果一個(gè)變量只有幾種可能的值,就可以定義為枚舉類型。枚舉 就是將變量的值一一列舉出來,變量的值只限于列舉出來值的范圍。聲名枚舉類型用enum開頭。如enum number{1,2,3};就讓number的值只能是1、2或3,其他是錯(cuò)誤的。望采納。
一、對枚舉型的變量賦值。
實(shí)例將枚舉類型的賦值與基本數(shù)據(jù)類型的賦值進(jìn)行了對比:
方法1:先聲明變量,再對變量賦值
#includestdio.h
/*?定義枚舉類型?*/
enum?DAY?{?MON=1,?TUE,?WED,?THU,?FRI,?SAT,?SUN?};
void?main()
{
/*?使用基本數(shù)據(jù)類型聲明變量,然后對變量賦值?*/
int?x,?y,?z;
x?=?10;
y?=?20;
z?=?30;
/*?使用枚舉類型聲明變量,再對枚舉型變量賦值?*/
enum?DAY?yesterday,?today,?tomorrow;
yesterday?=?MON;
today?????=?TUE;
tomorrow??=?WED;
printf("%d?%d?%d?\n",?yesterday,?today,?tomorrow);
}
方法2:聲明變量的同時(shí)賦初值
#include?stdio.h
/*?定義枚舉類型?*/
enum?DAY?{?MON=1,?TUE,?WED,?THU,?FRI,?SAT,?SUN?};
void?main()
{
/*?使用基本數(shù)據(jù)類型聲明變量同時(shí)對變量賦初值?*/
int?x=10,?y=20,?z=30;
/*?使用枚舉類型聲明變量同時(shí)對枚舉型變量賦初值?*/
enum?DAY?yesterday?=?MON,?
today?=?TUE,
tomorrow?=?WED;
printf("%d?%d?%d?\n",?yesterday,?today,?tomorrow);
}
方法3:定義類型的同時(shí)聲明變量,然后對變量賦值。
#include?stdio.h
/*?定義枚舉類型,同時(shí)聲明該類型的三個(gè)變量,它們都為全局變量?*/
enum?DAY?{?MON=1,?TUE,?WED,?THU,?FRI,?SAT,?SUN?}?yesterday,?today,?tomorrow;
/*?定義三個(gè)具有基本數(shù)據(jù)類型的變量,它們都為全局變量?*/
int?x,?y,?z;
void?main()
{
/*?對基本數(shù)據(jù)類型的變量賦值?*/
x?=?10;??y?=?20;??z?=?30;
/*?對枚舉型的變量賦值?*/
yesterday?=?MON;
today?????=?TUE;
tomorrow??=?WED;
printf("%d?%d?%d?\n",?x,?y,?z);?//輸出:10?20?30
printf("%d?%d?%d?\n",?yesterday,?today,?tomorrow);?//輸出:1?2?3
}
方法4:類型定義,變量聲明,賦初值同時(shí)進(jìn)行。
#include?stdio.h
/*?定義枚舉類型,同時(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);?//輸出:10?20?30
printf("%d?%d?%d?\n",?yesterday,?today,?tomorrow);?//輸出:1?2?3
}
2、對枚舉型的變量賦整數(shù)值時(shí),需要進(jìn)行類型轉(zhuǎn)換。
#include?stdio.h
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?=?3;?//錯(cuò)誤
printf("%d?%d?%d?\n",?yesterday,?today,?tomorrow);?//輸出:2?3?30
}
3、使用枚舉型變量
#includestdio.h
enum
{?
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[]?=?"I'm?Ely?efod";
match_flag?=?FALSE;
for(;?str[index]?!=?'\0';?index++)
if(?SPACE?!=?str[index]?)
count_of_letter++;
else
{
match_flag?=?(enum?BOOLEAN)?1;
count_of_space++;
}
printf("%s?%d?times?%c",?match_flag???"match"?:?"not?match",?count_of_space,?NEWLINE);
printf("count?of?letters:?%d?%c%c",?count_of_letter,?NEWLINE,?RETURN);
}
1.enum
枚舉的定義
枚舉類型定義的一般形式為:
enum 枚舉名{ 枚舉值表 };
在枚舉值表中應(yīng)羅列出所有可用值。這些值也稱為枚舉元素。
例如:
該枚舉名為weekday,枚舉值共有7個(gè),即一周中的七天。凡被說明為weekday類型變量的取值只能是七天中的某一天。
2.
枚舉變量的說明
如同結(jié)構(gòu)和聯(lián)合一樣,枚舉變量也可用不同的方式說明,即先定義后說明,同時(shí)定義說明或直接說明。
設(shè)有變量a,b,c被說明為上述的weekday,可采用下述任一種方式:
enum weekday{ sun,mou,tue,wed,thu,fri,sat };
enum weekday a,b,c;
或者為:
enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;
或者為:
enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;
3、枚舉類型變量的賦值和使用
枚舉類型在使用中有以下規(guī)定:
a.
枚舉值是常量,不是變量。不能在程序中用賦值語句再對它賦值。
例如對枚舉weekday的元素再作以下賦值:
sun=5;
mon=2;
sun=mon;
都是錯(cuò)誤的。
b.
枚舉元素本身由系統(tǒng)定義了一個(gè)表示序號的數(shù)值,從0開始順序定義為0,1,2…。如在weekday中,sun值為0,mon值為1,…,sat值為6。
int main(){
enum weekday
{ sun,mon,tue,wed,thu,fri,sat } a,b,c;
a=sun;
b=mon;
c=tue;
printf("%d,%d,%d",a,b,c);
return 0;
}
說明:
只能把枚舉值賦予枚舉變量,不能把元素的數(shù)值直接賦予枚舉變量。如:
a=sum;
b=mon;
是正確的。而:
a=0;
b=1;
是錯(cuò)誤的。如一定要把數(shù)值賦予枚舉變量,則必須用強(qiáng)制類型轉(zhuǎn)換。
如:a=(enum
weekday)2;
其意義是將順序號為2的枚舉元素賦予枚舉變量a,相當(dāng)于:
a=tue;
還應(yīng)該說明的是枚舉元素不是字符常量也不是字符串常量,使用時(shí)不要加單、雙引號。
int main(){
enum body
{ a,b,c,d } month[31],j;
int i;
j=a;
for(i=1;i=30;i++){
month[i]=j;
j++;
if (jd) j=a;
}
for(i=1;i=30;i++){
switch(month[i])
{
case a:printf(" %2d %c\t",i,'a'); break;
case b:printf(" %2d %c\t",i,'b'); break;
case c:printf(" %2d %c\t",i,'c'); break;
case d:printf(" %2d %c\t",i,'d'); break;
default:break;
}
}
printf("\n");
return 0;
}