| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 585 人关注过本帖
标题:代码查错 重重有奖(程序要求,把 a b c 的数据放在一起 有序输出)
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:100 回复次数:12 
代码查错 重重有奖(程序要求,把 a b c 的数据放在一起 有序输出)
程序代码:
#include <stdio.h>

void swap(int* a,int* b)
{
    int tmp;
    tmp=*a;
    *a=*b;
    *b=tmp;
}

int main(int argc, char *argv[])
{
    int a[5]={7,4,2,9,6};    //要求以下代码中不能出现a 字样
    int b[4]={21,6,3,8};     //要求以下代码中不能出现b 字样
    int c[4]={201,60,30,80};
    int* p=c;   //要求此句代码不能被更改
    int i,j;
    for(j=0;j<13;j++)   //冒泡排序 可以更换其它排序
    {
        for(i=0;i<13-j;i++)
        {
            if(p[i]>p[i+1]) 
            {
                swap(&p[i],&p[i+1]);
            }
        }
    }
    for(i=0;i<13;i++) printf("%4d", *(p+i));  //输出 必须的
    return 0;
}

2014-09-04 09:00
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:20 
什么意思?
改改变量名,让查重能通过?
2014-09-04 09:10
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 2 楼 书生等待
问题出在排序部分

可以试编译运行一下  无法得到正确结果

DO IT YOURSELF !
2014-09-04 09:11
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
收藏
得分:20 
程序代码:
#include <stdio.h>

void swap(int* a,int* b)

 {
     int tmp;
     tmp=*a;
     *a=*b;
     *b=tmp;

 }

int main(int argc, char *argv[])

 {
     int a[5]={7,4,2,9,6};    //要求以下代码中不能出现a 字样
     int b[4]={21,6,3,8};     //要求以下代码中不能出现b 字样
     int c[4]={201,60,30,80};
     int* p=c;   //要求此句代码不能被更改
     int i,j;
     for(j=0;j<13 - 1;j++)   //冒泡排序 可以更换其它排序 //modify
     {
         for(i=0;i<13-j - 1;i++) //modify
         {
             if(p[i]>p[i+1])
            {
                 swap(&p[i],&p[i+1]);
             }
         }
     }
     for(i=0;i<13;i++) printf("%4d", *(p+i));  //输出 必须的
     return 0;

 }

~~~~~~我的明天我知道~~~。
2014-09-04 09:49
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 4 楼 xufan
好像还是不行呢  你运行过了没

DO IT YOURSELF !
2014-09-04 10:52
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
收藏
得分:0 
回复 5 楼 wp231957
好奇怪哦,我在DEBUG模式下运行可以出现结果:
2   3   4   6   6   7   8   9   21  30  60  80  201
RUN FINISHED; exit value 0; real time: 0ms; user: 0ms; system: 0ms
可以,切换到RELEASE模式就断错误了。

~~~~~~我的明天我知道~~~。
2014-09-04 11:32
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:20 
下手真快呀

坚持----------------------------------唯一的道路
shit ! ! !
2014-09-04 12:04
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
没办法的,起码没有通用的办法,因为C/C++标准没有规定变量的存储方式和次序,甚至都没有规定变量必须有实际存储,再加上编译优化,比如你代码中的a和b,因为没有任何合法的引用,编译器完全可以无视之。

程序代码:
#include <stdio.h>

void swap(int* a,int* b)
{
    int tmp;
    tmp=*a;
    *a=*b;
    *b=tmp;
}

int* crelocate( int* c, size_t index )
{
#ifdef _DEBUG
    return c + index + (index>3)*2 + (index>7)*2; // 仅对 VC9 Debug 模式有效
#else
    return c + index; // 在 VC9 Release 模式下,a和b被优化掉了,不存在
#endif
}

int main()
{
    int a[5]={7,4,2,9,6};    //要求以下代码中不能出现a 字样
    int b[4]={21,6,3,8};     //要求以下代码中不能出现b 字样
    int c[4]={201,60,30,80};
    int* p=c;   //要求此句代码不能被更改

    ///////////////////////////////////////////////

    int i,j;
    for(j=0;j<12;j++)   //冒泡排序 可以更换其它排序
    {
        for(i=0;i<12-j;i++)
        {
            int* p1 = crelocate( c, i );
            int* p2 = crelocate( c, i+1 );
            if( *p1 > *p2 )
            {
                swap( p1, p2 );
            }
        }
    }
    for(i=0;i<13;i++) printf("%4d", *crelocate(c,i) );  //输出 必须的
    return 0;
}

2014-09-04 12:31
funyh250
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:26
帖 子:290
专家分:1573
注 册:2013-12-25
收藏
得分:20 
图片附件: 游客没有浏览图片的权限,请 登录注册

学习是大事   吃喝拉撒睡是小事   其他的那都不是事
2014-09-04 12:46
funyh250
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:26
帖 子:290
专家分:1573
注 册:2013-12-25
收藏
得分:0 
回复 8 楼 rjsp
这想法赞一个

学习是大事   吃喝拉撒睡是小事   其他的那都不是事
2014-09-04 12:58
快速回复:代码查错 重重有奖(程序要求,把 a b c 的数据放在一起 有序输出)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019085 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved