c语言枚举用法

c语言枚举用法,第1张

一、对枚举型的变量赋值

实例将枚举类型赋值与基本数据类型的赋值进行了对比:

方法1:先声明变量,再对变量赋值

#include<stdioh>

/ 定义枚举类型 /

enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };

void main()

{

    / 使用基本数据类型声明变量,然后对变量赋值 /

    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:声明变量的同时赋初值

#include <stdioh>

/ 定义枚举类型 /

enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };

void main()

{

    / 使用基本数据类型声明变量同时对变量赋初值 /

    int x=10, y=20, z=30;

    / 使用枚举类型声明变量同时对枚举型变量赋初值 /

    enum DAY yesterday = MON, 

                        today = TUE,

                      tomorrow = WED;

    printf("%d %d %d \n", yesterday, today, tomorrow);

}

方法3:定义类型的同时声明变量,然后对变量赋值。

#include <stdioh>

/ 定义枚举类型,同时声明该类型的三个变量,它们都为全局变量 /

enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN } yesterday, today, tomorrow;

/ 定义三个具有基本数据类型的变量,它们都为全局变量 /

int x, y, z;

void main()

{

    / 对基本数据类型的变量赋值 /

    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:类型定义,变量声明,赋初值同时进行。

#include <stdioh>

/ 定义枚举类型,同时声明该类型的三个变量,并赋初值。它们都为全局变量 /

enum DAY

{

    MON=1, 

    TUE,

    WED,

    THU,

    FRI,

    SAT,

    SUN 

}

yesterday = MON, today = TUE, tomorrow = WED;

/ 定义三个具有基本数据类型的变量,并赋初值。它们都为全局变量 /

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、对枚举型的变量赋整数值时,需要进行类型转换。

#include <stdioh>

enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };

void main()

{

    enum DAY yesterday, today, tomorrow;

    yesterday = TUE;

    today = (enum DAY) (yesterday + 1); //类型转换

    tomorrow = (enum DAY) 30; //类型转换

    //tomorrow = 3; //错误

    printf("%d %d %d \n", yesterday, today, tomorrow); //输出:2 3 30

}

3、使用枚举型变量

#include<stdioh>

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);

}

Private Sub Command1_Click()

 For i = 1 To 20

  For j = 1 To 33

   For k = 1 To 99 Step 2

    If i  5 + j  3 + k / 3 = 100 Then

      Text1Text = Text1Text & "公鸡:" & i & "只" & "母鸡:" & j & "只" & "小鸡:" & k & "只" & Chr(13) & Chr(10)

    End If

   Next

  Next

 Next

End Sub

文本框的MULTILING属性设为TRUE,SCROLLBARS属性设为2垂直。

以下为改进版

Private Sub Command1_Click()

 For i = 1 To 20

  For j = 1 To 33

    k = 100 - i  5 - j  3

    If k >= 0 And k Mod 3 = 0 Then

      Text1Text = Text1Text & "公鸡:" & i & "只" & "母鸡:" & j & "只" & "小鸡:" & k & "只" & Chr(13) & Chr(10)

    End If

  Next

 Next

End Sub

Private Sub Command1_Click()

Dim c As Integer, n As Integer, j As Integer

c = 0

j = 0

Do While j < 100

n = 25006 + j  10

If n Mod 37 = 0 Or n Mod 67 = 0 Then

c = c + 1

List1AddItem "第" & Str(c) & " 数字是" & Str(n)

Else

End If

j = j + 1

Loop

List1AddItem Str(c)

End Sub

最后的结果

虽然帖子很久了但是,还是补充个完整的

那个限制的策略到底是什么

也就是限制的数据是怎么得来的

如果知道这个的话

写一个枚举算法的程序就行了

枚举这10个数据所有的组合情况

总的组数为 (C2/10)(C2/8)(C2/6)(C2/4)

一点也不大

然后把每组组合按照条件所要求的限制数据判断一下

如果全都成立 就可以输出

否则就继续下一组

for i=2 to 1000

s=0

for j=2 to i-1

if i mod j=0 then

s=s+1

end if

next j

if s=o then

print i

end if

next i

利用计数器,如果I有约数,那么S的数值将会等于I的约数的个数,若S=0,则说明I没有约数,即,I是素数,然后输出I

你的程序:FOR是循环结构,默认步长为1,就不用I=I+1了,直接使用NEXT I,这才是VB的正确语言

枚举法:

求解百钱买百鸡问题:我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

迭代法:

不使用数组,输入一个50以内的正整数,求解菲波那契数列的前n项。最前2项为1,1。

以上就是关于c语言枚举用法全部的内容,包括:c语言枚举用法、vb中如何算百元买百鸡问题详解、枚举算法,VB表达式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10640894.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存