标题:不能正常输出数组
只看楼主
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
结帖率:96.43%
已结贴  问题点数:20 回复次数:4 
不能正常输出数组
程序代码:
#include<stdio.h>
float compare(float a[99],int n)//对数组前n项排序
{
    int i,j;
    float t;
    for(i=0;i<n-1;i++)
        for(j=i+1;j<n;j++)
            if(a[i]>a[j])
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
    return(a[99]);
}
void main()
{
    float array[99]={0};
    int i,n;
    printf("input some numbers(input 0.1 to end):\n");
    n=0;
    do
    {
        scanf("%f",array[n++]);
    }while(array[n-1]!=0.1);
    compare(array,n-1);
    for(i=0;i<n-1;i++)
        printf("%f",array[i]);
}
搜索更多相关主题的帖子: 输出 数组 float int array 
2018-10-11 09:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
要不 换个标准的C编译器,代码也规规矩矩地写 试试
程序代码:
#include <stdio.h>

void sort( double a[], size_t n )
{
    for( size_t i=0; i!=n; ++i )
    {
        for( size_t j=i+1; j!=n; ++j )
        {
            if( a[j] < a[i] )
            {
                double t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
        }
    }
}

int main( void )
{
    double a[100];
    size_t n;

    printf("input some numbers(input 0.1 to end):\n");
    for( n=0; scanf("%lf",&a[n])==1 && a[n]!=0.1; ++n );

    sort( a, n );

    for( size_t i=0; i!=n; ++i )
        printf( "%f%c", a[i], " \n"[i+1==n] );
}

2018-10-11 10:39
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
得分:10 
1.scanf("%f",&array[n++]);    // 缺少取地址符 &

2.你的主函数中do...while的结束条件不对,你修改一下结束条件就可以了,用!(array[n-1]>0  && array[n-1]<1)这个当结束条件可以输出你要的结果。
float 类型不能比较相等或不等,但可以比较>,<,>=,<=
用==从语法上说没错,但是本来应该相等的两个浮点数由于计算机内部表示的原因可能略有微小的误差,这时用==就会认为它们不等。应该使用两个浮点数之间的差异的绝对值小于某个可以接受的值来判断判断它们是否相等,比如用
    if (fabs(price - p) < 0.000001)
来代替
    if (price == p)

3.你的结果的格式没调好,这个就你自己尝试调好即可。

[此贴子已经被作者于2018-10-11 14:00编辑过]


126邮箱联系方式:no1xijin@126. com
2018-10-11 13:57
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
得分:0 
能不能只输出有效数字,那么多0看着难受
2018-10-11 18:49
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
得分:0 
仅保留小数点后2位可如下写:
for(i=0;i<n-1;i++)
        printf("%.2f",array[i]);

其余格式控制可以参考这个:https://baike.baidu.com/item/printf%28%29/402521?fr=aladdin

126邮箱联系方式:no1xijin@126. com
2018-10-11 20:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490294-1-1.html




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

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