zoukankan      html  css  js  c++  java
  • 第十三周编程总结

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

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

    函数接口定义:

    double dist( double x1, double y1, double x2, double y2 );
    

    其中用户传入的参数为平面上两个点的坐标(x1, y1)和(x2, y2),函数dist应返回两点间的距离。

    裁判测试程序样例:

    #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;
    }
    
    /* 你的代码将被嵌在这里 */
    

    输入样例:

    10 10 200 100
    

    输出样例:

    dist = 210.24
    1)实验代码
    double dist(double x1, double y1, double x2, double y2)
    {   
        return sqrt(pow(x2-x1,2)+pow(y2-y1,2));
    }
    2)设计思路
    1.自定义函数名称
    2.一个公式
    3)本题调试过程碰到问题及解决办法
    4)运行结果截图

    6-2 符号函数 (10 分)

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

    函数接口定义:

    int sign( int x );
    

    其中x是用户传入的整型参数。符号函数的定义为:若x大于0,sign(x) = 1;若x等于0,sign(x) = 0;否则,sign(x) = 1。

    裁判测试程序样例:

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

    输入样例:

    10
    

    输出样例:

    sign(10) = 1
    
    1)实验代码
    int sign( int x )
    {
     if(x>0)
     x=1;
     else if(x==0)
     x=0;
     else
     x=-1;
     return x;
    }
    2)设计思路
    1.自定义函数名称
    2.x分三种情况讨论
    3.返回x
    3)本题调试过程碰到问题及解决办法
    4)运行结果截图

    6-7 使用函数计算两个复数之积 (10 分)

    若两个复数分别为:c1=x1+y1ic_1=x_1 + y_1 ic1​​=x1​​+y1​​ic2=x2+y2ic_2=x_2 + y_2 ic2​​=x2​​+y2​​i,则它们的乘积为 c1×c2=(x1x2−y1y2)+(x1y2+x2y1)ic_1 imes c_2 = (x_1 x_2 - y_1 y_2) + (x_1 y_2 + x_2 y_1)ic1​​×c2​​=(x1​​x2​​y1​​y2​​)+(x1​​y2​​+x2​​y1​​)i

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

    函数接口定义:

    double result_real, result_imag;
    void complex_prod( double x1, double y1, double x2, double y2 );
    

    其中用户传入的参数为两个复数x1+y1iiix2+y2iii;函数complex_prod应将计算结果的实部存放在全局变量result_real中、虚部存放在全局变量result_imag中。

    裁判测试程序样例:

    #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 2
    -2 -3
    

    输出样例:

    product of complex is (4.000000)+(-7.000000)i
    
    1)实验代码
    void complex_prod( double x1, double y1, double x2, double y2 )   //定义求复数之积函数
    {
     result_real=x1*x2-y1*y2;        //c1*c2=(x1*x2-y1*y2)+(x1*y2+x2*y1)i
     result_imag=x1*y2+x2*y1;
    }
    2)设计思路
    1.自定义函数名称
    2.公式
    3.注意:最后不需要return
    3)本题调试过程碰到问题及解决办法
    函数类型为void,表示为不返回结果
    4)运行结果截图

     

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

    函数接口定义:

    int gcd( int x, int y );
    

    其中xy是两个正整数,函数gcd应返回这两个数的最大公约数。

    裁判测试程序样例:

    #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;
    }
    
    /* 你的代码将被嵌在这里 */
    

    输入样例:

    32 72
    

    输出样例:

    8
    
    1)实验代码
    int gcd( int x, int y )
    {
     int i;
     for(i=x;i>=1;i--)
     {
      if(x%i==0&&y%i==0)
         break;
        }
     return i;
    }
    2)设计思路
    1.自定义函数名称
    2.循环,从x递减
    3.判断都能被x和y整除的数,跳出循环
    4.返回i
    3)本题调试过程碰到问题及解决办法
    4)运行结果截图

    6-11 使用函数输出水仙花数 (20 分)

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

    函数接口定义:

    int narcissistic( int number );
    void PrintN( int m, int n );
    

    函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。

    函数PrintN则打印开区间(m, n)内所有的水仙花数,每个数字占一行。题目保证100mn≤10000。

    裁判测试程序样例:

    #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;
    }
    
    /* 你的代码将被嵌在这里 */
    

    输入样例:

    153 400
    

    输出样例:

    153 is a narcissistic number
    370
    371
    
    1)实验代码
    int narcissistic( int number )

     int x,count=0,i,sum=1,a,b=0; 
     x=number;
     while(x!=0)
     { 
      x=x/10;
      count++; //这里求n的位数
     } 
     x=number; //初始化x的值 进过while函数后x变化
     while(x!=0)
     { 
      a=x%10;  //求余
      for(i=1;i<=count;i++)
      {
       sum=sum*a;  //余数累乘
      }
      b=sum+b;   //累加
      x=x/10;   //位数减1
      sum=1; //初始化i sum 的值,发现循环里面套循环 end的值会变的很大 sum也是
     } 
     if(b==number)
     { 
      return 1;
     }else
     {
      return 0; 
     }
    }
     
    void PrintN( int m, int n )

     int i;  //从m+1位开始
     for(i=m+1;i<n;i++)     //同一个代码 新建一个源文件以后就可以了
     {                               //前面之所以使用x=number 是因为后面需要重置number的值;这里不需要重置 不用int M N
      if(narcissistic( i )==1)    //满足条件为真
       printf("%d ",i);
     }
    }
    2)设计思路
    1.自定义函数名称
    2.定义变量
    3.计算位数
    4.做循环,判断每一位数的位数次方的和是否等于n
    5.输出
    3)本题调试过程碰到问题及解决办法
    有些值做完计算后没有初始化
    4)运行结果截图
  • 相关阅读:
    快速排序
    常见的正则表达式验证(更新中)
    中介者模式
    RadioButtonList控件如何取得选中的值
    职责链模式
    设计模式之GOF23建造者模式
    设计模式之GOF23工厂模式02
    设计模式GOF23之工厂模式01
    多线程测试时的辅助类--CountDownLatch
    设计模式GOF23之单例模式
  • 原文地址:https://www.cnblogs.com/xirfly/p/10123086.html
Copyright © 2011-2022 走看看