|
发表于 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的子语句, 所以不执行了.
|
|