燕山大学23级经济管理学院 10.18 C语言作业

news2024/12/26 12:18:08

燕山大学23级经济管理学院 10.18 C语言作业

文章目录

  • 燕山大学23级经济管理学院 10.18 C语言作业
    • 1
      • C语言的基本数据类型主要包括以下几种:
      • 为什么设计数据类型?
      • 数据类型与知识体系的对应
      • 使用数据类型时需要考虑的因素
    • 2
      • 1. 逻辑运算符
      • 2. 真值表
      • 3. 硬件实现
      • 4. 应用场景
    • 3
      • 代码
      • 运行截图
    • 4
      • 代码
      • 运行截图
    • 5
      • 代码
      • 运行截图

1

了解C语言所有的基本的数据类型。考虑为什么计算机要设计数据类型?对比计算机数据类型与我们已知的知识体系的什么是相关的,对应的。有什么异同?针对这些异同,当我们在计算机编程中使用数据类型的时候,你认为需要考虑什么?

C语言的基本数据类型主要包括以下几种:

  1. 整型(int):用于表示整数,通常占用4个字节(32位)。

  2. 字符型(char):用于表示单个字符,通常占用1个字节(8位)。

  3. 短整型(short):用于表示较小的整数,通常占用2个字节(16位)。

  4. 长整型(long):用于表示较大的整数,至少占用4个字节(32位),在某些系统中可能占用8个字节(64位)。

  5. 长长整型(long long):用于表示更大的整数,至少占用8个字节(64位)。

  6. 浮点型(float):用于表示带小数的数,通常占用4个字节。

  7. 双精度浮点型(double):用于表示更高精度的带小数的数,通常占用8个字节。

  8. 无符号整型(unsigned int、unsigned short、unsigned long、unsigned long long):这些类型用于表示非负整数,其范围从0开始,具体大小取决于对应的有符号类型。

    这里查书,看看老师讲解的是否有第8个类型!

为什么设计数据类型?

计算机设计数据类型是为了:

  1. 内存管理:不同的数据类型占用不同的内存空间,计算机需要知道数据的类型以有效地分配和管理内存。
  2. 数据处理:数据类型决定了如何处理和操作数据。比如,整型可以进行加法和减法,浮点型可以进行小数运算。
  3. 类型安全:通过明确的数据类型,减少了类型不匹配的错误,确保程序运行的正确性。

数据类型与知识体系的对应

相似性

  • 数据类型在计算机中与数学中的数值类型、集合等概念相似。
  • 在日常生活中,数据类型类似于物品的分类,比如:整数像是有数量的物品,字符像是标签。

相同点

  1. 分类:两者都涉及对信息的分类。例如,计算机将数据分为整型、字符型等,而知识体系将信息分为概念、类别等。
  2. 属性:计算机数据类型有特定的属性(如大小、范围),而知识概念也有定义和特征。

不同点

  1. 灵活性:计算机数据类型是固定的,定义明确,而知识体系中的概念可以更为灵活和抽象,可能会随上下文而变化。
  2. 处理方式:计算机对数据的处理基于明确的规则和运算,而知识体系中的概念理解可能依赖于主观判断和经验。
  3. 精度与安全性:计算机数据类型的转换可能导致精度丢失,反之,知识体系中的概念转换通常不会出现类似问题。

使用数据类型时需要考虑的因素

  1. 选择合适的数据类型:根据所需的范围和精度选择合适的类型,避免不必要的内存浪费或溢出。
  2. 类型转换:了解不同数据类型之间的转换规则,避免因转换错误导致程序异常。
  3. 性能:不同数据类型的运算性能可能有所不同,考虑在性能敏感的应用中使用合适的类型。
  4. 可读性和维护性:选择清晰、易于理解的数据类型,有助于提高代码的可读性和可维护性。

2

除了数学运算,计算机还可以进行逻辑运算?那么计算机如何进行逻辑运算?逻辑运算可以帮助我们处理哪些问题?请你举几个现实例子。

计算机进行逻辑运算的方式通常涉及布尔代数,通过逻辑运算符和逻辑电路实现。以下是如何进行上述逻辑运算的具体方法:

1. 逻辑运算符

在编程中,逻辑运算通常通过特定的运算符来表示,常见的有:

  • 与(AND)&&
  • 或(OR)||
  • 非(NOT)!
  • 异或(XOR):通常在编程中使用^,但在某些语言中需要自定义实现。
  • 与非(NAND):可以通过组合运算实现,即!(A && B)
  • 或非(NOR):同样可以通过组合运算实现,即!(A || B)
  • 同或(XNOR):可以通过!(A ^ B)实现。

2. 真值表

逻辑运算的结果可以通过真值表来表示,以下是每种运算的真值表示例:

  • 与(AND)

    ABA AND B
    truetruetrue
    truefalsefalse
    falsetruefalse
    falsefalsefalse
  • 或(OR)

    ABA OR B
    truetruetrue
    truefalsetrue
    falsetruetrue
    falsefalsefalse
  • 非(NOT)

    ANOT A
    truefalse
    falsetrue
  • 异或(XOR)

    ABA XOR B
    truetruefalse
    truefalsetrue
    falsetruetrue
    falsefalsefalse
  • 与非(NAND)

    ABA NAND B
    truetruefalse
    truefalsetrue
    falsetruetrue
    falsefalsetrue
  • 或非(NOR)

    ABA NOR B
    truetruefalse
    truefalsefalse
    falsetruefalse
    falsefalsetrue
  • 同或(XNOR)

    ABA XNOR B
    truetruetrue
    truefalsefalse
    falsetruefalse
    falsefalsetrue

3. 硬件实现

在计算机硬件层面,逻辑运算通过逻辑门(如与门、或门、非门等)来实现。每个逻辑门根据输入的电平(高电平或低电平)执行相应的逻辑运算,并输出结果。

4. 应用场景

  • 条件判断:如在if语句中使用逻辑运算来决定程序执行的路径。
  • 循环控制:使用逻辑运算来判断循环是否继续。
  • 状态管理:在复杂应用中,根据多个条件判断系统状态或用户权限。

逻辑运算可以帮助我们处理多种现实问题,以下是几个例子:

  1. 用户登录验证:在网站中,逻辑运算用于检查用户名和密码是否正确。例如,只有当用户名存在且密码匹配时,用户才能登录。
  2. 购物车结算:在电商平台,逻辑运算可以用于检查用户是否符合优惠条件,比如“如果用户是会员并且购物满100元,则可以使用折扣”。
  3. 交通信号控制:在交通信号灯系统中,逻辑运算用于控制灯的切换,例如“如果有车辆在检测区且信号灯是红灯,则变为绿灯”。
  4. 权限控制:在企业内部系统中,逻辑运算用于判断用户是否具有某项操作的权限,如“如果用户是管理员或是特定角色,则可以访问敏感数据”。

这些例子展示了逻辑运算在决策和控制流程中的重要性。

3

S连锁淘宝店共有3家,分别用a,b,c代表。a每天销售额1000元,b每天销售额3000元,c每天销售额2500元,毛利率是75%。

(1)S品牌每天各个店铺的毛利收入是多少钱?总共多少钱?

(2) 销售额分别是15英镑,35英镑,25英镑,毛利率是75%,S品牌每天各个店铺的毛利收入是多少钱?总共多少钱?整数部分是多少钱?

代码

#include <stdio.h> // 包含标准输入输出库

int main() {
    // 问题(1)
    // 每家店铺的销售额
    float sales_a = 1000.0; // a店铺每天销售额
    float sales_b = 3000.0; // b店铺每天销售额
    float sales_c = 2500.0; // c店铺每天销售额

    // 毛利率
    float profit_margin = 0.75; // 毛利率设定为75%

    // 计算每家店铺的毛利收入
    float profit_a = sales_a * profit_margin; // a店铺的毛利收入
    float profit_b = sales_b * profit_margin; // b店铺的毛利收入
    float profit_c = sales_c * profit_margin; // c店铺的毛利收入

    // 总毛利收入
    float total_profit = profit_a + profit_b + profit_c; // 计算总毛利收入

    // 输出结果
    printf("问题(1):\n"); // 输出问题提示
    printf("a店铺毛利收入: %.2f元\n", profit_a); // 输出a店铺的毛利收入
    printf("b店铺毛利收入: %.2f元\n", profit_b); // 输出b店铺的毛利收入
    printf("c店铺毛利收入: %.2f元\n", profit_c); // 输出c店铺的毛利收入
    printf("总毛利收入: %.2f元\n\n", total_profit); // 输出总毛利收入

    // 问题(2)
    // 每家店铺的新销售额
    float sales_a_new = 15.0; // a店铺的新销售额
    float sales_b_new = 35.0; // b店铺的新销售额
    float sales_c_new = 25.0; // c店铺的新销售额

    // 计算新毛利收入
    float profit_a_new = sales_a_new * profit_margin; // a店铺的新毛利收入
    float profit_b_new = sales_b_new * profit_margin; // b店铺的新毛利收入
    float profit_c_new = sales_c_new * profit_margin; // c店铺的新毛利收入

    // 新总毛利收入
    float total_profit_new = profit_a_new + profit_b_new + profit_c_new; // 计算新的总毛利收入

    // 取整部分
    int integer_part = (int)total_profit_new; // 获取总毛利收入的整数部分

    // 输出结果
    printf("问题(2):\n"); // 输出问题提示
    printf("a店铺毛利收入: %.2f英镑\n", profit_a_new); // 输出a店铺的新毛利收入
    printf("b店铺毛利收入: %.2f英镑\n", profit_b_new); // 输出b店铺的新毛利收入
    printf("c店铺毛利收入: %.2f英镑\n", profit_c_new); // 输出c店铺的新毛利收入
    printf("总毛利收入: %.2f英镑\n", total_profit_new); // 输出新的总毛利收入
    printf("总毛利收入的整数部分: %d\n", integer_part); // 输出总毛利收入的整数部分

    return 0; // 返回0,表示程序正常结束
}

运行截图

在这里插入图片描述

4

请编程序将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如:字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。请编一程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量的值分别为’C’,’h’,’I’,’n’,’a’,经过运算,使c1,c2,c3,c4,c5分别变为’G’,’l’,’m’,’r’,’e’。分别用putchar函数和printf函数输出这5个字符。

代码

#include <stdio.h> // 包含标准输入输出库

// 定义加密函数,用于根据规律加密字母
char encrypt(char c) {
    // 计算替代字符,使用取模处理字母环绕
    return (c - 'A' + 4) % 26 + 'A'; // 将字符转换为相应的加密字符
}

int main() {
    // 定义字符变量并赋初值,表示原字符串“China”
    char c1 = 'C'; // c1初始化为'C'
    char c2 = 'h'; // c2初始化为'h'
    char c3 = 'i'; // c3初始化为'i'
    char c4 = 'n'; // c4初始化为'n'
    char c5 = 'a'; // c5初始化为'a'

    // 处理并替代每个字符,进行加密
    c1 = encrypt(c1 + 32); // 将大写字符'C'转换为小写处理并加密
    c2 = encrypt(c2); // 对字符'h'进行加密
    c3 = encrypt(c3); // 对字符'i'进行加密
    c4 = encrypt(c4); // 对字符'n'进行加密
    c5 = encrypt(c5); // 对字符'a'进行加密

    // 使用putchar逐个输出字符
    putchar(c1); // 输出加密后的c1
    putchar(c2); // 输出加密后的c2
    putchar(c3); // 输出加密后的c3
    putchar(c4); // 输出加密后的c4
    putchar(c5); // 输出加密后的c5
    putchar('\n'); // 输出换行符

    // 使用printf一次性输出所有加密后的字符
    printf("%c%c%c%c%c\n", c1, c2, c3, c4, c5); // 输出所有字符

    return 0; // 返回0,表示程序正常结束
}

运行截图

在这里插入图片描述

5

用switch语句实现,如下的成绩转换:

A:90-100;B:80-89;C:70-79;D:60-69;E:failed。”

代码

#include <stdio.h> // 包含标准输入输出库

int main() {
    int score; // 定义变量score用于存储用户输入的成绩
    char grade; // 定义变量grade用于存储转换后的成绩等级

    // 提示用户输入成绩
    printf("请输入成绩(0-100):");
    scanf_s("%d", &score); // 从标准输入读取成绩。这里也可以写“scanf”

    // 检查输入成绩的范围
    if (score < 0 || score > 100) { // 如果成绩小于0或大于100
        printf("成绩输入错误,请输入0-100之间的成绩。\n"); // 输出错误提示
        return 1; // 返回1,表示程序异常结束
    }

    // 使用switch语句根据成绩范围转换为等级
    switch (score / 10) { // 将成绩除以10,用于判断成绩等级
    case 10: // 处理特殊情况,score为100
    case 9:  // 处理成绩在90-99之间
        grade = 'A'; // 赋值为'A'
        break; // 退出switch语句

    case 8: // 处理成绩在80-89之间
        grade = 'B'; // 赋值为'B'
        break; // 退出switch语句

    case 7: // 处理成绩在70-79之间
        grade = 'C'; // 赋值为'C'
        break; // 退出switch语句

    case 6: // 处理成绩在60-69之间
        grade = 'D'; // 赋值为'D'
        break; // 退出switch语句

    case 5: // 处理成绩在50-59之间
    case 4: // 处理成绩在40-49之间
    case 3: // 处理成绩在30-39之间
    case 2: // 处理成绩在20-29之间
    case 1: // 处理成绩在10-19之间
    case 0: // 处理成绩在0-9之间
        grade = 'E'; // 赋值为'E',表示不及格
        break; // 退出switch语句
    }

    // 输出转换后的成绩等级
    printf("成绩等级为:%c\n", grade); // 输出成绩等级

    return 0; // 返回0,表示程序正常结束
}

运行截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

设计模式(UML图、类之间关系、设计原则)

目录 一.类的UML图 1.类的UML图 2.类之间的关系 2.1 继承关系&#xff1a; 2.2关联关系 2.2.1单项关联 2.2.2双向关联 2.2.3自关联 2.3聚合关系 2.4组合模式 2.5依赖关系 二、设计三原则 2.1单一职责原则 2.2开放封闭原则 2.3依赖倒转原则 一.类的UML图 1.类的…

考研篇——数据结构王道3.2.2_队列的顺序实现

目录 1.实现方式说明2.代码实现2.12.1.1 代码12.1.2 代码22.1.3 代码3 2.22.2.1 代码42.2.5 代码52.2.6 代码6 总结 1.实现方式说明 多在选择题中考察 队尾指针&#xff08;rear&#xff09;有两种指向方式&#xff1a; 队尾指针指向队尾元素的位置&#xff0c;队尾指针指向…

9个3D直播场景推荐

在科技日新月异的今天&#xff0c;3D直播技术正逐步渗透至文旅领域&#xff0c;为游客带来前所未有的沉浸式体验。以下是vLive虚拟直播九个精心推荐的文旅3D直播场景&#xff0c;它们不仅展现了各地独特的文化魅力&#xff0c;还通过高科技手段让游客仿佛穿越时空&#xff0c;身…

ArcGIS应用指南:多尺度渔网创建

在GIS中&#xff0c;创建渔网矢量文件是GIS中的一项常见任务&#xff0c;通过将研究区域划分为规则的网格&#xff0c;可以更精细地分析和管理城市空间数据。本文以厦门市行政区为例&#xff0c;详细介绍了如何创建不同尺度的渔网矢量网格&#xff0c;以适应不同区域的发展特点…

代码随想录算法训练营第46期Day35

leetcode.452.用最少数量的箭射爆气球 class Solution { public:static bool cmp(const vector<int>& a,const vector<int>& b){//对Xend进行排序return a[1]<b[1]; } //这个题比较好贪&#xff0c;我们每次射只需要射Xend就可以了&#xff0c;然后用此…

OpenCL内存模型

OpenCL将内存划分成主机内存和设备内存。主机内存可在主机上使用&#xff0c;其并不在OpenCL的定义范围内。使用对应的OpenCL API可以进行主机和设备的数据传输&#xff0c;或者通过共享虚拟内存接口进行内存共享。而设备内存&#xff0c;指定是能在执行内核中使用的内存空间。…

什么是不同类型的微服务测试?

大家好&#xff0c;我是锋哥。今天分享关于【什么是不同类型的微服务测试&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; 什么是不同类型的微服务测试&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 微服务架构中的测试可以分为多种类…

【ROS2】构建导航工程

1、ROS小车组成 ROS小车由三大件组成:运动底盘、ROS主控、导航传感器。 1.1 运动底盘 运动底盘的硬件由车轮、电机(带编码器)、电机驱动器、STM32控制器、电池等组成。 涉及的知识点主要为:STM32单片机程序、机器人运动学分析 1)STM32单片机程序 单片机程序框架如下:…

在Linux命令行下载Google Drive大文件(解决Google Drive下载慢的问题)

文章目录 1、使用gdown命令2、复制链接3、替换为Linux下载链接 注意&#xff1a;在Linux命令行进行 1、使用gdown命令 wget只能下载小文件&#xff0c;大文件需要用到gdown pip install gdown# 如果不能够直接安装&#xff0c;使用以下命令 git clone https://github.com/wk…

基于Spring Boot + Vue程序员云书店系统设计与实现

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

MySQL9.0安装教程zip手动安装(Windows)

本章教程&#xff0c;主要介绍如何在Windows上安装MySQL9.0&#xff0c;通过zip方式进行手动安装。 一、下载MySQL压缩包 下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 二、解压MySQL压缩包 将下载好的压缩包&#xff0c;进行解压缩&#xff0c;并且将…

要让AI(任何一款绘图AI)把一个己有风格的图片画到一个实物商品上的窍门

本教程适合midjourney, comfyui, stable diffusion 己有图片 希望生成效果 我们希望&#xff0c;在一个现实世界真实IPhone手机上可以有一个这样的小魔女作为一个手机的展示&#xff0c;同时手机处于开机状态&#xff0c;在手机的屏幕上有一个这样的戴帽子的穿蓝色小披风的小…

阿里Dataworks使用循环节点和赋值节点完成对mongodb分表数据同步

背景 需求将MongoDB数据入仓MaxCompute 环境说明 MongoDB 100个Collections&#xff1a;orders_1、orders_2、…、orders_100 前期准备 1、MongoDB数据源配置 需要先保证DW和MongoDB网络是能够联通的&#xff0c;需要现在集成任务中配置MongoDB的数据源信息。 具体可以查…

Java项目-基于springboot框架的学习选课系统项目实战(附源码+文档)

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…

Linux基础命令(入门)

linux 用户 root 用户 一个特殊的管理帐户 也被称为超级用户 root已接近完整的系统控制 对系统损害几乎有无限的能力 除非必要,不要登录为 root 普通&#xff08; 非特权 &#xff09; 用户权限有限 造成损害的能力比较有限 linux的哲学思想&#xff08;优点&#xf…

vue3学习记录-组件通信

vue3学习记录-组件通信 1.父子组件通信2.兄弟组件传值2.1 以父组件为媒介2.2 发布订阅模式2.3 使用mitt2.3.1 全局使用2.3.2 局部使用 1.父子组件通信 父组件&#xff1a; <template>父组件原有的title:{{ title }}<p>---</p><com :title"title&qu…

jmeter使用文档

文章目录 一、安装使用1、下载2、bin/jmeter.properties介绍 二、windows使用1、微调&#xff08;1&#xff09;界面样式&#xff08;2&#xff09;修改语言 2、简单使用3、各组件详解&#xff08;1&#xff09;CSV 数据文件配置&#xff08;2&#xff09;BeanShell取样器 三、…

【Linux线程】Linux多线程实践:深入生产者消费者模型

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;Linux “ 登神长阶 ” &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀Linux多线程 &#x1f4d2;1. 生产者消费者模型&#x1f4dc;2. 基于BlockingQueue的生产者消…

BurpSuite渗透工具的简单使用

BurpSuite渗透工具 用Burp Suite修改请求 step1&#xff1a; 安装Burp Suite。官网链接&#xff1a;Burp Suite官网 step2&#xff1a; 设置代理 step3&#xff1a; 如果要拦截https请求&#xff0c;还需要在客户端安装证书 step4&#xff1a; 拦截到请求可以在Proxy ->…

进程地址空间与页表

目录 引言 问题导入 进程地址空间 宏观的过程去分析 谈细节 1.进程地址空间究竟是什么 2.页表 3.进程被挂起 4.页表的存在&#xff0c;让进程管理和内存管理相连动 本文核心逻辑 引言 在当今的计算世界中&#xff0c;操作系统是管理计算机硬件和软件资源的关键组件。而…