2024年湖北省专升本C语言程序设计大题真题解析(湖北理工版)

下面的题目顺序不确定!!!!!!!!!!!!!!

1、2/1+3/2+5/3+8/5+...

参考答案:

#include <stdio.h>

/*
 * 计算斐波那契数列前n项的和
 * 参数:
 *   n - 要计算的斐波那契数列的项数
 * 返回值:
 *   sum - 前n项的和
 */
double calculateSeriesSum(int n) {
    double sum = 0; // 初始化和为0
    double a = 1, b = 2; // 初始化斐波那契数列的前两项

    // 循环计算斐波那契数列前n项的和
    for (int i = 0; i < n; ++i) {
        sum += b / a; // 将当前项的值加到和上
        double temp = b; // 保存当前项的值
        b = a + b; // 计算下一项的值
        a = temp; // 将当前项的值赋给a
    }

    return sum;
}

int main() {
    int n; // 用户输入的斐波那契数列项数

    // 获取用户输入的斐波那契数列项数
    printf("请输入要计算的项数:");
    scanf("%d", &n);

    double sum = calculateSeriesSum(n); // 计算斐波那契数列前n项的和

    // 输出结果
    printf("前%d项和为:%lf\n", n, sum);

    return 0;
}

2、求某年某月某日是一年的第几天,用循环和数组做

参考答案:

#include <stdio.h>

// 存储每个月的天数
int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

/**
 * 计算给定日期是当年的第几天
 * @param year 年份
 * @param month 月份
 * @param day 日期
 * @return 当年的天数
 */
int calculateDayOfYear(int year, int month, int day) {
    int dayOfYear = day; // 初始化为给定日期的天数
    // 累加之前月份的天数
    for (int i = 0; i < month - 1; ++i) {
        dayOfYear += daysInMonth[i];
    }
    // 检查是否为闰年,并调整天数
    if (month > 2 && (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)) {
        dayOfYear += 1; // 闰年二月多一天
    }
    return dayOfYear;
}

int main() {
    int year, month, day;
    printf("请输入年月日(格式:年 月 日):");
    scanf("%d %d %d", &year, &month, &day);
    int dayOfYear = calculateDayOfYear(year, month, day);
    printf("%d年%d月%d日是该年的第%d天。\n", year, month, day, dayOfYear);
    return 0;
}

3、用链表删除数据

参考答案:

#include <stdio.h>
#include <stdlib.h>

// 定义链表节点结构
struct Node {
    int data;         // 节点存储的数据
    struct Node* next; // 指向下一个节点的指针
};

// 创建新节点
/**
 * @brief 创建并返回一个新的链表节点。
 * 
 * @param data 节点将要存储的数据。
 * @return struct Node* 指向新创建节点的指针。
 */
struct Node* createNode(int data) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); // 分配节点内存
    newNode->data = data; // 设置节点数据
    newNode->next = NULL; // 初始化下一个节点指针为NULL
    return newNode; // 返回新节点
}

// 插入节点到链表尾部
/**
 * @brief 在链表尾部插入一个新节点。
 * 
 * @param head 链表头节点的指针的地址。
 * @param data 要插入的数据。
 */
void append(struct Node** head, int data) {
    struct Node* newNode = createNode(data); // 创建新节点
    if (*head == NULL) { // 如果链表为空,直接将新节点设为头节点
        *head = newNode;
        return;
    }
    struct Node* temp = *head; // 从头节点开始遍历链表
    while (temp->next != NULL) {
        temp = temp->next;
    }
    temp->next = newNode; // 将新节点连接到链表尾部
}

// 删除指定数据的节点
/**
 * @brief 删除链表中指定数据的节点。
 * 
 * @param head 链表头节点的指针的地址。
 * @param key 要删除的节点数据。
 */
void deleteNode(struct Node** head, int key) {
    struct Node *temp = *head, *prev = NULL; // 初始化当前节点和前一个节点指针

    // 如果头节点就是要删除的节点
    if (temp != NULL && temp->data == key) {
        *head = temp->next; // 更新头节点指针
        free(temp); // 释放删除的节点内存
        return;
    }

    // 找到要删除节点的前一个节点
    while (temp != NULL && temp->data != key) {
        prev = temp;
        temp = temp->next;
    }

    // 如果找到了要删除的节点
    if (temp == NULL) return; // 如果未找到,直接返回

    prev->next = temp->next; // 更新前一个节点的指针,跳过要删除的节点
    free(temp); // 释放删除的节点内存
}

// 打印链表
/**
 * @brief 打印链表的所有节点数据。
 * 
 * @param head 链表的头节点。
 */
void printList(struct Node* head) {
    struct Node* temp = head; // 从头节点开始遍历链表
    while (temp != NULL) {
        printf("%d ", temp->data); // 打印节点数据
        temp = temp->next; // 移动到下一个节点
    }
    printf("\n"); // 打印换行符
}

int main() {
    struct Node* head = NULL; // 初始化链表头节点为NULL
    int data; // 用于存储用户输入的数据
    char choice; // 用于存储用户的选择

    // 循环添加节点,直到用户选择不添加
    do {
        printf("请输入要添加到链表的数据:");
        scanf("%d", &data);
        append(&head, data);
        printf("是否继续添加?(y/n):");
        scanf(" %c", &choice);
    } while (choice == 'y' || choice == 'Y');

    printf("原始链表:\n");
    printList(head); // 打印原始链表

    int key; // 用于存储用户要删除的节点数据
    printf("请输入要删除的节点值:");
    scanf("%d", &key);
    deleteNode(&head, key); // 删除指定节点

    printf("删除节点值为%d后的链表:\n", key);
    printList(head); // 打印删除节点后的链表

    return 0;
}

4、输入3行4列二维数组数据,求出最大值,并返回最大值的行跟列

参考答案:

#include <stdio.h>

#define ROWS 3
#define COLS 4

/**
 * 在二维数组中查找最大值及其位置
 * @param arr 二维数组
 * @param maxValue 指向用于存储最大值的整型变量的指针
 * @param maxRow 指向用于存储最大值所在行的整型变量的指针
 * @param maxCol 指向用于存储最大值所在列的整型变量的指针
 */
void findMax(int arr[ROWS][COLS], int *maxValue, int *maxRow, int *maxCol) {
    *maxValue = arr[0][0]; // 初始化最大值为数组的第一个元素
    *maxRow = 0;
    *maxCol = 0;

    // 遍历二维数组以找到最大值及其位置
    for (int i = 0; i < ROWS; i++) {
        for (int j = 0; j < COLS; j++) {
            if (arr[i][j] > *maxValue) { // 如果当前元素大于最大值,则更新最大值及其位置
                *maxValue = arr[i][j];
                *maxRow = i;
                *maxCol = j;
            }
        }
    }
}

int main() {
    int arr[ROWS][COLS];

    // 从用户处接收二维数组的数据
    printf("请输入3行4列的二维数组数据:\n");
    for (int i = 0; i < ROWS; i++) {
        for (int j = 0; j < COLS; j++) {
            scanf("%d", &arr[i][j]);
        }
    }

    int maxValue, maxRow, maxCol;
    // 调用函数以确定最大值及其位置
    findMax(arr, &maxValue, &maxRow, &maxCol);

    // 输出最大值及其位置
    printf("最大值为:%d\n", maxValue);
    printf("最大值所在位置:第%d行,第%d列\n", maxRow + 1, maxCol + 1);

    return 0;
}

5、b字符串连接到a字符串

参考答案:

#include <stdio.h>  
#include <string.h> 

int main() {
    char a[100], b[100]; // 定义两个字符数组,用于存储输入的字符串

    // 输入第一个字符串
    printf("请输入第一个字符串 a:");
    scanf("%s", a);

    // 输入第二个字符串
    printf("请输入第二个字符串 b:");
    scanf("%s", b);

    /* 使用 strcat() 函数将字符串 b 连接到字符串 a 的末尾。
       strcat 函数的使用需要包含 string.h 头文件。
       函数格式: char *strcat(char *dest, const char *src)
       参数 dest: 连接后的字符串存储在 dest 指向的字符数组中。
       参数 src: 要连接到 dest 字符串末尾的源字符串。
    */
    strcat(a, b);

    // 打印连接后的字符串
    printf("连接后的字符串为:%s\n", a);

    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring框架学习笔记(二):Spring IOC容器配置 Bean,分别基于XML配置bean 和 基于注解配置 bean

1 Spring 配置/管理 bean 介绍 Bean 管理包括两方面 &#xff1a;创建 bean 对象&#xff1b;给 bean 注入属性 Bean 配置方式&#xff1a;基于 xml 文件配置方式&#xff1b;基于注解方式 2 基于 XML 配置 bean 2.1 通过类型来获取 bean 方法&#xff1a;给getBean传入一…

传输层之 TCP 协议

TCP协议段格式 源/目的端口号&#xff1a;表示数据是从哪个进程来&#xff0c;到哪个进程去。 序号&#xff1a;发送数据的序号。 确认序号&#xff1a;应答报文的序号&#xff0c;用来回复发送方的。 4 位首部长度&#xff1a;一个 TCP 报头&#xff0c;长度是可变的&#xff…

STM32学习和实践笔记(25):USART(通用同步、异步收发器)

一&#xff0c;STM32的USART简介 USART即通用同步、异步收发器&#xff0c;它能够灵活地与外部设备进行全双工数据交换&#xff0c;满足外部设备对工业标准 NRZ 异步串行数据格式的要求。 UART即通用异步收发器&#xff0c;它是在USART基础上裁剪掉了同步通信功能。 开发板上…

【Web】CTFSHOW 七夕杯 题解

目录 web签到 easy_calc easy_cmd web签到 CTF中字符长度限制下的命令执行 rce(7字符5字符4字符)汇总_ctf中字符长度限制下的命令执行 5个字符-CSDN博客7长度限制直接梭了 也可以打临时文件RCE import requestsurl "http://4ae13f1e-8e42-4afa-a6a6-1076acd08211.c…

Vision Mamba:高效视觉表示学习双向状态空间模型,超越Vision Transformer!

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享&#xff0c;与你一起了解前沿深度学习信息&#xff01; Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model 引言&#xff1a;探索视觉领域的新方向 在计算机视觉领域&…

翻工第二次 Ant Design Pro 下载,发现问题,电脑网络配置有误,魔法了

一、相关网址链接 鱼皮的用户中心项目 &#xff08;前端Ant Design Pro构建&#xff09; 语雀 ## 没有选择umi版本这一步 Issue #11144 ant-design/ant-design-pro GitHub 关于umi ui图标未显示问题_umi ui不出现-CSDN博客 二、存在问题 导致下载速度慢 本人镜像代码写…

双向链表(详解)

在单链表专题中我们提到链表的分类&#xff0c;其中提到了带头双向循环链表&#xff0c;今天小编将详细讲下双向链表。 话不多说&#xff0c;直接上货。 1.双向链表的结构 带头双向循环链表 注意 这几的“带头”跟前面我们说的“头节点”是两个概念&#xff0c;实际前面的在…

第十三届蓝桥杯决赛(国赛)真题 Java A 组【原卷】

文章目录 发现宝藏【考生须知】试题 A: 火柴棒数字试题 B: 小蓝与钥匙试题 C: 内存空间试题 D: 斐波那契数组试题 E: 交通信号试题 F: 数组个数试题 G: 六六大顺试题 H : \mathrm{H}: H: 选素数试题 I: 图书借阅试题 J \mathrm{J} J : 括号序列树 发现宝藏 前些天发现了一个…

数据分析:基于sparcc的co-occurrence网络

介绍 Sparcc是基于16s或metagenomics数据等计算组成数据之间关联关系的算法。通常使用count matrix数据。 安装Sparcc软件 git clone gitgithub.com:JCSzamosi/SparCC3.git export PATH/path/SparCC3:$PATHwhich SparCC.py导入数据 注&#xff1a;使用rarefy抽平的count ma…

stm32单片机学习路线

第一步 编程及硬件基础知识 1.掌握C语言基础 作为STM32的主要编程语言&#xff0c;C语言的基础知识是必不可少的。建议通过书籍、在线课程或者教学视频系统地学习C语言的基础知识&#xff0c;包括语法、数据类型、函数、指针等。 2.了解电子电路基础 对于单片机开发来说&…

经开区创维汽车车辆交接仪式顺利举行,守护绿色出行助力低碳发展

5月10日&#xff0c;“创维新能源汽车进机关”交车仪式于徐州顺利举行&#xff0c;20辆创维EV6 II正式交付经开区政府投入使用。经开区陈琳副书记、党政办公室副主任张驰主任、经开区公车管理平台苑忠民科长、创维汽车总裁、联合创始人吴龙八先生、创维汽车营销公司总经理饶总先…

OpenHarmony 实战开发——移植通信子系统

通信子系统目前涉及Wi-Fi和蓝牙适配&#xff0c;厂商应当根据芯片自身情况进行适配。 移植指导 Wi-Fi编译文件内容如下&#xff1a; 路径&#xff1a;“foundation/communication/wifi_lite/BUILD.gn” group("wifi") {deps [ "$ohos_board_adapter_dir/ha…

asp.net mvc使用IHttpModule拦截所有请求,包括资源文件

目录 HttpApplication 类 添加App_Code文件夹 MyHttpModel2 Web.config添加配置&#xff0c;在iis模块中生效 项目发布后&#xff0c;察看注册的自定义模块 框架集&#xff1a;.NET Framework 4.7web框架&#xff1a;asp.net mvc 5 HttpApplication 类 HttpApplication 类…

数据库备份与恢复--06---MySQL集群高可用架构之MHA

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 MySQL集群高可用架构之MHA1.什么是MHAMHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件 &#xff0c;m…

2024最新洗地机选购攻略!分享四款热门洗地机推荐

洗地机可以说是现代家庭生活中一大利器&#xff0c;它能帮我们快速搞定家里的地板清洁工作&#xff0c;省去了自己清洗滚刷的麻烦。不过&#xff0c;当下市面上洗地机品牌种类繁多&#xff0c;价格区间也相差悬殊&#xff0c;要选择一款性价比较高、使用体验较好的洗地机产品&a…

太阳能无人机的多元化应用

随着新能源技术的不断发展和成熟&#xff0c;太阳能在无人机的应用技术已经成熟。太阳能无人机得到了量产和广泛的应用。传统无人机相比&#xff0c;太阳能无人机无需燃油&#xff0c;运行费用低廉&#xff0c;搭载多种高科技设备&#xff0c;能够高效、多元化地采集和分析各类…

AI算法-高数3-导数-求导法则

P16 2.2 求导法则&#xff0c;宋浩老师&#xff1a;2.2 求导法则_哔哩哔哩_bilibili 反函数求导法则&#xff1a; 复合函数求导&#xff1a;剥洋葱法。

蜂群优化算法(bee colony optimization algorithm)

​注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 算法引言 自然界的启发&#xff1a;BSO算法的灵感来自于蜜蜂在自然界中的觅食行为。在自然界中&#xff0c;蜜蜂需要找到花蜜来生存。当一只蜜…

在做题中学习(53):寻找旋转数组中的最小值

153. 寻找旋转排序数组中的最小值 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a;O(logn)->很可能就是二分查找 思路&#xff1a;再看看题目要求&#xff0c;可以画出旋转之后数组中元素的大小关系&#xff1a; 首先&#xff0c;数组是具有二段性的(适配二分查…

车载测试系列:UDS诊断服务

UDS诊断服务介绍 UDS&#xff08;Unified Diagnostic Services&#xff0c;统一诊断服务&#xff09;诊断协议诊断测试仪和ECU之间一种通信协议&#xff0c;在ISO14229中规定。UDS被用在几乎所有由OEM一级供应商所制造的新ECU。 诊断工具与车内的所有ECU均有连接&#xff0c;…
最新文章