标题:求C语言高手解答,万分感谢!!!
只看楼主
菜椒
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-3-14
结帖率:0
已结贴  问题点数:20 回复次数:5 
求C语言高手解答,万分感谢!!!
刚学C不久。自己编了个简单的程序。虽然调试后运行成功了。不过有个问题没弄明白,请高手解答一下。
程序如下:
#include "string.h"
#include "stdio.h"
#include "time.h"
void main()
{
  char MING[10]=" ",TC[10]="海水",TCHU[10]="end",CXM[10]="空气";
  int i;
  int a,b,d,c;
  printf("\nEnter your characters:");  
  scanf("%s",MING);
  a=strcmp(MING,TC);
  d=strcmp(MING,CXM);
  b=strcmp(MING,TCHU);
  if (a==0)
      printf("海");
  else if(d==0)
      printf("气");
  else ;
1. if(b==0)    return 0;   
      srand( (unsigned)time(0) );   
  if (a!=0 && b!=0 && d!=0) c=rand()%10+1;  
  if (c<=3 && c!=0) printf("春天");
  if (c>3 && c<=6 && c!=0) printf("夏天");
  if (c>6 && c<=9 && c!=0) printf("秋天");
  if (c==10 && c!=0) printf("冬天");
2.  if(b==0)    return 0;   
  return main();
}
请问红色的if语句为什么只能放在1的位置,不能放在2那里。谢谢!
搜索更多相关主题的帖子: void include C语言 
2013-03-14 12:45
tompobing
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:260
专家分:809
注 册:2012-12-9
得分:7 
你的程序编译好多错误,我改了下,编译通过了,楼主看看符合你的要求吗
#include <string.h>
 #include <stdio.h>
 #include <time.h>
#include <stdlib.h>
 int main()
 {
   char MING[10]=" ",TC[10]="海水",TCHU[10]="end",CXM[10]="空气";
   int i;
   int a,b,d,c;
   printf("\nEnter your characters:");  
   scanf("%s",MING);
   a=strcmp(MING,TC);
   d=strcmp(MING,CXM);
   b=strcmp(MING,TCHU);
   if (a==0)
       printf("海");
   else if(d==0)
       printf("气");
   else ;
  if(b==0)    return 0;   
         srand((unsigned) time(NULL));   
  if (a!=0 && b!=0 && d!=0) c=rand()%10+1;  
   if (c<=3 && c!=0) printf("春天");
   if (c>3 && c<=6 && c!=0) printf("夏天");
   if (c>6 && c<=9 && c!=0) printf("秋天");
   if (c==10 && c!=0) printf("冬天");

 }
2013-03-14 13:38
菜椒
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-3-14
得分:0 
回复 2楼 tompobing
感谢你的解答!
请问如果把if(b==0)    return 0;这一句放在最后面可以吗?谢谢!
2013-03-14 15:43
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
得分:7 
如果是定义的全局变量或者静态变量,未初始化的话就是0.如果是局部变量,那就是以前残留在堆栈里的随机值。
上面这句是拷百度知道的一个回答。
如果把if(b==0)    return 0;这一句放在最后面那么当你输入end的时候,b=0;c就不能通过rand得到随机数,
而c因为是局部变量,所以它的值是不确定的,什么情况都可能发生。
所以,还是把if(b==0)    return 0;放到上面吧,这样你输入end的时候就会返回,就不会因为c的不确定而得到不确定的结果了。
2013-03-15 00:44
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
得分:7 
看你什么时候结束main了,这样用递归调用main?不用循环?

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-03-15 06:48
tompobing
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:260
专家分:809
注 册:2012-12-9
得分:0 
楼主自己试试不就知道了,不要什么都问,自己多试试多想想就OK了
2013-03-21 15:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-400743-1-1.html




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

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