第十三周编程总结--助教

题目1 使用函数计算两点间的距离
(1)实验代码
#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\n", dist(x1, y1, x2, y2));
    return 0;
}
double dist( double x1, double y1, double x2, double y2 )
{
 double x, y, s;
 x = pow((x1 - x2), 2);
 y = pow((y1 - y2), 2);
 s = sqrt(x + y);
 
 return s;
}
(2)设计思路
第一步:这是个数学公式直接套用就行
第二步:返回计算出的值
(3)本题调试过程碰到问题及解决办法
一个公式,不难。一次通过
(4)运行结果截图

题目2 符号函数
(1)实验代码
#include <stdio.h>
int sign( int x );
int main()
{
    int x;
    scanf("%d", &x);
    printf("sign(%d) = %d\n", x, sign(x));
    return 0;
}
int sign( int x )
{
 
 if(x>0)
 x = 1;
 
 if(x==0)
 x = 0;
 
 if(x<0)
 x = -1;
 
 return x;
}
(2)设计思路
第一步:用三个if语句判断
第二步:赋值相应的值给x
第三步:返回x的值
(3)本题调试过程碰到问题及解决办法
一次过,没什么问题
(4)运行结果截图

题目3 使用函数计算两个复数之积
(1)实验代码
#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\n", result_real, result_imag);
 
    return 0;
}
void complex_prod( double x1, double y1, double x2, double y2 )
{
 result_real = x1*x2 - y1*y2;
 result_imag = x1*y2 + x2*y1;
 }
(2)设计思路
第一步:题目给了计算的公式
第二步:直接套用,void是没有返回值的
第三步:得出结果
(3)本题调试过程碰到问题及解决办法
无问题,一次过
(4)运行结果截图

题目4 8 使用函数求最大公约数
(1)实验代码
#include <stdio.h>
int gcd( int x, int y );
int main()
{
    int x, y;
    scanf("%d %d", &x, &y);
    printf("%d\n", gcd(x, y));
    return 0;
}
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)设计思路
第一步:题目给的是求最大公约数,所以我们可以从x本身开始除起,每次递减一
第二步:定义 变量,用for循环
第三步:用if判断,同时满足两个数都能相除
第四步:返回i值
(3)本题调试过程碰到问题及解决办法
一次通过,无问题。
(4)运行结果截图

题目5 使用函数输出水仙花数
(1)实验代码
#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\n", m);
    PrintN(m, n);
    if ( narcissistic(n) ) printf("%d is a narcissistic number\n", n);
    return 0;
}
int narcissistic(int number)
{
    int i, j, digit, power, powerSum, integer, count, flag; 
    count = 0;
    integer = number;//赋值计算
    while (integer > 0)//判断有几位数
    {
        integer = integer / 10;
        count++;
    }
    powerSum = 0;
    integer = number;//重新赋值
   
    for (i = 0; i < count; i++)
    {
        digit = integer % 10;//每次拆个位数
        integer = integer / 10;//降位
        power = 1;
       
        for (j = 0; j < count; j++)//有几位数乘几次
            power = power*digit;
        powerSum = powerSum + power;//将每位数成完后累加
    }
    if (powerSum == number)
        flag = 1;
       
    else
        flag = 0;
       
    return flag;
}
void PrintN(int m, int n)
{
    int i;
    for (i = m + 1; i < n; i++)
    {
        if (narcissistic(i) == 1)
            printf("%d\n", i);
    }
}
(2)设计思路
第一步:先可以把判断水仙花数这个函数写完,另外一个函数就调用这个函数
第二步:看代码上的注释
(3)本题调试过程碰到问题及解决办法
小问题比较多,一个是m==n时的输出,还有没看清题目,是有几位数就是几次幂。
(4)运行结果截图

转载于:https://www.cnblogs.com/zw431387/p/10086446.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include #include struct DATA { int ID; char name[4]; char sex[3]; int score; }; void paixu(int*,DATA*,int); int sishewuru(double); void func1(int*,int*,DATA*,int*,int,int,int,int);//统计男女比例 int func2(int*,int,DATA*);//查找考生序号 void print(); void main() { int length=0,i,yiben,erben,sanben,dazhuan,male[4],female[4]; int yi,er,san,si; char input; FILE* file=fopen("f1.txt","r"),*file1; if(file==NULL) { printf("No such file!\n"); return; } while(EOF!=fscanf(file,"%*[^\n]\n")) length++;//自动计算考生数罝ATA* data=(DATA*)malloc(length*sizeof(DATA)); int* pai=(int*)malloc(length*sizeof(int)); rewind(file); for(i=0;i='0'&&input<='4')) { printf("非法输入,请重新输入\n请输入:"); fflush(stdin); } else break; } getchar(); switch(input) { case '0': printf("\n一类本科招生线:%d\n二类本科招生线:%d\三类本科招生线:%d\\n高职高专招生线:%d\n",yi,er,san,si); printf("是否打印为文件?(y/n):"); if(getchar()=='y') { file1=fopen("各批次录取分数线.txt","w"); fprintf(file1,"一类本科招生线:%d\n二类本科招生线:%d\\n三类本科招生线:%d\n高职高专招生线:%d\n",yi,er,san,si); fclose(file1); } fflush(stdin); break; case '1': func1(male,female,data,pai,yiben,erben,sanben,dazhuan); printf("一类本科招生线男女比例:%d:%d\n",male[0],female[0]); printf("二类本科招生线男女比例:%d:%d\n",male[1],female[1]); printf("三类本科招生线男女比例:%d:%d\n",male[2],female[2]); printf("高职高专招生线招生线男女比例:%d:%d\n",male[3],female[3]); printf("是否打印为文件?(y/n):"); if(getchar()=='y') { file1=fopen("各批次录取男女比例.txt","w"); fprintf(file1,"一类本科招生线男女比例:%d:%d\n",male[0],female[0]);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值