当前位置:   article > 正文

C语言实现-输入多个数计算平均值、排序(随机个数)_c语言输入不定数量求平均值

c语言输入不定数量求平均值

创作灵感:

        由于老师布置的C语言作业中,让我们算十个输的平均值,那么问题来了,如果事先并没有说明个数,阁下又该如何应对?

通过查阅资料,可以得到“键盘缓冲区”的概念,可以通过getchar函数读取并取走键盘缓冲区的数据,这样我们只需要检测到,如果用户按下回车键(读取‘\n’)时,记录输入的个数和跳出scanf输入循环,然后将数据计入平均值函数,即可得到我们想要的答案。

具体代码如下

  1. #include<stdio.h>
  2. float Score_adver[20]={0};
  3. float Adver(float Score_adver[],int Count) { //定义求平均数的函数
  4. float Sum=0;
  5. int i=0;
  6. for(i=0;i<Count;i++) //通过对输入数据进行累加
  7. {
  8. Sum+=Score_adver[i];
  9. }
  10. return Sum/Count*1.0; //返回平均值
  11. }
  12. int main()
  13. {
  14. printf("请输入成绩:\n");
  15. float adver=0;
  16. char ch = ' '; //定义一个空格(因为进入循环会读走一个数据)
  17. int Count=0; //所以需要向缓存区存入一个空格
  18. int n = 0;
  19. int i = 0;
  20. ungetc(ch, stdin); //输入一个空格到缓存区防止跳过第一个数据)
  21. for(i=0;(ch=getchar())!='\n';i++){ //判断是否有回车键,若有则跳出for循环,进入函数
  22. scanf("%f",&Score_adver[i]); //输入数据到分数数组
  23. Count++; //判断输入数据的个数
  24. }
  25. adver=Adver(Score_adver,Count); //传入数组和个数,进行计算平均值
  26. printf("平均数是%5.2f",adver);
  27. }

细节:因为进入scanf循环的时候他会把第一个数据读走,所以事先要给键盘缓存区输入一个空格,让它读走的

运算结果如下:


有了此基础,基本可以解决一般的不确定数输入问题,例如:不确定个数排序问题:

  1. #include<stdio.h>
  2. float Arr[20]={0};
  3. void Arrange(float Arr[],int Count) { //定义求平均数的函数
  4. int i=0;
  5. int j=0;
  6. int t=0;
  7. for(j=1; j<Count; j++) { //冒泡排序法对十个数据开始排序
  8. for(i=0; i<(Count-j); i++) { //通过前一个数组与与后一个数组比较大小
  9. if(Arr[i]>Arr[i+1]) { //如果前一个小于后一个,则相互交换一下位置
  10. t=Arr[i];
  11. Arr[i]=Arr[i+1];
  12. Arr[i+1]=t;
  13. }
  14. }
  15. }
  16. }
  17. int main()
  18. {
  19. printf("请输入成绩:\n");
  20. float adver=0;
  21. char ch = ' '; //定义一个空格
  22. int Count=0;
  23. int n = 0;
  24. int i = 0;
  25. ungetc(ch, stdin); //输入一个空格到缓存区防止跳过第一个数据
  26. for(i=0;(ch=getchar())!='\n';i++){ //判断是否有回车键,若有则跳出for循环,进入函数
  27. scanf("%f",&Arr[i]); //输入数据到分数数组
  28. Count++; //判断输入数据的个数
  29. }
  30. Arrange(Arr,Count);
  31. printf("\n排序后的数如下:\n"); //输出排序后的数组
  32. for(i=0; i<Count; i++) {
  33. printf("%.2f\t",Arr[i]);
  34. }
  35. }

运行结果如下:

更多的需要大家自行探索啦~以上是我的学习记录,谢谢观看,欢迎交流讨论!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/517685
推荐阅读
相关标签
  

闽ICP备14008679号