| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1144 人关注过本帖
标题:为什么输入数字位数不一样就会出错?
只看楼主 加入收藏
温酒斩化腾
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2017-3-28
结帖率:72.73%
收藏
已结贴  问题点数:10 回复次数:2 
为什么输入数字位数不一样就会出错?
#include  <stdio.h>
  #define ARR_SIZE 10
    void  MaxMinExchang(int *a, int n);
  int main()
  {
     int a[ARR_SIZE], i, n;
     printf("Input n(n<=10):\n");
     scanf("%d", &n);
     printf("Input %d Numbers:\n", n);
     for (i=0; i<n; i++)
     {
        scanf("%d", &a[i]);
     }
     MaxMinExchang(a, n);
    printf("After MaxMinExchange:\n");
     for (i=0; i<n; i++)
     {
        printf("%d ", a[i]);
     }
    printf("\n");
    return 0;
  }
  void  MaxMinExchang(int *a, int n)
 {
     int  maxValue = a[0], minValue = a[0], maxPos, minPos;
     int  i, temp;
     for (i=0; i<n; i++)
    {
       if (a[i] > maxValue)
        {
           maxValue = a[i];
           maxPos = i;
        }
        if (a[i] < minValue)
       {
            minValue = a[i];
            minPos = i;
        }
     }
     temp = a[maxPos];
     a[maxPos] = a[minPos];
     a[minPos] = temp;
  }
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: return include 
2017-05-05 19:54
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:10 
问题出在 minPos 和 maxPos没有赋值。
给它们赋初值0就可以了。

要养成随手赋值的好习惯。
特别是涉及到指针的时候。
要不然,段错误分分钟教你做人的道理。

以你现在的代码来说:
当输入 1 2 3 4这个序列的时候。
函数Min....()中的 for循环中的第二个if不会被判断为真。
因此,minPos的值将一直是垃圾值,所以触发了非法访问,也就是段错误。

同时,如果输入的序列是
4 3 2 1
那么for语句中的第一个if不会被判断为真,因此导致段错误。

[此贴子已经被作者于2017-5-5 20:47编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-05 20:37
温酒斩化腾
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2017-3-28
收藏
得分:0 
回复 2楼 renkejun1942
谢谢,请问大腿还缺挂件吗
2017-05-06 22:13
快速回复:为什么输入数字位数不一样就会出错?
数据加载中...
 
   



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

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