| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 352 人关注过本帖
标题:c语言程序运行问题
只看楼主 加入收藏
mkl34367803
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2012-9-6
结帖率:20%
收藏
已结贴  问题点数:5 回复次数:6 
c语言程序运行问题
#include<stdio.h>
void main()
{
    int a[10]={1,2,3,4,5,6,7,8,9,10};
    int i,k1,k2,max,min,t;
    max=a[0];
    min=a[0];
   
    for(i=1;i<10;i++)
    {
        if(a[i]>max)       //找出数组中最大的数
        {
            max=a[i];
            k1=i;
        }
        if(a[i]<min)      //找出数组中最小的书
        {
            min=a[i];
            k2=i;
        }

    }
    t=a[0];a[0]=a[k2];a[k2]=t;            //将最小的数和a【0】交换
    t=a[k1];a[k1]=a[9];a[9]=t;          //最大的数和最后一个数交换!
    for(i=0;i<10;i++)
        printf("%d",a[i]);
   
}
搜索更多相关主题的帖子: max include 最大的 
2012-09-20 11:05
遗矢的老人
Rank: 9Rank: 9Rank: 9
来 自:成都
等 级:蜘蛛侠
威 望:7
帖 子:325
专家分:1131
注 册:2012-7-20
收藏
得分:2 
怎么又在这儿问啊?我在另个地方回答了
就是if(a[i]<min)      //找出数组中最小的书
      {
             min=a[i];
             k2=i;
       }
没法运行导致K2为随机数,后面就a[k2]就可能越界了
2012-09-21 00:25
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
哈哈 你得因材施教

我要成为嘿嘿的黑客,替天行道
2012-09-21 00:28
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
for(i=1;i<10;i++)

你改下把  改成i=0
数组声明int a[10]  这个10 说的是有10个元素
但是 数组引用 是从a[0]---a[9]的
i值 是对数组 的引用 所以 i的取值范围为{0,1,2,3,4,5,6,7,8,9}  10个元素

我要成为嘿嘿的黑客,替天行道
2012-09-21 00:32
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
哦,看错了,这个丢人了

[ 本帖最后由 zhu224039 于 2012-9-21 00:48 编辑 ]

我要成为嘿嘿的黑客,替天行道
2012-09-21 00:33
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:2 
#include<stdio.h>
void main()
{
    int a[10]={1,2,3,4,5,6,7,8,9,10};
    int i,k1,k2,max,min,t;
    max=a[0];
    min=a[0];
   
    for(i=1;i<10;i++)
    {
        if(a[i]>max)       //找出数组中最大的数
        {
            max=a[i];
            k1=i;
        }
        if(a[i]<min)      //找出数组中最小的书
        {
            min=a[i];
            k2=i;                   ----------------------》k有可能有确定的值  也有可能 a[i]<min  这个条件从来都没满足过导致这个K2=i 没有运行过。而你在程序里对K2的声明对K2没有进行赋值,是个不确定的数
        }                          ---------------------------》那么对a[k2]的引用会出现不确定的值  这是个非法访问 会报错  建议对K2进行赋值  k2取值 在 K2<0与K2>9 范围。

    }        
    t=a[0];a[0]=a[k2];a[k2]=t;            //将最小的数和a【0】交换                ------------》这个地方加个判断 看看 K2的值是否在 0-9 之间,如果不在 意味着  min=a[0]是最小的 也就没必要执行这个语句了,在的话执行这个语句
    t=a[k1];a[k1]=a[9];a[9]=t;          //最大的数和最后一个数交换!            
    for(i=0;i<10;i++)
        printf("%d",a[i]);
   
}

我要成为嘿嘿的黑客,替天行道
2012-09-21 00:47
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:2 
楼上说的很清楚了。
2012-09-21 00:50
快速回复:c语言程序运行问题
数据加载中...
 
   



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

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