HPU 24级大数据C语言实验课题解(3.17)

说明:本题解仅供参考,仅为单纯一种解法,笔者深知自己水平有限,鼓励大家用更加简洁的代码来解题。本题解仅供学习使用,请勿直接抄袭,由于部分题目设置了禁止粘贴,所以以截图方式呈现。

题目来源:头歌实践教学平台

循环结构设计2

(1)求平均数

很简单,创建数组求和,之后除去人数即可,注意当人数为0人时,输出0.00

#include<stdio.h>
	int main(void)
	{  
	  /*********Begin*********/
	int n;
	    
  double z,sum = 0,ave;
  scanf("%d",&n);
  if(n>0){
	  for(int i = 0;i < n;i++){
        scanf("%lf",&z);
        sum += z;
      }
      ave = sum/n;
    }else{
      ave = 0.00;
    }
   
	  printf("the number of students:the scores:average=%.2lf",ave);
	  /*********End**********/ 
       return 0;
	}

(2)求各位数字之积

考虑到用while循环,在使用过程中,每次将num%10,得到个位数字,然后判断其是否为0,之后用x存储积,最后,让num/10为下次循环做准备。

#include<stdio.h>
	int main(void)
	{  
	  /*********Begin*********/
	  int num;
      scanf("%d",&num);
      
      int x = 1,y;
      if(num % 10 == 0){
          x = 0;
      }else{
      while(num > 0){
        y = num % 10;
        if(y != 0){
           x *=y;
        }
        num /= 10;
      }
      }
	  printf("%d",x);
	  /*********End**********/ 
       return 0;
	}

(3)求阶乘之和

首先需要定义两个long long变量存储结果(考虑到结果可能超出int范围)之后用两个for循环,第一个检索1-n的每个数,第二个算出阶乘,在第一个循环末尾,我们用b存储结果,输出记得用%lld

#include<stdio.h>
	int main(void)
	{  
	  /*********Begin*********/
	  int n;
      scanf("%d",&n);
      long long a = 0,b = 0;
      for(int i = 1;i <= n;i++){
      	 a = 1;
          for(int j = 1;j <= i;j++){
            a *= j;
          }
        b += a;
        
      }
	  printf("%lld",b);
	  /*********End**********/ 
       return 0;
	}

(4)水仙花数

首先利用之前的方法,分离每个数字,之后利用math.h下的pow函数求出三次方之和,检查是否等于原数。

当然,考试的时候如果想不到也可以直接无脑printf

#include<stdio.h>
#include<math.h>
	int main(void)
	{  
	  /*********Begin*********/
	  for(int i = 100;i < 1000;i++){
          int ge = i%10;
          int shi = i/10%10;
          int bai = i/10/10%10;
          int b = pow(ge,3) +pow(shi,3) + pow(bai,3);
          if(b == i)
          printf("%d ",i);
      }
	  
	  /*********End**********/ 
       return 0;
	}

(5)寻找完数

我们首先用一个for循环遍历1-1000的数,之后再利用for循环来求出因数,最后检查是不是完数。

#include<stdio.h>
#include<math.h>
	int main(void)
	{  
	  /*********Begin*********/
	  for(int i = 1;i <=1000;i++){
          int sum = 0;
          for (int j = 1;j <= sqrt(i);j++){
              if(i % j == 0){
                  sum +=j;
                  if(j != i / j) { 
                    sum += i / j;
                }
              }
          }
          if((sum-i )== i){
              printf("%d\n",i);
          }
      }
	  
	  /*********End**********/ 
       return 0;
	}

(6)分数求和

我们先创建一个sum来存储结果,之后用for循环来进行计算,其中如果是偶数那就-=,如果是奇数就+=,得出结果。

#include<stdio.h>
	int main(void)
	{  
	  /*********Begin*********/
	  double sum = 0;
      double b = 0;

      for(int i = 1;i<= 100;i++){
          b = 1.00 / i;
        if(i % 2 == 0){
            sum -= b;
        }else{
            sum += b;
        }
      }

      
      
      printf("%.3lf",sum);
	  
	  /*********End**********/ 
       return 0;
	}

祝大家学习愉快,我们下次实验课再见!

ps.数组的题还在赶工,马上就可以写出来了。看在这么辛苦的份上点点赞吧!!!

鸣谢:翟海霞老师

内容概要:《机器人综合基础实践教程》(入门篇、提高篇)涵盖了机器人基础构建、编程控制、传感器应用等多个方面。教程从机械零件简介入手,逐步介绍主控板和编程环境的配置,随后通过一系列实验引导读者动手实践,包括驱动轮模块、双轮万向车、红外启动小车、带传动模块、履带机器人、红绿灯等实验。这些实验不仅帮助读者理解基本原理,还涉及高应用如蓝牙电子温度计、语音识别、双轮小车平衡、蓝牙排爆机器人和WiFi视频排爆等。教程旨在培养读者的空间构型能力、编程技巧和综合调试能力,为机器人技术的实际应用打下坚实基础。 适用人群:具备一定编程基础和技术兴趣的学生、教师及爱好者,特别是对机器人技术感兴趣的初学者和中学习者。 使用场景及目标:①帮助学生理解机器人基本原理,掌握机械零件组装和编程控制;②通过实际操作,提升编程和调试技能;③为机器人竞赛、项目开发和创新实践提供理论和实践指导;④培养创新思维和解决实际问题的能力。 其他说明:教程不仅提供详细的实验步骤和代码示例,还配有丰富的参考资料和光盘课件,确保学习者能够全面理解和掌握知识点。此外,教程强调实践操作的重要性,鼓励学习者通过动手实验加深理解,培养独立思考和解决问题的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值