| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 947 人关注过本帖
标题:代码输出错误
只看楼主 加入收藏
captain2050
Rank: 2
等 级:论坛游民
帖 子:57
专家分:43
注 册:2016-7-15
结帖率:92.86%
收藏
已结贴  问题点数:20 回复次数:2 
代码输出错误
题目要求读入任意天数的浮点数温度,每天6个。
温度记录在动态分配内存的数组中,数组大小刚好等于输入的温度数。计算每天平均温度并输出,然后输出每天的温度记录。
程序的输出有问题。。。(setbuf(stdin,NULL);作用是清空输入缓冲区,linux上用的)

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

int main()
{
    int day_num=1;
    float **p=malloc(day_num*sizeof(float*));
    char con;
   

    while(1)
    {
        p[day_num]=malloc(6*sizeof(float));
        setbuf(stdin,NULL);
        for(int i=0;i<6;i++)
            scanf("%f",(p[day_num]+i));
        printf("continue?(y or n)");
        setbuf(stdin,NULL);
        scanf("%c",&con);
        con=tolower(con);
        if(con=='n')
            break;
        else if(con=='y')
        {
            day_num++;
            p=realloc(p,day_num*sizeof(float*));
        }
        else
        {
            printf("input error\n");
            return 0;
        }
    }
   

    for(int i=0;i<day_num;i++)
        printf("%d:%f-%f,%f,%f,%f,%f,%f\n",i+1,(p[i][0]+p[i][1]+p[i][2]+p[i][3]+p[i][4]+p[i][5])/6,p[i][0],p[i][1],p[i][2],p[i][3],p[i][4],p[i][5]);
   

}



[此贴子已经被作者于2016-8-25 09:48编辑过]

搜索更多相关主题的帖子: 动态 缓冲区 linux 记录 
2016-08-25 09:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
数组序号是从0开始的

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

int main( void )
{
    size_t day_num = 1;
    double (*p)[6] = malloc( day_num * sizeof(double[6]) );

    while(1)
    {
        for( size_t i=0; i!=6; ++i )
            scanf( "%lf", &p[day_num-1][i] );

        printf( "%s", "continue?(y or n) " );
        char con;
        if( scanf(" %c",&con)==1 && (con=='Y'||con=='y') )
            p = realloc( p, ++day_num * sizeof(double[6]) );
        else
            break;
    }

    for( size_t i=0; i!=day_num; ++i )
    {
        printf( "%zu: %f - %f,%f,%f,%f,%f,%f\n"
            , i+1
            , (p[i][0]+p[i][1]+p[i][2]+p[i][3]+p[i][4]+p[i][5])/6
            , p[i][0], p[i][1], p[i][2], p[i][3], p[i][4], p[i][5] );
    }

    return 0;
}

输入
1 2 3 4 5 6
y
2 3 4 5 6 7
y
3 4 5 6 7 8
n

结果是
1 2 3 4 5 6
continue?(y or n) y
2 3 4 5 6 7
continue?(y or n) y
3 4 5 6 7 8
continue?(y or n) n
1: 3.500000 - 1.000000,2.000000,3.000000,4.000000,5.000000,6.000000
2: 4.500000 - 2.000000,3.000000,4.000000,5.000000,6.000000,7.000000
3: 5.500000 - 3.000000,4.000000,5.000000,6.000000,7.000000,8.000000

2016-08-25 10:27
beyone
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:6
专家分:3
注 册:2016-8-24
收藏
得分:0 
我这个新人完全看不懂
2016-08-25 12:58
快速回复:代码输出错误
数据加载中...
 
   



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

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