C 新手练习程序设计题目颜值平均眼镜

C 新手练习程序设计题目[颜值平均眼镜]_c语言

这道题目,一开始想到第一行输入人数,然后就要输入这些人的颜值,因此,我就想起了,动态内存+结构体,实不相瞒,最近自己刚刚才学完结构体和动态内存分配,正好想学以致用嘛。自己的编程之路也才刚刚起步。
于是就创建了一个结构体
struct yanzhi { int yz; }; 并且自己在main()函数里面也声明了结构体指针,用来动态分配多少人来存放颜值struct yanzhi * pArr;pArr = (struct yanzhi *)malloc(sizeof(struct yanzhi)*len);,我想我这么做对各位经过编程多年洗礼的大神来说多此一举吧,但是,怪我脑子直,在有限的时间里,我一时半会想不出简单的了昂。通过以上的创建,各个颜值就到位了。结构就是算平均值了。
在输入之前先创建一个int sum=0;并且在输入各个颜值之前呢,sum也不能闲着,就手就sum+=pArr[i].yz;。一切的一切都是为了自圆其说,哈哈。此处颜值平均数会涉及到小数部分,所以呢ave=sum*1.0/len;来最终得到浮点类型的ave;最后,各个都准备就绪,通过事先定义的整型 z 来统计和平均颜值接近在0.01之内的人数:
for (int j = 0; j<len; j++) { if (ave-pArr[j].yz<0.01&&ave-pArr[j].yz>-0.01) { z++; } } 最终输出z的值。此题就算完成了。这题没什么难度,对我们这种新手来说刚刚好吧。下面就列出源代码:

#include <stdio.h>
#include <malloc.h>			//Xcode 不支持此文件名,Xcode 把此文件名改为#include <sys/malloc.h>

struct yanzhi
{
    int yz;
};
int main()
{
    int len;
    int z=0;
    int sum=0;
    float ave;
    struct yanzhi * pArr;
    scanf("%d",&len);
    pArr = (struct yanzhi *)malloc(sizeof(struct yanzhi)*len);
    for (int i= 0; i<len; i++) {
        scanf("%d",&pArr[i].yz);
        sum+=pArr[i].yz;
    }
    ave=sum*1.0/len;

    for (int j = 0; j<len; j++) {
        if (ave-pArr[j].yz<0.01&&ave-pArr[j].yz>-0.01) {
            z++;
        }
    }
    printf("%d",z);
    z=0;
    return 0;
}

还是那句话,自己是真的把题目做繁杂了。但是,自己拿到题目之前,又是跟着郝斌老师的C语言教程刚刚自学了一遍。故在有限的时间里就想出了这些。

下面给出我们负责人给的参考答案吧

#include <bits/stdc++.h>
using namespace std;
int x[1005];
int main()
{
    double avg = 0;
    int n;
    cin >> n;
    for(int i=0;i<n;i++)
    {
        cin >> x[i];
        avg += x[i];
    }
    avg /= n;
    int cnt = 0;
    for(int i=0;i<n;i++)
    {
        if(fabs(x[i]-avg) < 0.01)
            cnt++;
    }
    cout << cnt << endl;
    return 0;
}

对我自己写的代码 有哪些更改意见的请私我或者不啬评论,感激不尽!