| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 877 人关注过本帖
标题:[求助]一道关于枚举类型的题[以完成]
只看楼主 加入收藏
friskyliu
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-3-7
收藏
 问题点数:0 回复次数:7 
[求助]一道关于枚举类型的题[以完成]
定义一个枚举类型WeekdayT,其元素表示每一天。写两函数NextDay和PreviousDay,这两函数都以WeekdayT类型为参数,分别返回参数后一天和前一天。再写一个函数IncrementDay(startDay,delta)从startDay这天开始delta天后的星期天。例如,IncrementDay(Thur,4)返回Mon。而且要考虑到delta的负值。


枚举类型不怎么了解,不知道从什么地方入手

希望各位高手在下面能帮结构,关于枚举的函数原型,定义,声明写出来。

[此贴子已经被作者于2007-3-8 14:02:40编辑过]

搜索更多相关主题的帖子: 类型 枚举 delta 函数 定义 
2007-03-08 11:48
friskyliu
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-3-7
收藏
得分:0 

自己写了个简单的函数,想测试一下枚举的用法,半天还是没有任何的头绪,高手帮忙解答!!
#include<stdio.h>

enum WeekdayT Nextday( enum WeekdayT w);

int main()
{
enum WeekdayT{Sun,Mon , Thu ,Wed ,Thur ,Fri, Sat };
enum WeekdayT w;

w = Sun;
NextDay(w);
return 0;
}

enum WeekdayT NextDay(enum WeekdayT w)
{
if(w == Sat)
return Sun;
else return w+1;
}
================================
--------------------Configuration: 5 - Win32 Debug--------------------
Compiling...
data.c
D:\MyProjects\C\5\data.c(11) : warning C4013: 'NextDay' undefined; assuming extern returning int
D:\MyProjects\C\5\data.c(17) : error C2065: 'Sat' : undeclared identifier
D:\MyProjects\C\5\data.c(18) : error C2065: 'Sun' : undeclared identifier
Error executing cl.exe.

data.obj - 2 error(s), 1 warning(s)

[此贴子已经被作者于2007-3-8 12:48:24编辑过]

2007-03-08 12:46
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 

#include<stdio.h>
enum WeekdayT {Sun,Mon,Thu,Wed,Thur,Fri,Sat};
enum WeekdayT NextDay(enum WeekdayT w)
{
if(w == Sat)
return Sun;
else return w+1;
}
int main()
{ enum WeekdayT w;
w=Sun;
NextDay(w);
return 0;
}


 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-03-08 13:08
friskyliu
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-3-7
收藏
得分:0 
回复:(I喜欢c)#includeenum Weekd...
谢谢
2007-03-08 13:13
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
以下是引用friskyliu在2007-3-8 12:46:18的发言:

自己写了个简单的函数,想测试一下枚举的用法,半天还是没有任何的头绪,高手帮忙解答!!
#include<stdio.h>
enum WeekdayT{Sun,Mon , Thu ,Wed ,Thur ,Fri, Sat }; //全局变量
enum WeekdayT NextDay(enum WeekdayT w); // 这你的书写好象有问题;但
我没看出来,我重输了一遍就对了;

int main()
{
enum WeekdayT w;
w = Sun;
NextDay(w);
return 0;
}

enum WeekdayT NextDay(enum WeekdayT w)
{
if(w == Sat)
return Sun;
else return w+1;
}


================================
--------------------Configuration: 5 - Win32 Debug--------------------
Compiling...
data.c
D:\MyProjects\C\5\data.c(11) : warning C4013: 'NextDay' undefined; assuming extern returning int
D:\MyProjects\C\5\data.c(17) : error C2065: 'Sat' : undeclared identifier
D:\MyProjects\C\5\data.c(18) : error C2065: 'Sun' : undeclared identifier
Error executing cl.exe.

data.obj - 2 error(s), 1 warning(s)



 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-03-08 13:14
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
以下是引用friskyliu在2007-3-8 13:13:40的发言:
谢谢



共同学习....


 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-03-08 13:15
friskyliu
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-3-7
收藏
得分:0 
回复:(I喜欢c)以下是引用friskyliu在2007-3-8 13:...

一样 一样
不过刚开始学C 先把一些基本问题搞清楚 再慢慢的向后发展

再问一句 是不是枚举类型要输出 一般都要用switch()语句啊? 有简单的方法吗?

[此贴子已经被作者于2007-3-8 13:53:13编辑过]

2007-03-08 13:28
friskyliu
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-3-7
收藏
得分:0 

#include<stdio.h>

enum WeekdayT {Sun,Mon,Thu,Wed,Thur,Fri,Sat};

enum WeekdayT GetDay();
enum WeekdayT NextDay(enum WeekdayT w);
enum WeekdayT PreviousDay(enum WeekdayT x);
enum WeekdayT IncrementDay(enum WeekdayT y ,int z);
void PrintDay(enum WeekdayT d);

int main()
{ enum WeekdayT w;
int n;
w=GetDay();
printf("输入你想跳跃的天数:");
scanf("%d",&n);

printf("这天的后一天是:");
PrintDay(NextDay(w));

printf("这天的前一天是:");
PrintDay(PreviousDay(w));

printf("跳跃后的那天是:");
PrintDay(IncrementDay(w,n));

return 0;
}

enum WeekdayT GetDay()
{
int a;
printf("输入你想查看的星期:\nSun:0,Mon:1,Thu:2,Wed:3,Thur:4,Fri:5,Sat:6\n");
scanf("%d",&a);
return (enum WeekdayT)a;
}

enum WeekdayT NextDay(enum WeekdayT w)
{
if(w == Sat)
return Sun;
else return w+1;
}

enum WeekdayT PreviousDay(enum WeekdayT x)
{
if(x == Sun)
return Sat;

return x-1;
}

enum WeekdayT IncrementDay(enum WeekdayT y ,int z)
{
if(z < 0)
return (7*100 + y + z)%7;

return (y+z)%7;
}

void PrintDay(enum WeekdayT d)
{
switch(d){
case Sun:
printf("Sun\n");
break;

case Mon:
printf("Mon\n");
break;
case Thu:
printf("Thu\n");
break;
case Wed:
printf("Wed\n");
break;
case Thur:
printf("Thur\n");
break;
case Fri:
printf("Fri\n");
break;
case Sat:
printf("Sat\n");
break;
default:
printf("Error\n");
break;
}
}

2007-03-08 14:03
快速回复:[求助]一道关于枚举类型的题[以完成]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017788 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved