我是刚来的菜鸡,写题解是除了想提供另一种思路,还想让同学们看看我的代码有没有可以改进之处,毕竟刚刚学习C语言,还没形成规范和掌握套路。如有建议请提出,本人必定学习一番,以让我的基础更加巩固,谢谢同学们!

注:我试过用普通思路和链表的思路,链表用时短一点;

解题思路:本题我是用的链表(不知道我说的对不对,错误请指正)。

参考代码:

#include<stdio.h>
typedef struct number{
 int num;
 struct student *next;
}stu;
int main(){
 int a = 10, b = 0, c = 0;
 stu *head, *p;
 head= (stu *)malloc(sizeof(stu));//链表头
 head->next = NULL;
 p = head;
 while (a != 0) {//输入10个数据
  stu *b;
  b = (stu *)malloc(sizeof(stu));
  scanf("%d", &b->num);
  b->next = NULL;
  p->next = b;
  p = b;
  a--;//a到0时退出循环
  }
  stu *pr = head->next, *pt = pr;
 while (pr) {//这个是10个数据的总和
  b += pr->num;
  pr = pr->next;
 }
 b /= 10;//求平均
 while (pt) {//每大于平均数一次C就+1
  if (pt->num > b) {
   c++;
  }
  pt = pt->next;
 }
 printf("%d\n", c);
 return 0;
}


点赞(13)
 

0.0分

4 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 4 条评论

小黑鱼王 4年前 回复TA
看一下我的~就是一个简单的数组输入,然后循环.
不过我承认你的强大,哈哈哈我现在还没有学习链表.加油共勉
#include<stdio.h>
int main()
{
	int a[10];
	int i=0,j=0;
	int sum=0; 
	int avr;
	
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
		sum=sum+a[i];
	}
	avr=sum/10;
	for(i=0;i<10;i++)
	{
		if(a[i]>avr)j++;
	}
printf("%d",j);
return 0; 
 }
我头铁 4年前 回复TA
.....简单的题 让你做复杂了
知识在等待 4年前 回复TA
啧啧,太难了,作为初学者的我,链表这种算法还未掌握。
天尊沐笙 4年前 回复TA
我学C++的,但我觉得你这个有些复杂化,可以直接用数组和循环和比较