• 第十三周编程总结


    题目13-1 使用函数计算两点间的距离 (10 分)

    本题要求实现一个函数,对给定平面任意两点坐标(x​1​​,y​1​​)和(x​2​​,y​2​​),求这两点之间的距离。

    #include <stdio.h>
    #include <math.h>
    
    double dist( double x1, double y1, double x2, double y2 );
    
    int main()
    {    
        double x1, y1, x2, y2;
    
        scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2);
        printf("dist = %.2f
    ", dist(x1, y1, x2, y2));
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    

    1)实验代码

    double dist( double x1, double y1, double x2, double y2 )
    {
      double distance;
      distance = sqrt(pow(x1-x2,2)+pow(y1-y2,2));
      
      return distance;
    }
    

    2)设计思路

    第一步输入自定义函数名称
    第二步定义变量
    第三步计算距离

    3)

    问题:变量定义出错
    解决方法:重新定义

    4)运行结果截图

    题目13-2 符号函数 (10 分)

    本题要求实现符号函数sign(x)。

    #include <stdio.h>
    
    int sign( int x );
    
    int main()
    {
        int x;
    
        scanf("%d", &x);
        printf("sign(%d) = %d
    ", x, sign(x));
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    

    1)实验代码

    int sign( int x )
    {
      int s;  
      if(x>0){
        s = 1;
      }
      else if(x==0){
        s = 0;
      }
      else{
        s = -1;
      }  
      return s;
    }
    
    

    2)设计思路

    第一步 使用if-else语句对于X不同情况的讨论
    第二步 分别输出答案

    3)

    问题:返回值错误

    4)运行结果截图

    题目13-3 使用函数计算两个复数之积 (10 分)

    若两个复数分别为:c​1​​=x​1​​+y​1​​i和c​2​​=x​2​​+y​2​​i,则它们的乘积为 c​1​​×c​2​​=(x​1​​x​2​​−y​1​​y​2​​)+(x​1​​y​2​​+x​2​​y​1​​)i。

    本题要求实现一个函数计算两个复数之积。

    #include<stdio.h> 
    
    double result_real, result_imag;
    void complex_prod( double x1, double y1, double x2, double y2 );
    
    int main(void) 
    { 
        double imag1, imag2, real1, real2;	
    
        scanf("%lf %lf", &real1, &imag1); 			
        scanf("%lf %lf", &real2, &imag2); 			
        complex_prod(real1, imag1, real2, imag2); 	
        printf("product of complex is (%f)+(%f)i
    ", result_real, result_imag);
    	
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    
    
    

    1)实验代码

    void complex_prod( double x1, double y1, double x2, double y2 )
    
    {
    
    	result_real = x1*x2 - y1*y2;
    
    	result_imag = x1*y2 + x2*y1;
    
    }
    

    2)设计思路

    将算式写出即可

    3)

    问题:使用了返回值
    解决方法:去掉返回值

    4)运行结果截图

    题目13-4 使用函数求最大公约数 (10 分)

    本题要求实现一个计算两个数的最大公约数的简单函数。

    #include <stdio.h>
    
    int gcd( int x, int y );
    
    int main()
    {
        int x, y;
    
        scanf("%d %d", &x, &y);
        printf("%d
    ", gcd(x, y));
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    

    1)实验代码

    int gcd( int x, int y )
    {
      int i,j,result;
      for(i=1;i<=x;i++){
      for(j=1;j<=y;j++){
        if(x%i==0&&y%j==0)
            if(i==j) result=i;    
      }
    }
      return result;
    }
    

    2)设计思路

    第一步 依次找出两个数的公约数
    第二步 判断两个数的公因数是否相等,再循环赋值,得到最大公约数
    第三步 返回值

    3)本周调试过程遇到的问题及解决方法

    注意主函数名称后面不能加标点

    4)运行结果截图

    题目13-5 使用函数输出水仙花数 (20 分)

    水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1​3​​+5​3​​+3​3​​。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。

    #include <stdio.h>
    
    int narcissistic( int number );
    void PrintN( int m, int n );
    
    int main()
    {
        int m, n;
    
        scanf("%d %d", &m, &n);
        if ( narcissistic(m) ) printf("%d is a narcissistic number
    ", m);
        PrintN(m, n);
        if ( narcissistic(n) ) printf("%d is a narcissistic number
    ", n);
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    

    1)实验代码

    int narcissistic(int number)
    {
      int digit, powersum, integer, count;
      count = 0;
      integer = number;
      while(integer > 0)
      {
        integer = integer / 10;
        count++;
      }
      
      powersum = 0;
      integer = number;
      
      for(int i=0; i < count; i++)
      {
        digit = integer % 10;
        integer = integer / 10;
        powersum = powersum + pow(digit, count);
        
      }
      
      if(powersum == number)
        return 1;
      else
        return 0;
    }
    
    void PrintN(int m, int n)
    {
      int i;
      for(i = m + 1; i < n; i++)
        if (narcissistic(i) == 1)
                printf("%d
    ", i);
    }
    
    

    2)设计思路

    第一步使用while循环统计他的位数,并得到每位上的数字
    第二步使用for循环得到他的余数。并计算,每位上数字的位数方的结果
    第三步使用if-else语句来判断是否为水仙花数

    3)本周调试过程遇到的问题及解决方法

    此题需要再定义一个函数来打印区间,此时应当把返回1和返回0的代码放入此函数

    4)运行结果截图

  • 相关阅读:
    有道
    excel 数据入库
    iso-8859-1 Unicode 编码
    爬虫编码问题
    WIKi 百科爬虫
    降低耦合性获取微博数据
    Python基础总结3-字符串
    Python基础总结2
    Linux常用命令04(其他命令)
    Linux常用命令03(系统信息)
  • 原文地址:https://www.cnblogs.com/lmcmha/p/10160678.html
Copyright © 2020-2023  润新知