首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请大家给看看下面的2道题,我很菜的,实在搞不懂,谢谢了! [已结贴,结贴人:xingxingxiangrong]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xingxingxiangrong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-19 16:13:50 楼主
    C/C++ code
    main() { char ch[2][5]={"6937","8254"},*p[2]; int i,j,s=0; for(i=0;i<2;i++) for(j=0;p[i][j]>'\0';j+=2) s=10*s+p[i][j]-'\0'; printf("%d\n",s); } 答案是6385,但我不知道怎么来的,请大家给解释一下,最好详细点,谢谢了 int j;int y; char name[50]; scanf("%2d%.f%s",&j,&y,name); 这个是问输入的y是多少,答案是 566.0, 请大家给解释一下,最好详细点,谢谢了
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xingxingxiangrong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 16:14:501楼 得分:0
    %.f这个是什么意思了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zjw6861982
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 16:23:112楼 得分:1
    要看堆栈的内容
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zclever
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 16:25:303楼 得分:2
    C/C++ code
    main() { char ch[2][5]={"6937","8254"},*p[2]; int i,j,s=0; for(i=0;i<2;i++) for(j=0;p[i][j]>'\0';j+=2) //这个p[i][j]哪里来的??p指向谁的? s=10*s+p[i][j]-'\0'; printf("%d\n",s); }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xingxingxiangrong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 16:31:034楼 得分:0
    不好意思,少了一句话!
    p就是指向ch[2][5]={"6937","8254"}这个字符串的!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jinjin666
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 16:31:255楼 得分:1
    d:引数をINTEGERとして扱い、半角文字による符号付きの十進数表記に変換します。
    scanf("%2d%.f%s",&j,&y,name)???
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xingxingxiangrong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 16:40:336楼 得分:0
    引用 5 楼 jinjin666 的回复:
    d:引数をINTEGERとして扱い、半角文字による符号付きの十進数表記に変換します。
    scanf("%2d%.f%s",&j,&y,name)???

    不好意思,我看不懂你写的字
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cakexiang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 17:06:247楼 得分:2
    -'\0'
    我晕,为何
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wangdeqie
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 17:14:448楼 得分:2
    C/C++ code
    char ch[2][5]={"6937","8254"}//你这个本身定义的就有问题,char类型的范围是0-255,严重越界了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hqin6
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 17:20:129楼 得分:0
    引用楼主 xingxingxiangrong 的帖子:
    C/C++ code
    main()
    {
      char ch[2][5]={"6937","8254"},*p[2];
      int i,j,s=0;
      for(i=0;i <2;i++)
      for(j=0;p[i][j]>'\0';j+=2)
        s=10*s+p[i][j]-'\0';
        printf("%d\n",s);
    }
    答案是6385,但我不知道怎么来的,请大家给解释一下,最好详细点,谢谢了
    int j;int y;
    char name[50];
    scanf("%2d%.f%s",&j,&y,name);
    这个是问输入的y是多少,答案是 566.0, 请大家给解释一下,最好详细点,谢谢了


    俩都没看懂!

    第一个,把代码贴全了哈~
    第二个,问的问题云里雾里的,不明白!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cprime
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 17:24:0110楼 得分:2
    同意楼上,问问题,应该把代码贴全了。
    想帮你也容易点阿。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mifeixq
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 17:26:0111楼 得分:2
    *p[] 是一个指针数组,怎么会有 p[i][j]呢...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hqin6
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 17:28:1112楼 得分:0
    正确的程序:

    C/C++ code
    #include <stdio.h> #include <iostream> using namespace std; void main() { char ch[2][5]={"6937","8254"}; int i,j,s=0; for(i=0;i<2;i++) for(j=0;ch[i][j]>'\0';j+=2) s=10*s+ch[i][j]-'0'; printf("%d\n",s); system("pause"); }


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hqin6
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 17:32:1113楼 得分:30
    其实一步步看,也不麻烦:

    i=0,j=0:

    s=10*0+'6'-'0',也就是s=6
    -------------------

    i=0,j=2:

    s=10*6+'3'-'0',也就是s=63
    ----------------------

    i=1,j=0:
    s=10*63+'8'-'0',也就是s=638

    i=0,j=2:
    s=10*638+'5'-'0',也就是s=6385
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hqin6
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 17:33:3314楼 得分:0
    int j;int y;
    char name[50];
    scanf("%2d%.f%s",&j,&y,name);
    这个是问输入的y是多少,答案是 566.0, 请大家给解释一下,最好详细点,谢谢了


    这个问题是不是没给全啊??

    用户输入,我也可以输入755啊?没道理嘛!
    肯定有限制条件!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xingxingxiangrong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 19:00:0215楼 得分:0
    引用 14 楼 hqin6 的回复:
    int j;int y;
    char name[50];
    scanf("%2d%.f%s",&j,&y,name);
    这个是问输入的y是多少,答案是 566.0, 请大家给解释一下,最好详细点,谢谢了


    这个问题是不是没给全啊??

    用户输入,我也可以输入755啊?没道理嘛!
    肯定有限制条件!

    不好意思这有点输错了,Y是浮点型变量(今天喝得有点多了,没注意,不好意思)
    int j;float y;
    char name[50];
    scanf("%2d%.f%s",&j,&y,name);
    这个是问输入的y是多少,答案是 566.0, 请大家给解释一下,最好详细点,谢谢了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shager
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 21:10:0916楼 得分:2
    - '\0'是不对的,要减掉的是 '0',别搞错了哦
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xingxingxiangrong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:35:4317楼 得分:0
    引用 16 楼 shager 的回复:
    - '\0'是不对的,要减掉的是 '0',别搞错了哦

    恩,昨天确实弄错了,不好意思!
    我还有点问题


    其实一步步看,也不麻烦:

    i=0,j=0:

    s=10*0+'6'-'0',也就是s=6  整形与字符型能直接相减么?

    -------------------

    int j;float y;
    char name[50];
    scanf("%2d%.f%s",&j,&y,name);
    这个是问输入的y是多少,%.f是什么意思了,答案是 566.0,  请大家给解释一下,最好详细点,谢谢了

    解决了,我立刻揭帖,谢谢了


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • e_sharp
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 10:02:1418楼 得分:0
    引用 4 楼 xingxingxiangrong 的回复:
    不好意思,少了一句话!
    p就是指向ch[2][5]={"6937","8254"}这个字符串的!


    这么关键的,你给少了 呵呵
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hqin6
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 10:02:4619楼 得分:0
    引用 17 楼 xingxingxiangrong 的回复:
    引用 16 楼 shager 的回复:
    - '\0'是不对的,要减掉的是 '0',别搞错了哦

    恩,昨天确实弄错了,不好意思!
    我还有点问题


    其实一步步看,也不麻烦:

    i=0,j=0:

    s=10*0+'6'-'0',也就是s=6  整形与字符型能直接相减么?

    -------------------

    int j;float y;
    char name[50];
    scanf("%2d%.f%s",&j,&y,name);
    这个是问输入的y是多少,%.f是什么意思了,答案是 566.0,  请大家给解释一下,最好详细点…


    在int和char的混合计算中,char会自动转换为int,比如,‘0’就会转换为相应的asc码!

    %.f是输入浮点数float,那个点是小数点,比如%.3f是小数点后三位!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hqin6
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 10:08:3720楼 得分:0
    C/C++ code
    #include <iostream> using namespace std; void main() { float f=12.365; float ff = 12.6666; printf("%.f,%.f",f,ff); system("pause"); }

    如果不给具体数值,就是%.f那么就是小数点后面没有,取整数部分!我不知道那个.0是怎么出来的~

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • e_sharp
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 10:16:4121楼 得分:5
    int j;float y;
    char name[50];
    scanf("%2d%.f%s",&j,&y,name);
    这个是问输入的y是多少,%.f是什么意思了,答案是 566.0,  请大家给解释一下,最好详细点,谢谢了


    ---------------------------------------

    应该是566,不是566.0

    %.f //If the period is specified without an explicit value for precision, 0 is assumed.

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • KENDAN1
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 11:05:0322楼 得分:1
    看不懂

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xingxingxiangrong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 11:31:4723楼 得分:0
    好了,该街贴了,谢谢各位了
    修改 删除 举报 引用 回复

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