搜索
查看: 1476|回复: 2
打印 上一主题 下一主题

求指点。

[复制链接]
跳转到指定楼层
楼主
发表于 2013-4-4 13:00:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
有代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    float *p = NULL;
    int i = 0;
    float total = 0.0f;
    p =  (float *)malloc(100*sizeof(float));
    /*if(p == NULL);
    {
                printf("Out of memory!");
        exit(1);
    }*/
    for(i = 0;i<100;++i)
    {
        scanf("%f",(p+i));
        if(*(p+i) == 0.0f)
                        break;
        printf("*(p+%d) = %f\n",i,*(p+i));
        total += *(p+i);
    }
    printf("total = %f\n",total);
    printf("%f\n",total/i);

       
        system("pause");
        return 0;
}
这段代码在数据类型是float时可以正确执行,但改成double类型就不行了,这是怎么回事?还有,中间用/*括起来的部分如果也放进代码中,一执行就会闪退,这又是什么原因,难道这点内存都分配不了?

最佳答案

查看完整内容

先回答第二个问题后面多了引号 所以直接执行了后面的输出错误提示和退出 数据类型改成double是可以的,估计你哪里忘了改之类的 可以具体看看错误提示
沙发
发表于 2013-4-4 13:00:43 | 只看该作者
先回答第二个问题
  1. if(p == NULL);
复制代码
后面多了引号
所以直接执行了后面的输出错误提示和退出

数据类型改成double是可以的,估计你哪里忘了改之类的
可以具体看看错误提示
板凳
发表于 2013-4-4 15:43:27 | 只看该作者
我都看不懂
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表