| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 269 人关注过本帖
标题:不能正常输出数组
只看楼主 加入收藏
lxk1732942
Rank: 2
等 级:论坛游民
帖 子:155
专家分:91
注 册:2018-9-4
结帖率:100%
  已结贴   问题点数: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]);
}
2018-10-11 09:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:273
帖 子:6001
专家分:34319
注 册: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: 16Rank: 16Rank: 16Rank: 16
来 自:江西
等 级:版主
威 望:19
帖 子:190
专家分:1126
注 册: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编辑过]

2018-10-11 13:57
lxk1732942
Rank: 2
等 级:论坛游民
帖 子:155
专家分:91
注 册:2018-9-4
  得分:0 
能不能只输出有效数字,那么多0看着难受
2018-10-11 18:49
no1xijin
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:江西
等 级:版主
威 望:19
帖 子:190
专家分:1126
注 册: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
2018-10-11 20:01







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

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