计241 作业2:C程序设计初步

news2024/9/28 19:58:35

问题 A: C语言实验——计算A+B(顺序结构)

思路讲解:

这个直接计算a+b就好,没有什么困难的,用来熟悉环境最适合不过


代码实现:

#include<stdio.h>

int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d\n",a+b);

    return 0;
}

问题 B: 电子欢迎器

思路讲解:

这个就是学会使用字符数组,学会字符数组的输入输出,注意scanf这里不用加&,这个单独记住就好,然后就是空格不要去数,直接复制粘贴就好,然后注意换行,不然就格式错误了。

代码实现:

#include<stdio.h>

int main()
{
    char name[20];
    char howetown[20];

    scanf("%s",name);
    scanf("%s",howetown);

    printf("******************************************\n");
    printf("             Welcome\n");
    printf("             %s(%s)\n",name,howetown);
    printf("******************************************\n");

    return 0;
}

问题 C: 输入两个整数,进行四则运算并输出结果

 这道题主要是数据比较友好,保证了a一定能够整除b,否则的话就要去考虑a/b为小数的情况 ,到时候就需要使用浮点数了,要不两个int做除法遵循向下取整的原则,
https://blog.csdn.net/weixin_47712251/article/details/130675475
给你们找了一个博客,里面介绍了除法,包括整数的和浮点数的

我再自己额外说一点吧
 

C语言中的除法操作是通过运算符 / 来实现的。根据被除数和除数的类型,C语言中的除法可以分为以下几种情况:

1. 整数除法

  • 定义:当被除数和除数都是整数时,C语言执行整数除法。
  • 特点:结果会是一个整数,任何小数部分会被截断(向下取整)。

示例

#include <stdio.h>

int main() {
    int a = 10;
    int b = 3;
    int result = a / b;  // result将是3,忽略了小数部分
    printf("整数除法: %d / %d = %d\n", a, b, result);
    return 0;
}

2. 浮点除法

  • 定义:当被除数或除数是浮点数(floatdouble类型)时,C语言执行浮点除法。
  • 特点:结果将是一个浮点数,可以包含小数部分。

示例
 

#include <stdio.h>

int main() {
    float a = 10.0;
    float b = 3.0;
    float result = a / b;  // result将是3.333333
    printf("浮点除法: %.2f / %.2f = %.2f\n", a, b, result);
    return 0;
}

3. 整数与浮点数的除法

  • 定义:如果一个整数被一个浮点数除,结果将是浮点数。

示例
 

#include <stdio.h>

int main() {
    int a = 10;
    float b = 3.0;
    float result = a / b;  // result将是3.333333
    printf("整数与浮点数的除法: %d / %.2f = %.2f\n", a, b, result);
    return 0;
}

4. 除数为零的情况

  • 注意:在进行除法运算时,必须确保除数不为零。如果除数为零,程序会导致运行时错误,通常会引发一个“除以零”错误。

示例
 

#include <stdio.h>

int main() {
    int a = 10;
    int b = 0;

    if (b != 0) {
        int result = a / b;
        printf("结果: %d / %d = %d\n", a, b, result);
    } else {
        printf("错误: 除数不能为零!\n");
    }

    return 0;
}

总结

  • C语言支持整数除法和浮点除法。
  • 在进行除法运算时,注意检查除数是否为零,以避免程序崩溃。
  • 根据不同的数据类型,结果的类型也会有所不同。

通过理解这些基本概念,可以在C语言中有效地进行除法操作。
 

C题代码: 

#include<stdio.h>
int main(){
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d\n",a+b);
    printf("%d\n",a-b);
    printf("%d\n",a*b);
    printf("%d",a/b);
    return 0;
}

 问题 D: 三个整数和、积与平均值
 

思路讲解:

这道题的计算平均数就利用到了我刚才C题中所介绍的除法的应用,其他再没有什么了,

其实关于这个转化为浮点数的方法有很多种,

在这里我介绍一下类型转化吧

1. double a = b;

  • 类型:隐式类型转换(或自动类型转换)
  • 描述:在这一行代码中,变量 b 的值被隐式转换为 double 类型,并赋值给 a。这意味着如果 b 是一个其他类型(如 int 或 float),编译器会自动将其转换为 double 类型,而无需显式地指定转换。这个过程通常是安全的,因为 double 类型的范围和精度比其他类型要大。

示例

#include <stdio.h>

int main() {
    int b = 5;        // b 是一个整数
    double a = b;    // 隐式转换为 double
    printf("%f\n", a); // 输出: 5.000000
    return 0;
}

2. (double) b

  • 类型:显式类型转换(或强制类型转换)
  • 描述:在这一行代码中,(double) b 表示将 b 强制转换为 double 类型。这里的强制类型转换是通过在变量前加上类型名称来实现的。它明确地告诉编译器将 b 转换为 double 类型,可以用于需要指定类型的上下文。

示例

#include <stdio.h>

#include <stdio.h>

int main() {
    int b = 5;              // b 是一个整数
    double a = (double) b; // 显式转换为 double
    printf("%f\n", a);     // 输出: 5.000000
    return 0;
}

总结

  • 隐式类型转换double a = b; 会自动将 b 转换为 double 类型。
  • 显式类型转换(double) b 明确要求将 b 转换为 double 类型,通常在需要特定类型的上下文中使用。

在大多数情况下,隐式转换会更简洁,而显式转换则提供了更高的控制和可读性,尤其是在复杂的表达式中。

这道题还有关于浮点数的一些知识点,比如,float和double的区别,float用%f,double 使用%lf,
%.2lf是保留小数点后两位,同学们可以去CSDN上进行自行搜索,不过也不着急,反正你们后续做题也就会了


代码实现:

#include<stdio.h>
int main()
{
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);

    printf("%d %d %.2lf",a+b+c,a*b*c,(a+b+c)/3.0);//因为3.0是一个浮点数,所以整数与浮点数做除法,结果一个浮点数
    return 0;
}

 或者是

#include<stdio.h>
int main()
{
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);

    printf("%d %d %.2lf",a+b+c,a*b*c,(double)(a+b+c)/3);
    return 0;
}

问题 E: C语言实验——圆柱体计算



思路讲解:

这里题干说的定义,我使用了define,你们可能还没学,不过使用double PI=3.1415926也一样没什么区别

代码实现:
 

#include<stdio.h>
#define PI 3.1415926
int main()
{
    double r,h;
    scanf("%lf %lf",&r,&h);
    double C=2*PI*r;
    double S1=PI*r*r;
    double S2=C*h;
    double V=S1*h;
    printf("%.2lf %.2lf %.2lf %.2lf",C,S1,S2,V);
    return 0;
}

问题 F: 输出两个整数中较小的数(1)


思路讲解
 

这道题题干也说了,有很多种做法,那么我就来简单介绍几种吧


1.写条件判断语句,也就是if else 语句
#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    if(a<b)
    {
        printf("min=%d",a);
    }
    else
    {
        printf("min=%d",b);
    }
    return 0;
}
2.使用函数

C++中自带min函数和max函数,而C语言中没有,那么我们可以自己手写,min函数和max函数,我想函数你们肯定还没学,所以有能力的同学可以先自行研究着,如果实在理解不了,等后期你们学了函数就明白了
 

#include<stdio.h>

int min(int a,int b) //min函数,作用是返回参数a和参数b当中较小的那一个 int类型的函数
{
    if(a>b)
    {
        return b;
    }
    else
    {
        return a;
    }
}

int main()
{
    int x,y;
    scanf("%d %d",&x,&y);
    printf("min=%d\n",min(x,y));

    return 0;
}

3,使用三目运算符
 

所谓的三目运算符,这里指的就是?:表达式,那么何为?:表达式

三目运算符(Ternary Operator),也称为条件运算符,是一种简洁的条件判断表达式,通常用于替代简单的 if-else 语句。它的基本形式为:
 

条件 ? 表达式1 : 表达式2

1. 基本语法

  • 条件:一个布尔表达式(返回真或假)。

  • 表达式1:当条件为真时返回的值或表达式。

  • 表达式2:当条件为假时返回的值或表达式。

2. 工作原理

三目运算符根据条件的真值来决定返回哪一个表达式的值:

  • 如果条件为真(true),则返回表达式1。

  • 如果条件为假(false),则返回表达式2。

#include<stdio.h>

int main()
{
    int x,y;
    scanf("%d %d",&x,&y);

    printf("min=%d\n",x>y?y:x);

    return 0;
}

问题 G: 输出两个整数中较小的数(2)
 
 

这道题和上一道题一样的,就略过了

问题 H: 求三角形面积 

 

思路讲解:

 

预备知识的话,就是海伦公式,然后就是判断是否能构成三角形条件,这个你们都很熟,任意两边之和大于第三边,


这里补充一下开根号的函数
sqrt,使用这个函数之前需要引入math头文件

 代码实现:
 

#include<stdio.h>
#include<math.h>
int main()
{
    double a,b,c,s,area;
    scanf("%lf %lf %lf",&a,&b,&c);
    if(a+b>c && a+c>b && b+c>a)
    {
        s=(a+b+c)/2;
        area=sqrt(s*(s-a)*(s-b)*(s-c));
        printf("area=%.2lf",area);
    }
    else
    {
        printf("error input");
    }
    return 0;
}

问题 I: 夏令营的年龄



思路讲解:



其实就是那道求最小值的题,现在只不过是三个数,除了求最小值,还要求最大值,这道题实现的方式也很多,可以if else语句,可以使用三目运算符,可以使用遍历,函数也可以

来吧:

 

//使用if和else语句进行判断
#include <stdio.h>
int main()
{
    int age1,age2,age3;
    scanf("%d %d %d",&age1,&age2,&age3);
    int max_age=age1;
    if(age2>max_age)
    {
        max_age=age2;
    }
    if(age3>max_age)
    {
        max_age=age3;
    }
    int min_age=age1;
    if(age2<min_age)
    {
        min_age=age2;
    }
    if(age3<min_age)
    {
        min_age=age3;
    }
    
    int diff=max_age-min_age;
    
    printf("%d",diff);
    return 0;
}

#include<stdio.h>

int main()
{
    int age1,age2,age3,max_age,min_age,diff;

    scanf("%d %d %d",&age1,&age2,&age3);

    ///寻找最大年龄
    if(age1>age2 && age1>age3)
    {
        max_age=age1;
    }
    else if(age2>age1 && age2>age3)
    {
        max_age=age2;
    }
    else
    {
        max_age=age3;
    }

    ///寻找最小年龄

    if(age1<age2 && age1<age3)
    {
        min_age=age1;
    }
    else if(age2<age1 && age2<age3)
    {
        min_age=age2;
    }
    else
    {
        min_age=age3;
    }

    diff=max_age-min_age;

    printf("%d\n",diff);

    return 0;
}
//三目运算符
#include<stdio.h>

int main()
{
    int age1,age2,age3;
    scanf("%d %d %d",&age1,&age2,&age3);

    int max_age=(age1>age2?age1:age2)>age3?(age1>age2?age1:age2):age3;
    int min_age=(age1<age2?age1:age2)<age3?(age1<age2?age1:age2):age3;

    int diff=max_age-min_age;

    printf("%d\n",diff);

    return 0;
}
//使用遍历数组来实现
#include<stdio.h>

int main()
{
    int a[4];//开数组

    //数组的下标是从0开始的,一共是3个元素,因此下标是0,1,2,a[0],a[1],a[2]
    for(int i=0;i<3;i++)
    {
        scanf("%d",&a[i]);
    }

    int Max=0; //求最大的年龄,初始化为无穷小,这里年龄最小为0
    int Min=200;//求最小的年龄,初始化为无穷大,这里年龄最大初始化为200吧

    for(int i=0;i<3;i++)
    {
        if(a[i]>Max)
        {
            Max=a[i];
        }

        if(a[i]<Min)
        {
            Min=a[i];
        }
    }

    //printf("%d\n",Max);
    //printf("%d\n",Min);

    int ans=Max-Min;

    printf("%d",ans);

    return 0;
}

问题 J: 展示十年的年龄



思路讲解:

 

这个的话,其实就是练习使用for循环语句,只要你会了for循环,这道题没什么问题,还有很多同学出现了格式错误,大部分是忘记加换行符了


代码实现:

#include<stdio.h>
int main()
{
    int age;
    scanf("%d",&age);
    printf("*****************************************\n");
    for(int i=0; i<10; i++)
    {
        printf("%d ",age+i);
    }
    printf("\n");
    for(int i=0; i<10; i++)
    {
        printf("%d ",age+i*2);
    }
    printf("\n");
    printf("*****************************************");
    return 0;
}


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2174599.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

时间技能物品竞品抢拍拍卖发布h5公众号小程序开源版开发

时间技能物品竞品抢拍拍卖发布h5公众号小程序开源版开发 利用新型营销方式&#xff0c;将闲置的物品通过拍卖&#xff0c;让价格一提再提让用户趣在其中&#xff0c;营造一种不一样的购物体验! 拍卖列表页 列表页采用多分类&#xff0c;广告轮播及流动公告和拍卖商品列表组成…

2024年9月26日 linux笔记

1、提示符 1.1 提示符 1.2 命令格式 1.3 路径 2、指令 2.1 pwd 显示当前路径 2.2 cd 切换路径、改变路径 2.3 mkdir 创建目录 [-p] 创建目录及子目录 mkdir -p dir1/dir2 2.4 rmdir 删除目录 &#xff08;注&#xff1a;不能删除空目录&#xff09; 2.5 ls 显示当前目录文…

设计模式之策略设计模式

一、状态设计模式概念 策略模式&#xff08;Strategy&#xff09; 是一种行为设计模式&#xff0c; 它能让你定义一系列算法&#xff0c; 并将每种算法分别放入独立的类中&#xff0c; 以使算法的对象能够相互替换。 适用场景 当你想使用对象中各种不同的算法变体&#xff0c; …

构建Python机器学习模型的8个步骤

本文旨在系统地介绍构建机器学习模型的基本步骤&#xff0c;并通过一个具体的实战案例——股票价格预测&#xff0c;展示这些步骤的实际应用。通过遵循这些步骤&#xff0c;读者可以更好地理解和掌握机器学习模型构建的全过程。 步骤一&#xff1a;定义问题 首先&#xff0c;我…

【移植】一种快速移植OpenHarmony Linux内核的方法

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 移植概述 本文面向希望将 OpenHarmony 移植到三方芯片平台硬件的开…

【4.6】图搜索算法-DFS和BFS解合并二叉树

一、题目 给定两个二叉树&#xff0c;想象当你将它们中的一个覆盖到另一个上时&#xff0c;两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是 如果两个节点重叠&#xff0c;那么将他们的 值相加作为节点合并后的新值&#xff0c;否则不为 NUL L…

如何选择主数据管理系统平台

企业数据量呈现爆炸式增长&#xff0c;多系统并存、数据分散的现象日益普遍。主数据管理&#xff08;MDM&#xff09;作为确保企业核心业务数据准确、一致、完整的关键环节&#xff0c;对于企业的决策制定、业务流程优化和数据分析至关重要。而选择一个合适的主数据管理系统平台…

Vivado时序报告之CDC详解大全

目录 一、前言 二、Report CDC 2.1 Report CDC 2.2 配置界面 2.3 CDC报告 2.3.1 General Information 2.3.2 Summary 2.3.3 CDC Details 2.4 Waiver 2.4.1 设置Waiver 2.4.2 报告查看 2.4.3 去除Waiver设置 三、工程设计 四、参考资料 一、前言 前面已经针对…

别再使用[]来获取字典的值了,来尝试一下这些方法

字典 在Python中&#xff0c;字典&#xff08;Dictionary&#xff09;是一种非常灵活的数据结构&#xff0c;用于存储键值对&#xff08;key-value pairs&#xff09;。每个键都是唯一的&#xff0c;并且与某个值相关联。字典是Python中处理映射关系&#xff08;即一个键对应一…

使用VBA快速将文本转换为Word表格

Word提供了一个强调的文本转表格的功能&#xff0c;结合VBA可以实现文本快速转换表格。 示例文档如下所示。 现在需要将上述文档内容转换为如下格式的表格&#xff0c;表格内容的起始标志为。 示例代码如下。 Sub SearchTab()Application.DefaultTableSeparator "*&quo…

综合业务区的数字化创新与智能化蓝图

数字化智能管理的关键要素之一是综合业务区的电子标签系统&#xff0c;该系统在提高管理工作的效率、精确跟踪资源以及改善业务流程中扮演了至关重要的角色。以下内容将对这一综合业务区采用的智能电子标签系统进行深入剖析。 一、定义与功能 1.1定义 融合多功能于一体的智能…

Prometheus+Grafana+elasticsearch_exporter监控elasticsearch的简单配置过程

一、elasticsearch集群配置 elasticsearch的docker方式安装及golang1.22版本使用elasticsearch7的示例代码-CSDN博客 查找“创建elasticsearch集群”标题即可 服务器集群ip地址&#xff1a;192.168.137.21&#xff0c;192.168.137.22&#xff0c;192.168.137.23 二、启动Pr…

《自控》误差传递函数、稳态误差、0型、I型、II型系统

本文关键词&#xff1a; 误差传递函数、laplace终值定理、稳态误差、系统型别&#xff08;0型、I型、II型系统&#xff09; 目录 1、求误差传递函数 2、求稳态误差 2.1 Laplace终值定理的使用条件 3、系统型别&#xff08;I型、II型、III型系统&#xff09; 1、求误差传递…

IPEmotion 2024 R2现支持Amazon S3和Windows SMB服务器

新版IPEmotion 2024 R2软件推出了许多新功能&#xff0c;其中的一大功能是支持Amazon S3、Windows SMB服务器以及新的IPE-CAM-007 USB摄像头。IPEmotion 2024 R2还支持直接写入TEDS数据和配置可装载电池的新款IPE833记录仪。 — 创新成果一览 — ■ 支持Amazon S3、Windows SM…

甄选范文“论软件可靠性设计技术的应用”,软考高级论文,系统架构设计师论文

论文真题 随着软件的日益普及,系统中软件成分不断增加,使得系统对软件的依赖越来越强。软件的可靠性对系统可靠性的影响越来越大。而实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制,为此提出了软件可靠性设计的概念。 软件可…

【Java】六大设计原则和23种设计模式

目录 一、JAVA六大设计原则 二、JAVA23种设计模式 1. 创建型模式 2. 结构型模式 3. 行为型模式 三、设计原则与设计模式 1. 设计原则 2. 设计模式 四、单例模式 1. 饿汉式 2. 懒汉式 四、代理模式 1. 什么是代理模式 2. 为什么要用代理模式 3. 有哪几种代理模式 …

Chainlit集成LlamaIndex实现知识库高级检索(路由检索器)

检索原理 llamaindex 是一个用于构建和部署基于文档的问答系统的框架。其中&#xff0c;RouterRetriever 是一个特定的检索器组件&#xff0c;它设计用于根据输入查询选择最佳的检索策略。RouterRetriever 的主要功能是在多个不同的检索器之间进行路由&#xff0c;根据输入的特…

STM32单片机编程调试常见问题(一) HardFault_Handler故障分析与解决

文章目录 一.概要二.什么是Hard fault三.Hard fault 产生的原因分析四.制作一个Hard fault程序并定位出问题原因1.查看堆栈指针SP的地址以及内容2.找到Return address地址3.查看汇编界面4.输入Return address地址&#xff0c;查找到问题代码 小结 一.概要 在嵌入式开发中&…

AR传送门+特定区域显示内容+放大镜 效果着色器使用

AR传送门特定区域显示内容放大镜 效果 关键词&#xff1a;Portal Mask 1、教程链接&#xff1a; AR 传送门教程 Unity - Portal Mask Implementation - Part 4_哔哩哔哩_bilibili 应用案例效果&#xff1a; 2、案例下载地址&#xff1a;使用unity 2021.3.33f1 obi 工具…

三分钟让你掌握PDF转音频:PDF2Audio背后的秘密

你有没有过这样的经历?工作繁忙,眼睛被一份又一份的PDF文件轰炸,盯得头昏眼花,却还得继续阅读。如果我告诉你,有一个简单的工具,可以把那些厚厚的PDF文档变成语音,让你在通勤、做家务时“听”文件,而不是“看”文件,你会不会心动? 今天,我们就来聊聊一个叫做PDF…