广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 6924 个阅读者
 
<<   1   2  下页 >>(共 2 页)
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
csr
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x0 鲜花 x898
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[C/C++][求助] 为何生肖可以执行而星座不能
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
int y;

printf("请输入出生年:");
scanf("%d",&y);

if(y%12==1){
printf("生肖:鼠\n");
}
else if(y%12==2){
printf("生肖:牛\n");
}
else if(y%12==3){
printf("生肖:虎\n");
}
else if(y%12==4){
printf("生肖:兔\n");
}
else if(y%12==5){
printf("生肖:龙\n");
}
else if(y%12==6){
printf("生肖:蛇\n");
}
else if(y%12==7){
printf("生肖:马\n");
}
else if(y%12==8){
printf("生肖:羊\n");
}
else if(y%12==9){
printf("生肖:猴\n");
}
else if(y%12==10){
printf("生肖:鸡\n");
}
else if(y%12==11){
printf("生肖:狗\n" ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容




献花 x0 回到顶端 [楼 主] From:台湾中华电信股份有限公司 | Posted:2011-07-07 22:31 |
ebolaman 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖

级别: 副版主 该用户目前不上站
版区: 程式设计
推文 x38 鲜花 x458
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

>> 星座表 <<


我真是佩服你一个一个慢慢打,然而

我并没有发现有什么奇怪的错误,不能执行之类的

你所提供的程式码 运行一切 OK。


不能执行的解释是? 输入的 "月" 和 "日" 与 结果不符吗? 那就是你输入的格式打错了,正确的例如:

12 21

还是其他? 请详细说明



另外我忽然也想要练习一下 C++,这是仿造你的程式码打出来的

主要功能一模一样,但是更简化,可以参考



复制程式
#include<stdio.h>
#include<stdlib.h>

/*----- Prototype -----*/
char* get_str(char*, int, int);
int check_range(int*, int);
/*_____________________*/ 

/*----- Variables -----*/
char* tempc;
/*_____________________*/



int main()
{ 
  /*----- Variables -----*/
  char* str_year;  //Year
  char* str_cnstl; //Constellation
  
  int input[3];
  
  int i;
  /*_____________________*/
  
  
  /*--- Set up strings for displaying ---*/
  //str_year=(char*)malloc((2+1)*(12)*sizeof(char));
  //str_cnstl=(char*)malloc((4+1)*(12)*sizeof(char));
  
  str_year="鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪";
  str_cnstl="水瓶,双鱼,牧羊,金牛,双子,巨蟹,狮子,处女,天秤,天蝎,射手,摩羯";
  /*_____________________________________*/
  
  
  /*--- Retrieve data from user ---*/
  printf("请输入出生的 年/月/日 :\n");
  printf("例 : 2012/12/21\n>");
  scanf("%d/%d/%d",&input[0],&input[1],&input[2]);
  /*_______________________________*/
  
  
  /*--- Determine the range ---*/
  
  //Year
  printf("生肖: %s\n", get_str(str_year, 2, ((input[0]-1911)%12-1) ));
  free(tempc);
  
  //Constellation
  for (i=0; i<12; ++i)
    if (check_range(input, i)==1)
    {
      printf("星座: %s座\n", get_str(str_cnstl, 4, i ));
      free(tempc);
      break;
    }
  
  if (i==12)
    printf("日期好像打错了,无法判断星座\n");
  
  printf("\n");
  
  /*___________________________*/
  
  
  
  /*--- Free memories ---*/
  //free(str_year);
  //free(str_cnstl);
  /*_____________________*/
  
  
  system("pause");
  return 0;
} 


char* get_str(char* str, int symb_len, int ind)
{
  int i=0;
  
  tempc=(char*)malloc((symb_len+1)*sizeof(char));
  
    for (i=0; i<symb_len; ++i)
      tempc[i]=str[ind*(symb_len+1)+i];
    
    tempc[i]='\0';
  
  return tempc;
}


int check_range(int* input, int ind)
{
    
    int range [2][12][2]={{1,20, 2,19, 3,21, 4,20, 5,21, 6,22, 7,23, 8,23,  9,23, 10,24, 11,23, 12,22},
                          {2,18, 3,20, 4,19, 5,20, 6,21, 7,22, 8,22, 9,22, 10,23, 11,22, 12,21,  1,19}};
    int daymax;
    int arr_daymax[12][2]={1,31, 2,28, 3,31, 4,30, 5,31, 6,30, 7,31, 8,31,  9,30, 10,31, 11,30, 12,31};
    
    //Read daymax
    daymax=arr_daymax[input[1]-1][1];
    
    //Exception
    if (input[1]==2)
      if((input[0]%4)==0 && (input[0]%100)!=0 || (input[0]%400) ==0)
        daymax=29;
    
    //Main part
    if (input[1]>=range[0][ind][0] && input[1]<=range[1][ind][0] )
      if (input[1]==range[0][ind][0] && input[2]>=range[0][ind][1] || input[1]==range[1][ind][0] && input[2]<=range[1][ind][1])
        if (input[2]>=1 && input[2]<=daymax)
          return 1;

}



[ 此文章被ebolaman在2011-07-10 21:06重新编辑 ]

此文章被评分,最近评分记录
财富:50 (by 三仙) | 理由: ^^ 因为您的参与,让程式设计更容易!!


My BOINC stats :

献花 x4 回到顶端 [1 楼] From:台湾宽频通讯顾问股份有限公司 | Posted:2011-07-08 00:56 |
三仙 会员卡
个人头像
个人文章 个人相簿 个人日记 个人地图
头衔:以马内利 以马内利
版主
级别: 版主 该用户目前不上站
版区: 程式设计
推文 x17 鲜花 x370
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

楼主 表情 你忘了交待一下你的写作环境了


挖出答案的难度,取决提问的深度!
献花 x1 回到顶端 [2 楼] From:台湾中华电信股份有限公司 | Posted:2011-07-08 07:56 |
csr
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x0 鲜花 x898
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 三仙 于 2011-07-08 07:56 发表的 : 到引言文
楼主 表情 你忘了交待一下你的写作环境了


以上是小弟用dev c++ compiler
而debug也都ok
但是星座就是不出来
是否小弟那里打错
请大大指正
谢谢

版大
谢谢
小弟找到错误的地方了
else if(m==6&&d>=22&&d<=30||m==7&&d>=1&&d<=22)
  {
    printf("星座:巨蟹座\n");
红色部份打错了
所以从一月到六月都可以就是七月出问题
然后八月以后也可以
所以仔细看了以后
才发现> 及<打错了
谢谢版大


[ 此文章被csr在2011-07-08 22:00重新编辑 ]


献花 x0 回到顶端 [3 楼] From:台湾中华电信股份有限公司 | Posted:2011-07-08 21:30 |
csr
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x0 鲜花 x898
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 ebolaman 于 2011-07-08 00:56 发表的 : 到引言文
>> 星座表 <<

我真是佩服你一个一个慢慢打,然而
我并没有发现有什么奇怪的错误,不能执行之类的
你所提供的程式码 运行一切 OK。
.......
大大你好
小弟看了你写的程式
真是佩服
小弟能力还没到这样的功力
只能把大大的程式下载来研究
希望有朝一日也可与大大比较
谢谢


献花 x0 回到顶端 [4 楼] From:台湾中华电信股份有限公司 | Posted:2011-07-08 21:44 |
csr
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x0 鲜花 x898
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 于 1970-01-01 07:00 发表的 : 到引言文
大大
很凑巧
可能在同一时间
大大跟小弟都会心一笑
真的是世上无奇有
小弟的无心错误特别多
真的谢谢你
不过真的小弟对于大大的程式还真似懂非懂
要好好研究一下资料结构系列
希望能在大大后面慢慢追
谢谢


献花 x0 回到顶端 [5 楼] From:台湾中华电信股份有限公司 | Posted:2011-07-08 22:14 |
ebolaman 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖

级别: 副版主 该用户目前不上站
版区: 程式设计
推文 x38 鲜花 x458
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 csr 于 2011-07-08 22:14 发表的 : 到引言文

大大
很凑巧
可能在同一时间
大大跟小弟都会心一笑
真的是世上无奇有
小弟的无心错误特别多
真的谢谢你
不过真的小弟对于大大的程式还真似懂非懂
要好好研究一下资料结构系列
希望能在大大后面慢慢追
谢谢

凑巧也过了头,还真的是蛮神奇的

老实说,暑假前我根本不知道 C++ 的资料结构
我只是 细心玩味地 读完了 "一本" C语言的书而已
大家都是要互相学习的,没有你这个提问,我也不会开始重视 "日期" 格式的侦测

地球在转,我们一起前进。


My BOINC stats :

献花 x0 回到顶端 [6 楼] From:台湾宽频通讯顾问股份有限公司 | Posted:2011-07-08 23:22 |
csr
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x0 鲜花 x898
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 ebolaman 于 2011-07-08 23:22 发表的 : 到引言文


凑巧也过了头,还真的是蛮神奇的

老实说,暑假前我根本不知道 C++ 的资料结构
我只是 细心玩味地 读完了 "一本" C语言的书而已
大家都是要互相学习的,没有你这个提问,我也不会开始重视 "日期" 格式的侦测

地球在转,我们一起前进。
大大
感恩您的勉励
下次有机会
恐怕还要向您指教
谢谢


献花 x0 回到顶端 [7 楼] From:台湾中华电信股份有限公司 | Posted:2011-07-09 14:58 |
星辰雪
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x82
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 ebolaman 于 2011-07-08 00:56 发表的 : 到引言文
>> 星座表 <<

我真是佩服你一个一个慢慢打,然而
我并没有发现有什么奇怪的错误,不能执行之类的
你所提供的程式码 运行一切 OK。
.......

请问一下 我有一些疑问
str_year=(char*)malloc((2+1)*(12)*2*sizeof(char));
str_cnstl=(char*)malloc((4+1)*(12)*2*sizeof(char));

-----------以上这两行我不太懂 这两行的意思
可以解释一下吗


「在现实孤独而痛苦的我啊,跟随着她走吧!因为你就像是落叶,毫无目的的落下,而她是只属于你的那阵风,将带你的心飞向自由。」
献花 x0 回到顶端 [8 楼] From:台湾中华电信股份有限公司 | Posted:2011-07-09 21:57 |
ebolaman 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖

级别: 副版主 该用户目前不上站
版区: 程式设计
推文 x38 鲜花 x458
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 星辰雪 于 2011-07-09 21:57 发表的 : 到引言文


请问一下 我有一些疑问
str_year=(char*)malloc((2+1)*(12)*2*sizeof(char));
str_cnstl=(char*)malloc((4+1)*(12)*2*sizeof(char));

-----------以上这两行我不太懂 这两行的意思
可以解释一下吗


malloc 是动态分配的函数,其实我也不是很懂,当初是在书中看到

主要好像是用在 未知的长度 要分配记忆体使用的

但此处既然 鼠、牛、虎...的长度是确定的,那两行其实删除应该会比较好



感觉就像是 malloc 请求 "额外的" 免费记忆体

然后用指标函数指定 对着这个位置,然后我们就能用 ptr[N] 或 *(ptr+N) 等方式去存取

但是你应该注意到了 函数 get_str 那里面也有用 malloc 现在想起来我没有用 free 函数把他归还,会造成 memory leak 不太好





My BOINC stats :

献花 x1 回到顶端 [9 楼] From:台湾宽频通讯顾问股份有限公司 | Posted:2011-07-10 09:50 |

<<   1   2  下页 >>(共 2 页)
首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.015197 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言