| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 432 人关注过本帖
标题:程序运行时崩溃了,不知道哪里出问题了 。(用函数实现 输入任意 n 个数组的 ...
只看楼主 加入收藏
yangcaifei
Rank: 4
来 自:陕西
等 级:业余侠客
威 望:2
帖 子:127
专家分:216
注 册:2014-11-3
结帖率:84%
收藏
已结贴  问题点数:30 回复次数:6 
程序运行时崩溃了,不知道哪里出问题了 。(用函数实现 输入任意 n 个数组的元素最大与最后一个元素交换,最小与最后一个元素交换)
#include<stdio.h>
#include<stdlib.h>

int input(int array[],int len)
{
    int i;
    for(i=0; i<=len-1; i++)
    {
        scanf("%d",&array[i]);
    }
    return array[100];
}
int max_min(int array[],int len)
{
    int a1,a2,b1,b2,i;
    a1=array[0];
    b1=array[0];
    b2=0;
    a2=0;
    for(i=1; i<10; i++)
    {
        if(array[i]>a1)
        {
            a1=array[i];
            a2=i;
        }
        else
        {
            b1=array[i];
            b2=i;
        }
    }
    array[0]=a1;
    array[9]=b1;

    return array[100];
}
void output(int array[],int len)
{
    int i;
    for(i=0; i<=len-1; i++)
    {
        printf("%d ",array[i]);
    }
}

int main()
{
    int a[100],len;
    printf("请输入数组长度:\n");
    scanf("%d",&len);
    input(a[100],len);
    max_min(a[100],len);
    output(a[100],len);

    return 0;
}
搜索更多相关主题的帖子: include return 元素 
2014-11-22 16:55
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:4 
数组元素怎么输入,你只定义了数组既没初始化又没循环输入。且在函数中调用数组只需数组名就行了。

一片落叶掉进了回忆的流年。
2014-11-22 17:20
yahwei
Rank: 7Rank: 7Rank: 7
来 自:湖~
等 级:黑侠
威 望:3
帖 子:145
专家分:644
注 册:2011-11-10
收藏
得分:3 
打错字了吧,怎么最大最小元素都要和最后一个元素交换呢?看代码你应该还没学过动态分配内存吧?除了应该用动态分配内存之外,下面这段代码也是有问题的:
程序代码:
for(i=1; i<10; i++)
    {
        if(array[i]>a1)
        {
            a1=array[i];
            a2=i;
        }
        else
        {
            b1=array[i];
            b2=i;
        }
    }

这只能保证a1是最大的元素,而不能保证b1是最小的元素。

[qq]949654600[/qq]
2014-11-22 17:21
yangcaifei
Rank: 4
来 自:陕西
等 级:业余侠客
威 望:2
帖 子:127
专家分:216
注 册:2014-11-3
收藏
得分:0 
回复 2 楼 诸葛欧阳
定义input不就是循环输入数组元素吗
2014-11-22 17:28
yangcaifei
Rank: 4
来 自:陕西
等 级:业余侠客
威 望:2
帖 子:127
专家分:216
注 册:2014-11-3
收藏
得分:0 
回复 3 楼 yahwei
最大的与第一个交换
2014-11-23 11:10
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
收藏
得分:22 
程序代码:
#include <stdio.h>
#include <stdlib.h>

int input(int array[],int len) //数组参数最终会转换为指向数组的指针即int *array
{
    int i;
    for(i=0; i<=len-1; i++)
    {
    printf("请输入第%d个数据:", i+1);
        scanf("%d",&array[i]);
    }
    // return array[100]; //没有必要返回数组
    return 0;
}
void swap(int *a, int *b){
    int temp = 0;
    temp = *a;
    *a = *b;
    *b = temp;
}
int max_min(int array[],int len)
{
    int a1,a2,b1,b2,i;
    a1=array[0];
    b1=array[0];
    b2=0;
    a2=0;
    for(i=1; i<len; i++) //该处需要修改10为len
    {
        if(array[i]>a1)
        {
            a1=array[i];
            a2=i;
        }
        else if(array[i]<b1)
        {
            b1=array[i];
            b2=i;
        }
    }
    // array[0]=a1;
    //array[9]=b1;
    swap(&array[len-1],&array[a2]); //最大值和最后位置交换
    swap(&array[0],&array[b2]); //最小值和第一个位置交换

    // return array[100];
    return 0;
}
void output(int array[],int len)
{
    int i;
    for(i=0; i<=len-1; i++)
    {
        printf("%d ",array[i]);
    }
    printf("\n");
}

int main()
{
    int a[100],len;
    printf("请输入数组长度:\n");
    scanf("%d",&len);
    // input(a[100],len);
    input(a, len); //传入指向数组的指针
    output(a, len);
    // max_min(a[100],len);
    max_min(a, len);
    // output(a[100],len);
    output(a, len);
    return 0;
}

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2014-11-23 12:54
yahwei
Rank: 7Rank: 7Rank: 7
来 自:湖~
等 级:黑侠
威 望:3
帖 子:145
专家分:644
注 册:2011-11-10
收藏
得分:1 
6楼的代码除了len不能大于100以外,完全正确。

[qq]949654600[/qq]
2014-11-23 15:36
快速回复:程序运行时崩溃了,不知道哪里出问题了 。(用函数实现 输入任意 n 个 ...
数据加载中...
 
   



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

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