| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1168 人关注过本帖
标题:(4)C语言问题之水题的Runtime Error(ACCESS_VIOLATION)
只看楼主 加入收藏
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
(4)C语言问题之水题的Runtime Error(ACCESS_VIOLATION)
偶尔刷刷水题,可AC不了心里就有点不爽了。在OJ上有这样一道题,代码在二楼:
描述:
有一个长度为n的整数序列。请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。

输入:
输入包括两行。
第一行为正整数n(1≤n≤10)。
第二行为n个正整数组成的序列。

输出:
输出转换好的序列。数据之间用空格隔开。

样例输入
5
2 1 5 4 3

样例输出
1 2 3 4 5



[此贴子已经被作者于2015-11-23 21:26编辑过]

搜索更多相关主题的帖子: C语言 正整数 最大值 
2015-11-23 21:18
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
程序代码:
#include<stdio.h>
int main()
{
    int n,i,j,m;
    int data[10],max,min;
    while(EOF!=scanf("%d",&n))
    {
        //输入n个数
        for(i=0;i<n;i++)
        {
            scanf("%d",&data[i]);
        }
        //把序列中的最小值与第一个数交换
        min=data[0];
        for(i=0;i<n;i++)
            if(min>data[i])
            {
                min=data[i];
                m=i;
            }
            data[m]=data[0];data[0]=min;
            //最大值与最后一个数交换
            max=data[0];
            for(i=0;i<n;i++)
                if(max<data[i])
                {
                    max=data[i];
                    j=i;
                }
                data[j]=data[n-1];data[n-1]=max;
                //输出新序列
                for(i=0;i<n-1;i++)
                    printf("%d ",data[i]);
                printf("%d\n",data[n-1]);
    }
    return 0;
}
2015-11-23 21:20
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
OJ的判题结果总是提示:Runtime Error(ACCESS_VIOLATION)
查了一下,意思是Runtime Error(ACCESS_VIOLATION) //非法内存访问,不理解
2015-11-23 21:21
ntprc0x
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:23
专家分:130
注 册:2015-11-14
收藏
得分:20 
    for(i=0;i<n;i++)
            if(min>data[i])
            {
                min=data[i];
                m=i;
            }
    data[m]=data[0];data[0]=min;
     当min永远小于data[i] 也就是data[0]为最小值时
    if语句不为真 m=i  也没有执行过
data[m] 中 m 没有初始化 赋值过 不确定值 数组下标过界Runtime Error?
</n;i++)
2015-11-23 21:38
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
回复 4楼 ntprc0x
还真是那么回事,在两个循环前又分别对m、j赋值,AC通过了。
看来养成变量在定义时就对其初始化的好习惯还是很有必要的
2015-11-23 21:54
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
另外这个“非法内存访问”能给解释下不?,Thank you
2015-11-23 21:57
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
回复 4楼 ntprc0x
还在不?
2015-11-24 15:18
快速回复:(4)C语言问题之水题的Runtime Error(ACCESS_VIOLATION)
数据加载中...
 
   



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

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