gaowei 发表于 2012-8-17 14:33:14

呵呵 这样啊

(^_^)流行主教— 发表于 2012-8-17 14:48:08

那个“别人”是郝斌吗?

颓废的青春 发表于 2012-8-17 16:57:54

本帖最后由 颓废的青春 于 2012-8-17 22:44 编辑

冰封绝恋 发表于 2012-8-17 12:45 http://bbs.fishc.com/static/image/common/back.gif
我知道有错误——我按1后他运行自动关机命令,但1秒钟后就自动取消了自动关机命令!

帮你改了下错误,正确代码如下:
#include <stdio.h>
#include <stdlib.h>

void main()
{

      int a;
      printf("按1后30分钟关机\n");
      printf("按2后45分钟关机\n");
      printf("按3后1小时关机\n");
      printf("按4键后取消关机命令(注意:要按有关机命令才能用)\n");

      printf("请选择:");

    scanf("%d",&a);

      if( a==1 )
      {
                system("shutdown -s -t 1800");
      }
      else if( a==2 )
      {
                system("shutdown -s -t 2700");
      }
      else if( a==3 )
      {
                system("shutdown -s -t 3600");
      }
      else   //这里什么都不用加,其含义是:剩下所用情况
      {
                system("shutdown -a");      /*就是这个取消关机命令*/
      }
}

冰封绝恋 发表于 2012-8-17 17:31:39

那我就谢谢大家了,非常感谢大家对我的帮助!{:5_106:}

冰封绝恋 发表于 2012-8-17 17:41:22

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>

void main()
{
       
        int a=1, b=2, c=3, d=4;
        printf("按1后30分钟关机\n");
        printf("按2后45分钟关机\n");
        printf("按3后1小时关机\n");
        printf("按4键后取消关机命令(注意:要按有关机命令才能用)\n");
        printf("请选择:");

    scanf("%d",&a,&b,&c,&d);

        if( a == 1 )
        {
                system("shutdown -s -t 1800");
        }
        else if( b == 2 )
        {
                system("shutdown -s -t 2700");
        }
        else if( c == 3 )
        {
                system("shutdown -s -t 3600");
        }
        else
        {
                system("shutdown -a");
        }
}
程序又有问题了,问题还是老是运行最后的那个取消关机的命令!

冰封绝恋 发表于 2012-8-17 17:51:56

还有我的理解是int a=1,b=2, c=3, d=4中的=1234可以去掉,因为scanf等于为这几个字母赋入了输入值,我说的对吗?

zquchs 发表于 2012-8-17 17:52:46

这个问题没啥好研究的,直接给你改下代码#include <stdio.h>
#include <windows.h>
#include <stdlib.h>

void main()
{
       
        int a;
        char ch;

        printf("按1后30分钟关机\n");
        printf("按2后45分钟关机\n");
        printf("按3后1小时关机\n");
       
        printf("请选择:");
       
    scanf("%d",&a);
       
        switch(a)
        {
        case 1: system("shutdown -s -t 1800");
                break;
        case 2: system("shutdown -s -t 2700");
                break;
        case 3: system("shutdown -s -t 3600");
                break;


        }

        fflush(stdin);

loop:       
        printf("是否取消关机命令【Y/N】(注意:要按有关机命令才能用)\n");
        scanf("%c",&ch);
        if( ch == 'Y')
        {
                system("shutdown -a");      /*就是这个取消关机命令*/
        }
        else if( ch == 'N')
        {
                printf("你没选择关机哦!");
                fflush(stdin);
                goto loop;
        }
        else
        {
                printf("就是【Y/N】选一个都不会?重新选一次吧!\n");
                fflush(stdin);
                goto loop;
        }
       
       
}

閑庭信步 发表于 2012-8-17 18:03:10

c写的?吗?

閑庭信步 发表于 2012-8-17 18:05:29

没获得系统关机权限啊!怎么搞,正着急呢!有木有大牛指导一下{:1_1:}

向往 发表于 2012-8-17 18:24:30

本帖最后由 向往 于 2012-8-17 18:28 编辑

楼主你好!

18#楼的朋友也说了你这个程序存在严重的逻辑错误, 遗憾的是, 这位朋友并没有说到重点上.

我详细给你讲讲   【测试: 假如我输入的是 5 】


#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
void main()
{
      
      int a=1, b=2, c=3, d=4;   // 你这里定义了4个变量, 而且还分别赋值了, 但是, 完全没有必要这样做
      printf("按1后30分钟关机\n");
      printf("按2后45分钟关机\n");
      printf("按3后1小时关机\n");
      printf("按4键后取消关机命令(注意:要按有关机命令才能用)\n");

      printf("请选择:");
    scanf("%d",&a,&b,&c,&d); // scanf函数不能输入一个数, 同时给4个变量赋值, 也就是说, 输入的数字5, 只能改变第一个参数a的值, 后面的b c d还是原来的 2, 3, 4

      if( a == 1 )// 现在a的值是5了, 所以这个if语句不成立!
      {
                system("shutdown -s -t 1800");//不执行
      }
      else if( b == 2 ) // b还是原来的2, 这个if成立了
      {
                system("shutdown -s -t 2700"); // 被执行
      }
      else if( c == 3 ) // 这个else if 不执行, 这个else所对应的if(b==2), 已经成立, 所以就不执行了
      {
                system("shutdown -s -t 3600"); // 不执行
      }
      else // 这个else对应的if(c==3)都没有执行, 所以这个不执行
      {
                system("shutdown -a");//不执行
      }
}另外, 为什么if(c==3)是成立的, 但是不执行呢?
因为if(b==2)成立了, 后面的语句都是属于if(b==2)所对应的else的子语句, 所以不执行了.



向往 发表于 2012-8-17 18:27:59

冰封绝恋 发表于 2012-8-17 17:51 static/image/common/back.gif
还有我的理解是int a=1,b=2, c=3, d=4中的=1234可以去掉,因为scanf等于为这几个字母赋入了输入值,我说的对 ...

scanf函数不能只输入一个数, 就同时给4个变量赋值, 也就是说, 输入的数字5, 只能改变第一个参数a的值, 后面的b c d还是原来的 2, 3, 4

向往 发表于 2012-8-17 18:46:12


楼主, 鉴于你是初学者, 才学几天, 我给你改改, 改成你目前可以理解的

(估计你还没学switch语句吧, 这种情况下, 使用switch语句比if else方便多了)


#include <stdio.h>
#include <stdlib.h>

void main()
{

      int a; // 1个变量足够了, 且暂时不需要赋值

      printf("按1后30分钟关机\n");
      printf("按2后45分钟关机\n");
      printf("按3后1小时关机\n");
      printf("按4键后取消关机命令(注意:要按有关机命令才能用)\n");
      printf("请选择:");

                scanf("%d", &a); // 现在给 a 赋值

      if( a == 1 ) // 都使用a来判断
      {
                system("shutdown -s -t 1800");
      }
      else if( a == 2 )
      {
                system("shutdown -s -t 2700");
      }
      else if( a == 3 )
      {
                system("shutdown -s -t 3600");
      }
      else // 其实这种方法, 只要输入的数不是 1, 2, 3, 都会执行 取消关机的操作
      {
                system("shutdown -a");
      }
}

冰封绝恋 发表于 2012-8-17 20:09:23

向往 发表于 2012-8-17 18:46 static/image/common/back.gif
楼主, 鉴于你是初学者, 才学几天, 我给你改改, 改成你目前可以理解的

(估计你还没学switch语句吧, 这 ...

其实我把整个C都学完的了,但可能质量不怎么好,所以不怎么会编,还有,我之所以不用switch语句那是因为我的笔记有问题,所以我不选择switch语句

247289090 发表于 2012-8-17 21:13:46

为什么不直接用个while语句不就行了,..

loner 发表于 2012-8-17 21:58:23

zquchs 发表于 2012-8-17 01:57 static/image/common/back.gif
直接打开一个txt文件,输入shutdown -s -t 1800, 其中1800是秒,然后另存为一个bat格式的文件,以前经常用这 ...

好厉害~~学到了

颓废的青春 发表于 2012-8-17 22:15:00

冰封绝恋 发表于 2012-8-17 20:09 static/image/common/back.gif
其实我把整个C都学完的了,但可能质量不怎么好,所以不怎么会编,还有,我之所以不用switch语句那是因为我 ...

其实 switch...case 语句 看着比较明显,思路清晰(swith 语句不难的){:5_108:}

メ㊣逆ご帅☆ 发表于 2012-8-17 22:31:58

颓废的青春 发表于 2012-8-17 22:15 static/image/common/back.gif
其实 switch...case 语句 看着比较明显,思路清晰(swith 语句不难的)

你看一下你的程序,逻辑也错误了,scanf的值只放入一个d变量,你在if语句中却判断a,b,c变量
应该只判断d变量,不然就scanf存放入abcd四个变量,不过不环保不低碳,一片垃圾

颓废的青春 发表于 2012-8-17 22:42:44

本帖最后由 颓废的青春 于 2012-8-17 22:44 编辑

メ㊣逆ご帅☆ 发表于 2012-8-17 22:31 http://bbs.fishc.com/static/image/common/back.gif
你看一下你的程序,逻辑也错误了,scanf的值只放入一个d变量,你在if语句中却判断a,b,c变量
应该只判断d ...

不好意思,那个确实错了,谢谢提醒{:5_109:}

颓废的青春 发表于 2012-8-17 22:47:33

メ㊣逆ご帅☆ 发表于 2012-8-17 22:31 static/image/common/back.gif
你看一下你的程序,逻辑也错误了,scanf的值只放入一个d变量,你在if语句中却判断a,b,c变量
应该只判断d ...

我的意思是 我原来那个用switch 写的

天长地久 发表于 2012-8-17 23:14:46

看出了错误,吸收的经验!:lol:lol
页: 1 [2] 3
查看完整版本: 这是我在别人的自动关机源代码那得来的灵感