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