
实例将枚举类型的赋值与基本数据类型的赋值进行了对比:
方法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表达式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)