搜索
查看: 1834|回复: 27
打印 上一主题 下一主题

代码错了?

[复制链接]
跳转到指定楼层
楼主
发表于 2014-3-11 17:27:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#include <stdio.h>
#include <stdlib.h>
#ifndef  _WIN32
#include <unistd.h>
#endif // _WIN32
#include <windows.h>
int main()
{
    int a,b,sum;
    sum=100;
    srand((unsigned)time(NULL));
    a=rand()%100;
    while(1)
        {
            sum--;
            scanf("%d",&b);
                   if(b>a)
            printf("大了,还剩下%d次机会,请继续\n",sum);
                  if(b<a)
            printf("小了,还剩下%d次机会,请继续\n",sum);
                   if(b==a)
              {
                           printf("恭喜你,答对了!\n");
                   }
                   if(sum==0)
                   {
                            printf("已经没有机会了,系统将在20秒内关机!\n");
                            system("shutdown -s -t 10")
                            break;
                }
        }
system("pause")        
return 0;
}


搜狗截图20140217165722.png (6.25 KB, 下载次数: 2)

搜狗截图20140217165722.png

最佳答案

查看完整内容

完整的代码如下 #include #include #include int main() { int a,b,sum; sum=100; srand((unsigned)time(NULL)); a=rand()%100; while(1) { sum--; scanf("%d",&b); if(b>a) printf("大了,还剩下%d次机会,请继续\n",sum); if(b
楼主新帖
楼主热帖
沙发
发表于 2014-3-11 17:27:55 | 只看该作者
本帖最后由 1935515130 于 2014-3-14 21:13 编辑

完整的代码如下
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
    int a,b,sum;
    sum=100;
    srand((unsigned)time(NULL));
    a=rand()%100;
    while(1)
        {
            sum--;
            scanf("%d",&b);
                   if(b>a)
            printf("大了,还剩下%d次机会,请继续\n",sum);
                  if(b<a)
            printf("小了,还剩下%d次机会,请继续\n",sum);
                   if(b==a)
              {
                           printf("恭喜你,答对了!\n");                           system("shutdown -s -t 50");
                   }
                   if(sum==0)
                   {
                            printf("已经没有机会了,系统将在20秒内关机!\n");
                            system("shutdown -s -t 10");
                            break;
                }
        }
system("pause");        
return 0;
}

点评

楼主也太粗心了吧  发表于 2014-3-14 21:13
oh,我明白了。这个是我从上面复制下来的,少了一个取消关机的指令。  发表于 2014-3-14 21:11
请高人指点  发表于 2014-3-14 21:07
这个代码不完整吧~~~看这句 printf("恭喜你,答对了!\n"); 是不是少了点什么~~?  发表于 2014-3-14 20:31
板凳
 楼主| 发表于 2014-3-11 17:30:11 | 只看该作者
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #ifndef  _WIN32
  4. #include <unistd.h>
  5. #endif // _WIN32
  6. #include <windows.h>
  7. int main()
  8. {
  9.     int a,b,sum;
  10.     sum=100;
  11.     srand((unsigned)time(NULL));
  12.     a=rand()%100;
  13.     while(1)
  14.         {
  15.             sum--;
  16.             scanf("%d",&b);
  17.                    if(b>a)
  18.             printf("大了,还剩下%d次机会,请继续\n",sum);
  19.                   if(b<a)
  20.             printf("小了,还剩下%d次机会,请继续\n",sum);
  21.                    if(b==a)
  22.               {
  23.                            printf("恭喜你,答对了!\n");
  24.                    }
  25.                    if(sum==0)
  26.                    {
  27.                             printf("已经没有机会了,系统将在20秒内关机!\n");
  28.                             system("shutdown -s -t 10")
  29.                             break;
  30.                 }
  31.         }
  32. system("pause")        
  33. return 0;
  34. }
复制代码




错了???
地板
发表于 2014-3-11 19:27:00 | 只看该作者
system("pause")     后面少了个分号

另外最上面的条件编译不要随便去抄,给别人代码前把危险语句先注释掉
5#
 楼主| 发表于 2014-3-11 21:51:09 | 只看该作者
哪些是危险语句?
6#
发表于 2014-3-11 22:10:45 | 只看该作者
本帖最后由 李掌柜 于 2014-3-12 18:28 编辑
葛奕成 发表于 2014-3-11 21:51
哪些是危险语句?
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. //#ifndef  _WIN32   //不是写窗口程序,这句也要注释掉
  4. #include <unistd.h>
  5. //#endif  _WIN32     ////不是写窗口程序,这句也要注释掉
  6. #include <windows.h>
  7. int main()
  8. {
  9.     int a,b,sum;
  10.     sum=100;
  11.     srand((unsigned)time(NULL));
  12.     a=rand()%100;
  13.     while(1)
  14.         {
  15.             sum--;
  16.             scanf("%d",&b);
  17.                    if(b>a)
  18.             printf("大了,还剩下%d次机会,请继续\n",sum);
  19.                   if(b<a)
  20.             printf("小了,还剩下%d次机会,请继续\n",sum);
  21.                    if(b==a)
  22.               {
  23.                            printf("恭喜你,答对了!\n");
  24.                            break;
  25.                    }
  26.                    if(sum==0)
  27.                    {
  28.                             printf("已经没有机会了,系统将在20秒内关机!\n");
  29.                             system("shutdown -s -t 10");   //这句很危险呢~~
  30.                             break;
  31.                 }
  32.         }
  33. system("pause");        
  34. return 0;
  35. }
复制代码
7#
发表于 2014-3-11 22:35:26 | 只看该作者
葛奕成 发表于 2014-3-11 21:51
哪些是危险语句?

那句关机的
这样代码直接交给别人是不合适的
8#
发表于 2014-3-12 17:28:02 | 只看该作者
额 shutdown -s -t 10 确实很危险
9#
 楼主| 发表于 2014-3-12 17:58:52 | 只看该作者
不过书上是这么写的:
  1. system("shutdown -s -t 50")
复制代码

点评

书上这句是错误的,少写了个分号  发表于 2014-3-12 18:25
10#
 楼主| 发表于 2014-3-12 18:02:14 | 只看该作者
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <windows.h>
  5. int main()
  6. {
  7.     int a,b,sum;
  8.     sum=100;
  9.     srand((unsigned)time(NULL));
  10.     a=rand()%100;
  11.     while(1)
  12.         {
  13.             sum--;
  14.             scanf("%d",&b);
  15.                    if(b>a)
  16.             printf("大了,还剩下%d次机会,请继续\n",sum);
  17.                   if(b<a)
  18.             printf("小了,还剩下%d次机会,请继续\n",sum);
  19.                    if(b==a)
  20.               {
  21.                            printf("恭喜你,答对了!\n");
  22.                    }
  23.                    if(sum==0)
  24.                    {
  25.                             printf("已经没有机会了,系统将在60秒内关机!\n");
  26.                             system("shutdown -s -t 50")
  27.                             break;
  28.                 }
  29.         }
  30. system("pause");        
  31. return 0;
  32. }
复制代码

改了还错!!!

点评

晕死,我第一次也没看出来~~!  发表于 2014-3-12 18:29
11#
发表于 2014-3-12 18:24:36 | 只看该作者
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <windows.h>
  5. int main()
  6. {
  7.     int a,b,sum;
  8.     sum=100;
  9.     srand((unsigned)time(NULL));
  10.     a=rand()%100;
  11.     while(1)
  12.         {
  13.             sum--;
  14.             scanf("%d",&b);
  15.                    if(b>a)
  16.             printf("大了,还剩下%d次机会,请继续\n",sum);
  17.                   if(b<a)
  18.             printf("小了,还剩下%d次机会,请继续\n",sum);
  19.             if(b==a)
  20.             {
  21.                 printf("恭喜你,答对了!\n");
  22.                 break;    //少了break返回语句,就算你猜对了,程序还是在while里无法退出~~
  23.                 }
  24.             if(sum==0)
  25.             {
  26.                 printf("已经没有机会了,系统将在60秒内关机!\n");
  27.                 system("shutdown -s -t 50");//这个分号,你又掉了~~
  28.                 break;
  29.                 }
  30.         }
  31. system("pause");        
  32. return 0;
  33. }
复制代码
12#
发表于 2014-3-12 18:54:04 | 只看该作者

这段可以编译
不知道你说错是指什么?你要的是什么效果?

#include <windows.h>
#include <unistd.h>
这两个头文件原则上不应该同时包含,不要抄别人代码里你看不懂的部分
但是在ahaC里似乎没有问题

另外再说一遍,贴代码的时候把system("shutdown... ") 注释掉
别人给你试验代码的时候不小心就会被强制关机,就有丢文件的危险
13#
发表于 2014-3-12 21:59:56 | 只看该作者
rosynirvana 发表于 2014-3-12 18:54
这段可以编译
不知道你说错是指什么?你要的是什么效果?

   代码段这有个很明显的BUG;           
              if(b==a)
              {
                           printf("恭喜你,答对了!\n");
               }

少了break;语句就算编译通过也无法正常退出~~
14#
发表于 2014-3-14 19:13:58 | 只看该作者
楼主,太粗心了。这个头文件“#ifndef  _WIN32 #include <unistd.h> #endif // _WIN32”可以删去。而且,少了两个分号
15#
发表于 2014-3-14 20:12:35 | 只看该作者
正确的调整平台问题的处理应是这样的(个人认为新手不需要了解这些):
  1. #ifndef _W32//若处理的不是Windows环境
  2. #include <unistd.h>//是UNIX或类UNIX(如Linux)环境,需要包含unistd
  3. #else
  4. #include <windows.h>//是Windows环境
  5. #endif
复制代码
  1. #ifdef _W32//是Windows
  2. system("pause");//system("pause");只在Windows上可用
  3. #else//非Windows
  4. printf("Press any key to continue...");
  5. getch();//因为使用了这条语句,所以需要包含unistd.h
  6. #endif
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表