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;
}
对我自己写的代码 有哪些更改意见的请私我或者不啬评论,感激不尽!