| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 523 人关注过本帖
标题:有关求最大数的,请教~
只看楼主 加入收藏
shentanli
Rank: 1
等 级:新手上路
帖 子:112
专家分:4
注 册:2012-2-3
结帖率:73.68%
收藏
已结贴  问题点数:18 回复次数:9 
有关求最大数的,请教~
#include<stdio.h>
#include<stdlib.h>   //调用库函数

int fun( int a[], int n, int i );//声明功能函数:实现找到最大数功能


int main()//主函数实现功能
{
    int n, i, m ;//定义数组大小及要找的前几个变量和最大值;
    printf("Please input your number of array and the number of you want to find\n");
    scanf("%d,%d", &n, &i);
    int a[n];//定义数组
    m = fun( a[n], n, i );//为什么这一行老报错了呢??
    printf("The max is %d\n", m);
    system("pasue");
    return 0;
}
   
//说明功能函数的实现过程:
int fun( int a[], int n, int i )
{
    int j;//定义循环变量;
    int max = a[0];//定义并赋值要找的最大值为数组的第一个数;
    for ( j = 0; j <= i-1; j++ )
      if ( a[j] > a[0])
      max = a[j];
      return (max);
}

大神们帮忙看看那行红字,多谢~~~~~~~
搜索更多相关主题的帖子: 函数 声明 include system number 
2012-02-18 11:17
Immortal
Rank: 2
等 级:论坛游民
帖 子:12
专家分:31
注 册:2012-2-4
收藏
得分:4 
数组大小不可变,定义a[n]是错的,,因为在编译时,n为不确定的,编译器不知道分配多大内存给数组,用malloc函数申请动态内存
2012-02-18 11:27
shentanli
Rank: 1
等 级:新手上路
帖 子:112
专家分:4
注 册:2012-2-3
收藏
得分:0 
但之前n确定了呀??

为时未晚~~COME ON!!实践才是真理!!!@~@
2012-02-18 11:31
巴克
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:199
注 册:2012-2-8
收藏
得分:4 
回复 3楼 shentanli
c语言里面不能这样定义数组,必须实现确定数组的大小.
2012-02-18 11:34
卡卡罗特wang
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:63
专家分:42
注 册:2012-2-17
收藏
得分:4 
回复 楼主 shentanli
我是新学的,我觉的,如果n=5,b=10的话,后面fun中,j循环到9时,不是超过了数组大小吗?
2012-02-18 11:53
巴克
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:199
注 册:2012-2-8
收藏
得分:0 
要想自己控制数组大小可以使用动态内存分配.
程序代码:
#include<stdio.h>
#include<malloc.h>
#define N 100

int find_max(int *array,int n)        //寻找最大值函数
{
    int i,max;
    max = *array;
   

    for(i=0;i<n;i++)
        if(*(array+i)>max)
        max = *(array+i);

    return max;
}

int main()
{
    int i,n,m;
    int *number;
    scanf("%d",&n);         //输入数组大小

    number = (int *)malloc(n*sizeof(int));  //动态内存分配 n 个数组

    for(i=0;i<n;i++)
        scanf("%d",number+i);

    m=find_max(number,n);                  //函数调用

    printf("%d\n",m);

    free(number);                         //释放内存

    return 0;
}

2012-02-18 11:56
巴克
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:199
注 册:2012-2-8
收藏
得分:0 
楼主的函数调用就有问题:
  m = fun( a[n], n, i );//为什么这一行老报错了呢??
应该是m = fun(a,n,i);
2012-02-18 11:58
daydreary
Rank: 2
等 级:论坛游民
帖 子:15
专家分:37
注 册:2012-2-15
收藏
得分:4 
m = fun( a[n], n, i );//为什么这一行老报错了呢??

你的函数原型是这样的 int fun( int a[], int n, int i ),所以调用时候形参要对应 fun(a,n,i)。。a表示的才是数组,而a[n]只是数组里某个元素,是个整数而已。
2012-02-18 12:16
xinyuanyuan
Rank: 2
等 级:论坛游民
帖 子:12
专家分:10
注 册:2012-2-14
收藏
得分:4 
1、 int a[n];//定义数组      这个定义是错误的,正确的数组定义格式是:类型名 数组名【常量表达式】。你的n虽然已经输入了值,但是,它依然是一个变量。
#include <stdio.h>
#define  N  10
void main()
{
   int a[N];
.......
}这样就可以。
2、  m = fun( a[n], n, i );//为什么这一行老报错了呢??    正确的书写应该是:m=fun(a,n,i)   楼主看书不仔细。这些书上都有说明。
2012-02-18 12:31
shentanli
Rank: 1
等 级:新手上路
帖 子:112
专家分:4
注 册:2012-2-3
收藏
得分:0 
,谢谢大家,我知道了==

为时未晚~~COME ON!!实践才是真理!!!@~@
2012-02-18 12:56
快速回复:有关求最大数的,请教~
数据加载中...
 
   



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

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