注册 登录
编程论坛 C语言论坛

大一新手一个,想求助大神,帮我看看我的程序哪里出问题

陈光星 发布于 2017-05-25 19:07, 2776 次点击
#include <stdio.h>
#include <stdlib.h>


int Maxelement(float A [5],int num1)
int Minelement(float B [5],int num2)
//float average(float C [5],float num3)
//void  swapAn1n2(int array[],int n1 n2)




int main()
{
    float A1[5]    ;
    int a,l;
    for(l=1;l<=5;l++ )
    scanf("%f",&float A[i]);
    a=Maxelement(float[i]) ;
    printf("max=%f",a);   
        
   
   
}   
    int Maxelement(float A [5],int num1)
    {
        int i ,j;
        for(i=0;i<4;i++)
        {
            if(float A[i]<float A[i+1])
            {
                j=float A[i];
                float A[i]=float A[i+1];
                float A[i+1]=j;
               
            }
        }
        num1=float A[i];
        return(num1);
    }
   
   
   
   
   
   
22 回复
#2
renkejun19422017-05-25 19:15
你这空格加的真诡异,该加的地方没加,不改加的地方全加了。

错误跟代码行数一样多,重新写过吧。

程序代码:
#include <stdio.h>
#include <stdlib.h>


int Maxelement(float A [5],int num1)
int Minelement(float B [5],int num2)
//float average(float C [5],float num3)
//void  swapAn1n2(int array[],int n1 n2)




int main()
{
    float A1[5]    ;
    int a,l;
    for(l=1;l<=5;l++ ) //下标从0开始,不包含上限,i < 5。
    scanf("%f",&float A[i]);//这个float的用法到底是从哪里学来的?你确定你真的在写C语言?
    a=Maxelement(float[i]) ;//数组名是A1,不是float,参数错误。
    printf("max=%f",a);   
        
   
   
}   
    int Maxelement(float A [5],int num1)//A和[5]之间的空格删掉
    {//返回值类型错误,数组是float,寻找最大值,因此返回值类型也应该是float
        int i ,j;//i后面的空格删掉
        for(i=0;i<4;i++)
        {
            if(float A[i]<float A[i+1])//删掉float,完全搞不懂为什么要这么写,而且还是错的。
            {
                j=float A[i];//删掉float
                float A[i]=float A[i+1];//删掉float
                float A[i+1]=j;//删掉float
               
            }
        }
        num1=float A[i];//删掉float
        return(num1);
    }


[此贴子已经被作者于2017-5-25 19:22编辑过]

#3
陈光星2017-05-25 19:19
哈哈,谢谢你
#4
陈光星2017-05-25 19:22
好的
#5
陈光星2017-05-25 19:31
大哥,能再帮我看看吗


#include <stdio.h>
#include <stdlib.h>


float Maxelement(float A[5],int num1)
int Minelement(float B[5],int num2)
//float average(float C [5],float num3)
//void  swapAn1n2(int array[],int n1 n2)




int main()
{
    float A1[5]    ;
    int a,l;
    for(l=0;l<4;l++ )
    scanf("%f",&A[i]);
    a=Maxelement(A1[i]) ;
    printf("max=%f",a);   
        
   
   
}   
    float Maxelement(float A[5],int num1)
    {
        int i ,j;
        for(i=0;i<4;i++)
        {
            if(A[i]<A[i+1])
            {
                j=A[i];
                A[i]=A[i+1];
                A[i+1]=j;
               
            }
        }
        num1=A[i];
        return(num1);
    }
   
   
   
   
   
#6
renkejun19422017-05-25 19:39
程序代码:
#include <stdio.h>
#include <stdlib.h>


float Maxelement(float A[5],int num1)//漏了结尾的分号,刚才我忘记说了。
                                    
//按照你的意图的话,int num1这个参数是没有必要的,删掉。
int Minelement(float B[5],int num2)
//float average(float C [5],float num3)
//void  swapAn1n2(int array[],int n1 n2)




int main()
{
    float A1[5]    ;
    int a,l;
    for(l=0;l<4;l++ ) //4改成5,
    scanf("%f",&A[i]);
    a=Maxelement(A1[i]);
    printf("max=%f",a);   
        
   
   
}   
    float Maxelement(float A[5],int num1)
    {
        int i ,j;
        for(i=0;i<4;i++)//这一个不用改,改了会越界
        {//你的意图是否是把最大值移动在数组的最开始部分?如果是的话,返回A1[0]就可以了。
            if(A[i]<A[i+1])//如果你的意图如上,那么你的代码是达不到你所想要的目的的。
            {
                j=A[i];
                A[i]=A[i+1];
                A[i+1]=j;
               
            }
        }
        num1=A[i];//如果删掉了函数的参数 int num1,这一行也要删掉。
        return(num1);//这一行改成 return A1[0]
    }


[此贴子已经被作者于2017-5-25 19:40编辑过]

#7
陈光星2017-05-25 19:45
大哥,谢谢,我改改再编译试试
#8
renkejun19422017-05-25 19:52
我重写了你的代码,你参考下吧。
我还有事。

程序代码:

#include <stdio.h>
float
maxelement( float *a, int size );

int
main( void )
{
    float A[ 5 ];
    int i;

    for( i = 0; 5 > i; ++i )
        scanf( "%f", &A[ i ] );

    printf( "%f", maxelement( A, 5 ) );

    return 0;
}

float
maxelement( float *a, int size )
{
    int i;
    float max;

    for( i = 1, max = a[ 0 ]; size > i; ++i )
        max = max > a[ i ]? max : a[ i ];

    return max;
}


[此贴子已经被作者于2017-5-25 19:59编辑过]

#9
陈光星2017-05-25 19:53
我就是想找出一个数组的最大值,然后输出最大数值,那我代码要怎样改才能实现这个功能
#10
renkejun19422017-05-25 19:53
回复 9楼 陈光星
参考楼上我写的代码。
maxelement函数for循环写错了一个变量,已经修改了。

[此贴子已经被作者于2017-5-25 19:55编辑过]

#11
陈光星2017-05-25 20:04
嗯,谢谢大佬
#12
陈光星2017-05-26 08:43
大哥,我昨晚看了很久你的程序,还是不懂,可以注释一下吗
#13
renkejun19422017-05-26 09:08
回复 12楼 陈光星
哪儿不懂?你自己先逐行写注释,先弄懂每句的意思,然后弄懂每个代码块的目的。我现在在上班,用手机不方便。
#14
陈光星2017-05-26 12:54
好的
#15
陈光星2017-05-26 13:13
#include <stdio.h>
float
maxelement( float *a, int size );   //函数的声明,返回值为一个浮点型的变量,形参中有一个指针和一个整形。问:指针的作用是什么?

int
main( void )
{
    float A[ 5 ];//以下四行我都理解
    int i;

    for( i = 0; 5 > i; ++i )
        scanf( "%f", &A[ i ] );

    printf( "%f", maxelement( A, 5 ) );/// 问:  maxelement(A,5)是什么意思,为什么这样写?




    return 0;
}

float
maxelement( float *a, int size )//函数的定义
{
    int i;
    float max;

    for( i = 1, max = a[ 0 ]; size > i; ++i )   //问:size是什么,为什么不用赋一个初始值
        max = max > a[ i ]? max : a[ i ];

    return max;
}
#16
renkejun19422017-05-26 16:20
回复 15楼 陈光星
程序代码:
#include <stdio.h>
float
maxelement( float *a, int size );   //函数的声明,返回值为一个浮点型的变量,形参中有一个指针和一个整形。问:指针的作用是什么?
                                    
//当向函数传递一个数组的时候,数组名会退化为指针。

int
main( void )
{
    float A[ 5 ];//以下四行我都理解
    int i;

    for( i = 0; 5 > i; ++i )
        scanf( "%f", &A[ i ] );

    printf( "%f", maxelement( A, 5 ) );// 问:  maxelement(A,5)是什么意思,为什么这样写?
                                       
// maxelement()是调用这个函数,A是数组名,5是数组元素上限。




    return 0;
}

float
maxelement( float *a, int size )//函数的定义
{
    int i;
    float max;

    for( i = 1, max = a[ 0 ]; size > i; ++i )   //问:size是什么,为什么不用赋一个初始值
        max = max > a[ i ]? max : a[ i ];//size是形参。

    return max;
}
#17
陈光星2017-05-26 19:59
#include <stdio.h>
float
maxelement( float *a, int size );   //函数的声明,返回值为一个浮点型的变量,形参中有一个指针和一个整形。问:指针的作用是什么?
                                    //当向函数传递一个数组的时候,数组名会退化为指针。

int
main( void )
{
    float A[ 5 ];//以下四行我都理解
    int i;

    for( i = 0; 5 > i; ++i )
        scanf( "%f", &A[ i ] );

    printf( "%f", maxelement( A, 5 ) );// 问:  maxelement(A,5)是什么意思,为什么这样写?
                                       // maxelement()是调用这个函数,A是数组名,5是数组元素上限。




    return 0;
}

float
maxelement( float *a, int size )//函数的定义
{
    int i;
    float max;

    for( i = 1, max = a[ 0 ]; size > i; ++i )   //问:size是什么,为什么不用赋一个初始值
        max = max > a[ i ]? max : a[ i ];//size是形参。问;我知道是形参,但为什么可以不赋值呢

    return max;
}
#18
何小达2017-05-26 20:11
#include <stdio.h>
float
maxelement( float *a, int size );   //函数的声明,返回值为一个浮点型的变量,形参中有一个指针和一个整形。问:指针的作用是什么?
                                    //当向函数传递一个数组的时候,数组名会退化为指针。
                                    //可以这样改maxelement( float a[], int size );还是用数组,这样你应该能看的懂一点

int
main( void )
{
    float A[ 5 ];//以下四行我都理解
    int i;

    for( i = 0; 5 > i; ++i )
        scanf( "%f", &A[ i ] );

    printf( "%f", maxelement( A, 5 ) );// 问:  maxelement(A,5)是什么意思,为什么这样写?
                                       // maxelement()是调用这个函数,A是数组名,5是数组元素上限。




    return 0;
}

float
maxelement( float *a, int size )//函数的定义    //同样,这里也要改一下maxelement( float a[], int size );
{
    int i;
    float max;

    for( i = 1, max = a[ 0 ]; size > i; ++i )   //问:size是什么,为什么不用赋一个初始值
        max = max > a[ i ]? max : a[ i ];//size是形参。问;我知道是形参,但为什么可以不赋值呢
                                                       //答;因为size接受了实参传来的值,所以不用再赋值了,这时候size=5

    return max;
}
#19
陈光星2017-05-26 20:19
嗯,明白了。大哥,我是深圳大学信息工程学院大一的学生,我可以加你的微信吗
#20
何小达2017-05-26 20:26
回复 19楼 陈光星
hexiaodagg
#21
陈光星2017-05-26 20:33
include <stdio.h>
float
maxelement( float *a, int size );   //函数的声明,返回值为一个浮点型的变量,形参中有一个指针和一个整形。问:指针的作用是什么?
                                    //当向函数传递一个数组的时候,数组名会退化为指针。
                                    //可以这样改maxelement( float a[], int size );还是用数组,这样你应该能看的懂一点
                                     问;maxelement( float a[], int size )这里的数组不用规定长度吗
int
main( void )
{
    float A[ 5 ];//以下四行我都理解
    int i;

    for( i = 0; 5 > i; ++i )
        scanf( "%f", &A[ i ] );

    printf( "%f", maxelement( A, 5 ) );// 问:  maxelement(A,5)是什么意思,为什么这样写?
                                       // maxelement()是调用这个函数,A是数组名,5是数组元素上限。
                                       //函数maxelement()最终是不是返回一个值,再用printf函数打印的时候不用先引用那个函数,然后再先将一个变量赋值给那个函数,然后再打印出来吗



    return 0;
}

float
maxelement( float *a, int size )//函数的定义    //同样,这里也要改一下maxelement( float a[], int size );
{
    int i;
    float max;

    for( i = 1, max = a[ 0 ]; size > i; ++i )   //问:size是什么,为什么不用赋一个初始值
        max = max > a[ i ]? max : a[ i ];//size是形参。问;我知道是形参,但为什么可以不赋值呢
                                                       //答;因为size接受了实参传来的值,所以不用再赋值了,这时候size=5

    return max;
}
#22
何小达2017-05-26 20:54
回复 21楼 陈光星
/* Note:Your choice is C IDE */
include <stdio.h>
float
maxelement( float *a, int size );   //函数的声明,返回值为一个浮点型的变量,形参中有一个指针和一个整形。问:指针的作用是什么?
                                    //当向函数传递一个数组的时候,数组名会退化为指针。
                                    //可以这样改maxelement( float a[], int size );还是用数组,这样你应该能看的懂一点
                                     //问;maxelement( float a[], int size )这里的数组不用规定长度吗
                                     //你可以去看看谭浩强的那本C语言书,上面解释的很清楚了,这个a[]会从实参那接收长度,所以不用定义长度,只限于函数调用可以这样用,
                                       //如果是在定义的话就不行,还有其他的问题吗?
int
main( void )
{
    float A[ 5 ];//以下四行我都理解
    int i;

    for( i = 0; 5 > i; ++i )
        scanf( "%f", &A[ i ] );

    printf( "%f", maxelement( A, 5 ) );// 问:  maxelement(A,5)是什么意思,为什么这样写?
                                       // maxelement()是调用这个函数,A是数组名,5是数组元素上限。
                                       //函数maxelement()最终是不是返回一个值,再用printf函数打印的时候不用先引用那个函数,然后再先将一个变量赋值给那个函数,然后再打印出来吗
                                       //你自己也说了,maxelement()就是返回一个值,所以就不需要在赋值成变量然后再输出了,给你举个例子吧
                                       //printf("%d",5);就相当于这样。



    return 0;
}

float maxelement( float *a, int size )//函数的定义    //同样,这里也要改一下maxelement( float a[], int size );
{
    int i;
    float max;

    for( i = 1, max = a[ 0 ]; size > i; ++i )   //问:size是什么,为什么不用赋一个初始值
        max = max > a[ i ]? max : a[ i ];//size是形参。问;我知道是形参,但为什么可以不赋值呢
                                                       //答;因为size接受了实参传来的值,所以不用再赋值了,这时候size=5

    return max;
}
#23
陈光星2017-05-26 21:07
明白了
1