首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

出错了请求帮忙?解决思路

2012-02-16 
出错了请求帮忙?main(){enumbody{a,b,c,d}month[31],jintijafor(i1i 30i++){month[i]jj++if(j

出错了请求帮忙?
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   (j> d)   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 ");
}

 
出错如下:Assigning   int   to   body
请教问题出在哪了?我是用TC++编译的

[解决办法]
#include <stdio.h>

enum body {
a,b,c,d
}month[31], j;
void main() {
int i;
j=a;
for(i=1;i <=30;i++){
month[i]=j;
j = (body)(j + 1);
if (j> d) 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;
}
}
}


改了一下试试看
[解决办法]
enum body{a,b,c,d}month[31],j; //楼上说的空格可以不写的
上面的一行等价于下面几行
enum body {a,b,c,d}; //定义一种枚举类型,它只有四个符号常量的取值范围
enum body j; //定义一个枚举变量, j=a; j=b; j=c; j=d; 不可以再赋其它字面值
body month[31]; //定义一个枚举数组,相当于定义了31个连续存放的变量j

在旧的C语言中枚举类型和整形可以进行隐式转换,在C++中只允许进行显式转换.
执行 j++; 时变量j先提升为整型才能进行算术运算,自增后又转换为枚举类型赋回变量j
详见 wb_am(小白) 修改的代码 j = (body)(j + 1);

热点排行