首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 一段程序在win2003和Vista上运行结果不一样,怎么回事
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • nmhfyj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-21 17:23:50 楼主
    写了一个很简单很简单的小程序,想便利一下自己的工作。代码如下:
    -------------------------------------------------------------------
    #include <stdio.h>
    #include <stdlib.h>

    main()
    {
          int program_select;
          printf("--------------------------------------------\n");
          printf("|                                          |\n");
          printf("|            自定义程序集成器            |\n");
          printf("|                Ver:1.0                |\n");
          printf("|                                          |\n");
          printf("--------------------------------------------\n");
         
          printf("\t\t(1) 计算器\n");
          printf("\t\t(2) 记事本\n");
          printf("\t\t(3) 远程桌面连接\n");
          printf("\t\t(4) 后台服务管理器\n");
          printf("\t\t(5) 显示当前日期\n");
          printf("请打开您想要的程序: ");
          scanf("%d",&program_select);

          switch (program_select)
          {
                case 1:
                      system("calc.exe");
                      break;
                case 2:
                      system("notepad.exe");
                      break;
                case 3:
                      system("mstsc.exe");
                      break;
                case 4:
                      system("services.msc");
                      break;
                case 5:
                      printf("当前的日期是: ");
                      system("date /t");
                      printf("当前的时间是: ");
                      system("time /t");
                      system("pause");
                      break;
                default:
                      printf("没有您要的程序 \n");
                      system("pause");
          }

    }
    ------------------------------------------------------------------
    采用dev C++编译,在windows2003平台上。
    运行正常,因为没有添加相关的条件限制,所以随便在结果中键入:
    请打开您想要的程序:kkk

    结果在Vista上和windows2003上出的结果不一样。

    windows203不管你怎么打英文或者多长的内容(数字除外),它总是会打开记事本,也就是说只要不打数字在里面,全部显示case 2:的内容,在代码中加入printf("%d",program_select),结果发现也是,不管怎么打英文,该变量都是输出2.为什么?
    将生成的.exe文件在Vista下运行,就不会出现这样的结果,它会在Vista下按照default的结果出现:没有您要的程序。

    不解中,请教了。。。。。

    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sukyin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 17:26:511楼 得分:0
    int program_select;
    请先初始化为0。

    scanf("%d",&program_select);
    如果你打不相关的数据只会使用默认值,在你机器上是2,其他机器上就不一定了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • clhposs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 17:28:322楼 得分:0
    我这正常啊!帮你加个功能
    一个while

    C/C++ code
    #include <stdio.h> #include <stdlib.h> main() { while(1) { system("cls"); int program_select; printf("--------------------------------------------\n"); printf(" | |\n"); printf(" | 自定义程序集成器 |\n"); printf(" | Ver:1.0 |\n"); printf(" | |\n"); printf("--------------------------------------------\n"); printf("\t\t(1) 计算器\n"); printf("\t\t(2) 记事本\n"); printf("\t\t(3) 远程桌面连接\n"); printf("\t\t(4) 后台服务管理器\n"); printf("\t\t(5) 显示当前日期\n"); printf("请打开您想要的程序: "); scanf("%d",&program_select); switch (program_select) { case 1: system("calc.exe"); break; case 2: system("notepad.exe"); break; case 3: system("mstsc.exe"); break; case 4: system("services.msc"); break; case 5: printf("当前的日期是: "); system("date /t"); printf("当前的时间是: "); system("time /t"); system("pause"); break; default: printf("没有您要的程序 \n"); system("pause"); } } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • c_fresher
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 18:29:433楼 得分:0
    咦嘻嘻 蠻好玩兒的嘻嘻
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • nmhfyj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 22:18:054楼 得分:0
    我是想了解一下为什么会不管打什么都是2?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fh265
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 10:38:255楼 得分:0
    我在vs2005里面一切正常!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xianyuxiaoqiang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 14:07:116楼 得分:0
    引用 1 楼 sukyin 的回复:
    int program_select;
    请先初始化为0。

    scanf("%d",&program_select);
    如果你打不相关的数据只会使用默认值,在你机器上是2,其他机器上就不一定了。

    同意。你没有初始化,编译器给了个默认值。恰好是2。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • nmhfyj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 14:41:017楼 得分:0
    默认是值能改吗?
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved