DAY7 C语言——函数调用(HQYJ)

作业1:定义有参无返回值函数实现,主调函数传递三角形三条边,被调函数中对其进行判断,判断能否构成三角形,如果能构成三角形,判断该三角形是等边三角形、等腰三角形还是一半三角形。如果不能构成三角形,则输出不能构成三角形。
#include <stdio.h>
#include <math.h>

void IsTriangle(double a, double b, double c);

int main(int argc, char const *argv[])
{
    double a,b,c;
    printf("请输入三角形三条边的边长:");
    scanf("%lf%lf%lf",&a,&b,&c);
    IsTriangle(a,b,c);
    return 0;
}

void IsTriangle(double a, double b, double c)
{
    //三角形是否成立判断条件
    if(a>0&&b>0&&c>0&&(a+b>c)&&(b+c>a)&&(a+c>b))
    {
        //等边三角形判断条件
        if(a==b&&b==c)
        {
            printf("该三角形是等边三角形!\n");
        }
        //等腰三角形判断条件
        else if (a==b||b==c||a==c)
        {
            printf("该三角形是等腰三角形!\n");  
        }
        //直角三角形判断条件
        else if((pow(a,2)+pow(b,2)==pow(c,2))||(pow(b,2)+pow(c,2)==pow(a,2))||(pow(a,2)+pow(c,2)==pow(b,2)))
        {
            printf("该三角形是直角三角形!\n");  
        }
        else
        {
            printf("该三角形是一般三角形!\n");  
        }
        
    }
    else
    {
        printf("不能构成三角形!!!\n");
    }
}
运行结果如下图所示:

作业2:使用有参无返回值函数实现如下应用题
电暖气是一种将电能转化为热能的产品。目前,国内的电采暖方式主要分为发热电缆地板辐射采暖、电热膜采暖和电暖气等。
编程实现输入用电量,计算电费功能.
注:电费采用的是阶段电费:
如果用电量在1-100度之间电费单价是0.35元
如果用电度数为101---200则电费单价是0.46元
超过200度则电费单价是0.68元
例如:如果用电量为120度,则前100 度按第一阶梯收费,剩余20度以第二阶梯价收费。
电费=100*0.35+(120-100)*0.46;
要求主调函数中输入所用电量,被调函数中输出所要缴纳的电费
#include <stdio.h>

void Caculate_Electric(double a);

int main(int argc, char const *argv[])
{
    double electri_fee;
    printf("请输入您的用电度数:");
    scanf("%lf",&electri_fee);
    Caculate_Electric(electri_fee);
    
    return 0;
}

void Caculate_Electric(double a)
{
    double money;
    if(a >= 1 && a <= 100)
    {
        money = a*0.35;
    }
    else if (a > 100 && a <= 200)
    {
        money = 100*0.35+(a-100)*0.46;
    }
    else
    {
        money = 100*0.35+100*0.46+(a-200)*0.68;
    }
    printf("您的用电费用为:%.1lf\n",money); 
}
运行结果如下图所示:

作业3:定义有参无返回值函数,在主函数中完成输入字符串,将数组名作为函数参数传递,在被调函数中,将字符串中的数字字符存入新数组,分别统计奇偶个数、和、平均值输出。
#include <stdio.h>

void character(char A[],int n);

int main(int argc, char const *argv[])
{
    char str[80];
    gets(str);
    character(str,strlen(str));
    
    return 0;
}

void character(char A[],int n)
{
    char B[n];
    int j = 0;  //数字个数
    int odd = 0,even = 0;   //奇数  偶数个数
    int sum = 0;
    printf("该字符串中数字有:\n");
    for(int i = 0; i < n; i++)
    {
        if(A[i]>='0'&&A[i]<='9')
        {
            B[j] = A[i];
            printf("%c\t",B[j]);
            sum += B[j]-'0';
            if((B[j]-'0')%2==0)
                even++;
            else
                odd++;
            j++;
        }
    }
    printf("\n其中奇数有%d个,偶数有%d个\n",odd,even);
    printf("\n和:%d,平均值:%lf\n",sum,(double)sum/j);
}
运行结果如下图所示:

作业4:定义函数实现:
主调函数中定义一个数组,存储6名学生的成绩。
调用自定义的有参无返回值函数完成6名学生的成绩录入。
调用自定义的有参无返回值函数完成对成绩的输出。
调用有参无返回值函数,完成对成绩的升序排序。
调用自定义的有参有返回值函数,求出总成绩后,在主调函数输出总成绩
#include <stdio.h>

void Data_Entry(double A[],int n);  //数据录入
void Data_Output(double A[],int n); //数据打印
void BubbleSort(double A[],int n);  //冒泡排序
double Sum_Grade(double A[],int n); //计算总成绩

int main(int argc, char const *argv[])
{
    double grade[6];
    Data_Entry(grade,6);
    printf("\n<-------------------分隔符------------------->\n");
    printf("\n录入的学生成绩如下:\n");
    Data_Output(grade,6);
    printf("\n<-------------------分隔符------------------->\n");
    BubbleSort(grade,6);
    printf("\n<-------------------分隔符------------------->\n");
    printf("\n总成绩为:%.1lf\n",Sum_Grade(grade,6));
    
    return 0;
}

//数据录入
void Data_Entry(double A[],int n)
{
    for(int i = 0; i < n;)
    {
        printf("请输入第%d名同学的成绩(百分制):",i+1);
        scanf("%lf",&A[i]);
        if(A[i]>=0 && A[i]<=100){
            i++;
        }else{
            printf("输入有误,请重新输入!!!\n");
        }
    }   
}

//数据打印
void Data_Output(double A[],int n)
{
    for (int i = 0; i < n; i++)
    {
        printf("%.1lf\t",A[i]);
    }
    printf("\n");   
}

//冒泡排序
void BubbleSort(double A[],int n)
{
    double temp;
    for (int i = 1; i <= n-1; i++)  //外部趟数
    {
        int flag = 0;       //表示本趟冒泡是否发生变换的标志
        for (int j = 0; j < n-i; j++)
        {
            if(A[j] > A[j+1])   //互为逆序
            {
                //交换
                temp = A[j];
                A[j] = A[j+1];
                A[j+1] = temp;

                flag = 1;   //表示已发生变换
            }
        }
        if(flag == 0)
            break;   
    } 
    printf("\n排序后的成绩为:\n");
    Data_Output(A,6); 
}

//计算总成绩
double Sum_Grade(double A[],int n)
{
    double sum = 0;
    for (int i = 0; i < n; i++)
    {
        sum += A[i];    
    }
    return sum;
}
运行结果如下图所示:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值