当前位置: 首页 > news >正文

c语言编程题(函数)

1编写函数将一个仅包含整数(可能为负)的字符串转换为对应的整数

方法一使用标准库函数 atoi

atoi 函数是C语言标准库中的一个函数,用于将字符串转换为整数。

代码:


#include <stdio.h>
#include <stdlib.h> // 包含 atoi 函数的头文件int main() {const char* str = "12345"; // 示例字符串int num = atoi(str); // 使用 atoi 将字符串转换为整数printf("转换后的整数: %d\n", num);return 0;
}
方法2:手动实现字符串到整数的转换
#include <stdio.h>
#include <ctype.h> // 包含 isdigit 函数的头文件int strToInt(const char *str) {int result = 0;int sign = 1; // 默认符号为正int i = 0;// 处理负号if (str[i] == '-') {sign = -1;i++;}// 遍历字符串中的每个字符while (str[i] != '\0') {// 确保字符是数字if (isdigit(str[i])) {// 计算当前位的值result = result * 10 + (str[i] - '0');} else {// 如果遇到非数字字符,返回错误值(例如0)return 0;}i++;}// 返回带符号的结果return sign * result;
}int main() {const char *str = "-12345"; // 示例字符串int num = strToInt(str); // 调用手动实现的函数printf("转换后的整数: %d\n", num);return 0;
}

2编写一个能比较字符串大小的函数,将两个字符串中第一个不相同字符的ASCII码值之差作为返回值

代码:

#include <stdio.h>// 比较两个字符串大小,返回第一个不相同字符的ASCII码值之差
int compareStrings(const char *str1, const char *str2) {int i = 0;// 遍历两个字符串,直到其中一个字符串结束或找到不相同的字符while (str1[i] != '\0' && str2[i] != '\0') {if (str1[i] != str2[i]) {// 找到不相同的字符,返回它们的ASCII码值之差return str1[i] - str2[i];}i++;}// 如果两个字符串长度不同,返回长度差return str1[i] - str2[i];
}int main() {const char *str1 = "apple";const char *str2 = "apples";int result = compareStrings(str1, str2);if (result == 0) {printf("两个字符串相等。\n");} else if (result > 0) {printf("第一个字符串大于第二个字符串,差值为: %d\n", result);} else {printf("第一个字符串小于第二个字符串,差值为: %d\n", result);}return 0;
}

3编写程序,从键盘输入10个整数,用函数实现将其中最大数与最小数的位置对 换,输出调整后的数组

代码:

#include <stdio.h>// 函数声明
void swapMaxMin(int arr[], int size);int main() {int arr[10];// 从键盘输入10个整数printf("请输入10个整数:\n");for (int i = 0; i < 10; i++) {scanf("%d", &arr[i]);}// 调用函数交换最大数与最小数的位置swapMaxMin(arr, 10);// 输出调整后的数组printf("调整后的数组:\n");for (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}printf("\n");return 0;
}// 函数定义:交换数组中最大数与最小数的位置
void swapMaxMin(int arr[], int size) {int maxIndex = 0, minIndex = 0;// 找到最大数和最小数的索引for (int i = 1; i < size; i++) {if (arr[i] > arr[maxIndex]) {maxIndex = i;}if (arr[i] < arr[minIndex]) {minIndex = i;}}// 交换最大数与最小数的位置int temp = arr[maxIndex];arr[maxIndex] = arr[minIndex];arr[minIndex] = temp;
}

4编写函数,对给定的二维数组(3×3)进行转置(即行列互换)

代码:

#include <stdio.h>// 函数声明
void transpose(int arr[3][3]);
void printArray(int arr[3][3]);int main() {int arr[3][3] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};// 打印原始数组printf("原始数组:\n");printArray(arr);// 进行转置transpose(arr);// 打印转置后的数组printf("转置后的数组:\n");printArray(arr);return 0;
}// 函数定义:对二维数组进行转置
void transpose(int arr[3][3]) {int temp;for (int i = 0; i < 3; i++) {for (int j = i + 1; j < 3; j++) {// 交换 arr[i][j] 和 arr[j][i]temp = arr[i][j];arr[i][j] = arr[j][i];arr[j][i] = temp;}}
}// 函数定义:打印二维数组
void printArray(int arr[3][3]) {for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {printf("%d ", arr[i][j]);}printf("\n");}
}

注意事项:

在二维数组转置的过程中,for (int j = i + 1; j < 3; j++) 中的 j 从 i + 1 开始是为了避免重复交换和对角线元素的交换。让我们详细解释一下:

解释

  1. 避免重复交换

    • 在转置过程中,交换 arr[i][j] 和 arr[j][i] 时,只需要交换一次即可。
    • 如果 j 从 0 开始遍历,会导致重复交换,因为 arr[i][j] 和 arr[j][i] 已经在之前的迭代中被交换过了。
    • 例如,如果 i = 0 且 j = 0,那么交换 arr[0][0] 和 arr[0][0] 是无意义的,因为它们是同一个元素。
  2. 对角线元素无需交换

    • 对角线元素(如 arr[0][0]arr[1][1]arr[2][2])在转置前后保持不变。
    • 如果 j 从 0 开始遍历,会导致对角线元素被交换,这实际上是没有必要的。

5编写函数,用冒泡法对输入的字符(不超过10个)按从小到大顺序排序

代码:

#include <stdio.h>
#include <string.h>// 函数声明
void bubbleSort(char arr[], int n);
void swap(char *a, char *b);int main() {char arr[11]; // 最多10个字符,加上字符串结束符 '\0'// 输入字符printf("请输入不超过10个字符:\n");scanf("%s", arr);// 获取字符串长度int n = strlen(arr);// 进行排序bubbleSort(arr, n);// 打印排序后的字符串printf("排序后的字符串:\n");printf("%s\n", arr);return 0;
}// 函数定义:冒泡排序
void bubbleSort(char arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {// 如果前一个字符大于后一个字符,交换它们swap(&arr[j], &arr[j + 1]);}}}
}// 函数定义:交换两个字符
void swap(char *a, char *b) {char temp = *a;*a = *b;*b = temp;
}

6编写程序,输出3~10000为的可逆质数。可逆质数是指:一个质数将其各位数 字的顺序倒过来构成的反序数也是质数。如157和751均为质数,它们是可逆质数。要 求调用两个函数实现

代码:

include <stdio.h>
#include <stdbool.h>
#include <math.h>// 函数声明
bool isPrime(int num);
int reverseNumber(int num);int main() {printf("3到10000之间的可逆质数有:\n");for (int num = 3; num <= 10000; num++) {if (isPrime(num)) {int reversedNum = reverseNumber(num);if (isPrime(reversedNum)) {printf("%d\n", num);}}}return 0;
}// 函数定义:检查一个数是否为质数
bool isPrime(int num) {if (num <= 1) return false;for (int i = 2; i <= num / 2; i++) {if (num % i == 0) return false;}return true;
}// 函数定义:生成一个数的反序数
int reverseNumber(int num) {int reversedNum = 0;while (num > 0) {reversedNum = reversedNum * 10 + num % 10;num /= 10;}return reversedNum;
}

7编写函数,将一个十进制数转换成八进制数

代码:

#include <stdio.h>// 函数声明:将十进制数转换为八进制数
void decimalToOctal(int num);int main() {int num;printf("请输入一个十进制数:\n");scanf("%d", &num);printf("转换后的八进制数为:");decimalToOctal(num);  // 调用转换函数return 0;
}// 函数定义:将十进制数转换为八进制数
void decimalToOctal(int num) {// 如果输入的数为0,直接输出0if (num == 0) {printf("0");return;}int arr[100];  // 用于存储八进制数的数组int i = 0;     // 数组索引// 将十进制数转换为八进制数while (num > 0) {arr[i] = num % 8;  // 取余数,存储到数组中num = num / 8;     // 整除8,去掉最后一位i++;               // 索引加1}// 输出八进制数(从高位到低位)for (int j = i - 1; j >= 0; j--) {printf("%d", arr[j]);}printf("\n");  // 输出换行符
}

8从键盘输入一个正整数,逆序输出。要求使用循环和递归两种方法分别实现

代码:

#include<stdio.h>
int main() {int num;printf("请输入一个正整数:\n");scanf("%d", &num);printf("逆序输出(循环方法):");while (num>0){printf("%d", num % 10);num /= 10;}return 0;
}

代码:


#include <stdio.h>// 函数声明:使用递归逆序输出正整数
void reverse(int num);int main() {int num;printf("请输入一个正整数:\n");scanf("%d", &num);// 使用递归逆序输出printf("逆序输出(递归方法):");reverse(num);printf("\n");return 0;
}// 函数定义:使用递归逆序输出正整数
void reverse(int num) {if (num == 0) {return;  // 递归终止条件}printf("%d", num % 10);  // 输出最后一位数字reverse(num / 10);  // 递归调用,去掉最后一位数字
}

相关文章:

c语言编程题(函数)

1编写函数将一个仅包含整数&#xff08;可能为负&#xff09;的字符串转换为对应的整数 方法一使用标准库函数 atoi atoi 函数是C语言标准库中的一个函数&#xff0c;用于将字符串转换为整数。 代码&#xff1a; #include <stdio.h> #include <stdlib.h> // 包含…...

华为eNSP:QinQ

一、什么是QinQ&#xff1f; QinQ是一种网络技术&#xff0c;全称为"Quantum Insertion"&#xff0c;也被称为"Q-in-Q"、"Double Tagging"或"VLAN stacking"。它是一种在现有的VLAN&#xff08;Virtual Local Area Network&#xff0…...

JAVA基础-多线程线程池

文章目录 1. 多线程1.1什么是多线程&#xff08;1&#xff09;并发和并行&#xff08;2&#xff09;进程和线程 1.2多线程的实现方式1.2.1 方式一&#xff1a;继承Thread类1.2.2 方式二&#xff1a;实现Runnable接口1.2.3方式三: 实现Callable接口 1.3 常见的成员方法1.3.1 设置…...

HarmonyOS 沉浸式状态实现的多种方式

1. HarmonyOS 沉浸式状态实现的多种方式 HarmonyOS 沉浸式状态实现的多种方式 1.1. 方法一 1.1.1. 实现讲解 &#xff08;1&#xff09;首先设置setWindowLayoutFullScreen(true)&#xff08;设置全屏布局&#xff09;。   布局将从屏幕最顶部开始到最底部结束&#xff0c…...

Python3.11.9下载和安装

Python3.11.9下载和安装 1、下载 下载地址&#xff1a;https://www.python.org/downloads/windows/ 选择版本下载&#xff0c;例如&#xff1a;Python 3.11.9 - April 2, 2024 2、安装 双击exe安装 3、配置环境变量 pathD:\Program Files\python3.11.9...

简简单单的UDP

前言 上一篇了解了TCP的三次握手过程&#xff0c;目的、以及如何保证可靠性、序列号与ACK的作用&#xff0c;最后离开的时候四次挥手的内容&#xff0c;这还只是TCP内容中的冰山一角&#xff0c;是不是觉得TCP这个协议非常复杂&#xff0c;这一篇我们来了解下传输层另外一个协…...

减少 try...catch,定义全局统一异常处理器!

前言 软件开发springboot项目过程中&#xff0c;不可避免的需要处理各种异常,spring mvc 架构中各层会出现大量的try {...} catch {...} finally {...}代码块&#xff0c;不仅有大量的冗余代码&#xff0c;而且还影响代码的可读性。这样就需要定义个全局统一异常处理器&#x…...

多点支撑:滚珠导轨的均匀分布优势!

滚珠导轨的滚珠稳定性可以有效保持滚珠导轨的稳定运行&#xff0c;减少滚珠脱落的风险&#xff0c;确保设备的长期稳定性和可靠性。事实上&#xff0c;滚珠导轨的滚珠稳定性主要依赖于以下几个方面&#xff1a; 1、精密的制造工艺&#xff1a;滚珠导轨的导轨和滑块通常采用高精…...

电气火灾探测器在商场火灾隐患监测和火灾预防中的应用

徐悦 安科瑞电气股份有限公司 近年来&#xff0c;全国火灾事故频发&#xff0c;尤其是在大型商场等公共场所&#xff0c;火灾造成了巨大的人员伤亡和财产损失。以南京金盛百货中央门店火灾为例&#xff0c;该起事故暴露了商场在电气安全、消防管理方面的重大隐患&#xff0c;…...

速盾:如何有效防止服务器遭受攻击?

服务器攻击是网络安全中常见的问题&#xff0c;但我们可以采取一系列的措施来有效防止服务器的遭受攻击。以下是一些常见的防御措施&#xff1a; 更新和维护服务器软件&#xff1a;及时更新操作系统、应用程序以及安全补丁&#xff0c;以确保最新版本的软件没有已知的漏洞。同时…...

【今日更新】使用Python辅助处理WebGIS

Linux发行版本: Debian GNU/Linux 12 (bookworm)操作系统内核: Linux-6.1.0-18-amd64-x86_64-with-glibc2.36Python版本: 3.11.2 1.使用Python处理MapServer配置文件Mapfile 创建、分析、修改和格式化的python库 MapServer Mapfiles。 Python 2和3 兼容 纯Python-无MapServer依…...

Linux 消息队列

在Linux中&#xff0c;线程间消息队列可以通过使用System V消息队列或POSIX消息队列来实现。 使用System V消息队列&#xff1a; System V消息队列是一种基于IPC&#xff08;Inter-process Communication&#xff0c;进程间通信&#xff09;的通信机制&#xff0c;可以用于进程…...

十大经典排序算法-冒泡算法详解介绍

1、十大经典排序算法 排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;在排序过程中需要…...

delphi 编译多语言工程 error RC2104 : undefined keyword or key name:

Delphi 10.3中建立多语言工程&#xff0c;编译时出现错误&#xff1a;error RC2104 : undefined keyword or key name: 出现错误的的文件是.rc文件&#xff0c;出现错误的位置是 System_JSONConsts_SInvalidJavascriptQuote, L"Invalid JavaScript string quote character…...

[python] 如何debug python脚本中C++后端的core dump

文章目录 Debug过程Reference Debug过程 另外&#xff1a;对于core dump: gdb版本是>7&#xff0c;gdb从版本7开始支持对Python的debug。确保你的系统中安装了 GDB 调试器和对应版本的 Python 调试信息包&#xff08;例如 python-dbg 或 python-debuginfo&#xff09;。 #…...

Ecmascript(ES)标准

Ecmascript&#xff08;ES&#xff09;标准 ECMAScript&#xff08;通常简称为 ES&#xff09;是一种标准化的脚本语言&#xff0c;由 Ecma International 通过 ECMA-262 标准定义。ECMAScript 是 JavaScript 的规范版本&#xff0c;几乎所有的现代浏览器和许多服务器端环境&a…...

易泊车牌识别相机:4S 店的智能之选

在当今数字化时代&#xff0c;科技的进步不断为各个行业带来更高效、便捷的解决方案。对于 4S 店来说&#xff0c;易泊车牌识别相机的出现&#xff0c;无疑为其运营管理带来了全新的变革。 一、易泊车牌识别相机的强大功能 易泊车牌识别相机以其卓越的性能和精准的识别能力&…...

Webpack 深度解析与实战指南

文章目录 前言一、安装于基本配置安装Webpack 和 Webpack CLI创建基本配置文件 二、加载器常见的加载器配置加载器 三、插件&#xff08;Plugins&#xff09;常用的插件配置插件 四、性能优化缓存代码分割Tree Shaking压缩 五、开发服务器安装服务器配置服务器启动服务器生产环…...

【RabbitMQ】06-消费者的可靠性

1. 消费者确认机制 没有ack&#xff0c;mq就会一直保留消息。 spring:rabbitmq:listener:simple:acknowledge-mode: auto # 自动ack2. 失败重试机制 当消费者出现异常后&#xff0c;消息会不断requeue&#xff08;重入队&#xff09;到队列&#xff0c;再重新发送给消费者。…...

【K8S系列】如何监控集群CPU使用率并设置告警的分析与详细解决方案

监控 Kubernetes 集群的 CPU 使用率并设置告警是确保集群健康和性能的关键。以下是几种常见的方案&#xff0c;每种方案的具体步骤都进行了详细说明。 方案 1: 使用 Prometheus 和 Grafana 1. 安装 Prometheus 和 Grafana 1.1 使用 Helm 安装 Prometheus 添加 Helm 仓库: hel…...

解线性方程组(二)

实验类型&#xff1a;●验证性实验 ○综合性实验 ○设计性实验 实验目的&#xff1a;进一步熟练掌握用Jacobi迭代法和Gauss-Seidel法解线性方程组的算法&#xff0c;提高编程能力和解算线性方程组问题的实践技能。 实验内容&#xff1a; 1)取初值性x(0)(0,0,0,0)T, 精度要求ε…...

HarmonyOS Next 实战卡片开发 02

HarmonyOS Next 实战卡片开发 02 卡片开发中&#xff0c;还有一个难点是显示图片。其中分为显示本地图片和显示网络图片 显示本地图片 卡片可以显示本地图片&#xff0c;如存放在应用临时目录下的图片。路径比如 /data/app/el2/100/base/你的项目boundleName/temp/123.png 以…...

FastDDS服务发现之PDP的收发

目录 PDP发送PDP接收EDP更新 EntityID 通过FastDDS服务发现之PDP和EDP的创建这一节内容&#xff0c;可以了解服务发现的概念&#xff0c;机制和PDP/EDP中各类对象的创建&#xff0c;本文详细介绍Simple PDP发送数据&#xff0c;接收数据和处理报文的流程。 PDP发送 通过在RTP…...

【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】试卷(2)

前言 大家好吖&#xff0c;欢迎来到 YY 滴计算机网络 系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 本博客主要内容&#xff0c;收纳了一部门基本的计算机网络题目&#xff0c;供yy应对期中考试复习。大家可以参考 本章是去答案版本。带答案的版本在下…...

关于有机聚合物铝电容的使用(2)

在使用时需要特别注意的几个应用场景&#xff1a; 在有较长供电电缆或PCB电源布线较长的场合。 这个场景应当仍与有机聚合物铝电容的耐压有关。 假设在相同的冲击电流下&#xff0c;较长的供电电缆和PCB布线&#xff0c;那么电缆和PCB布线上产生的冲击电压就会越高。故而&…...

Linux -- 进程初印象

目录 预备知识 切入点 PCB 看见进程 pid getpid 函数 预备知识 Linux -- 冯诺依曼体系结构&#xff08;硬件&#xff09;-CSDN博客https://blog.csdn.net/2301_76973016/article/details/143598784?spm1001.2014.3001.5501 Linux -- 操作系统&#xff08;软件&#xf…...

【超级简单】Facebook脸书视频下载一键保存手机

Facebook作为目前服务全球30亿用户&#xff0c;尤其是出海和跨境用户没有办法忽视的平台&#xff0c;提供了一个在线平台&#xff0c;使用户分享照片、视频、状态更新和链接等内容&#xff0c;然而&#xff0c;令人遗憾的是&#xff0c;用户没有办法直接将照片和视频保存到本地…...

昇思大模型平台打卡体验活动:项目2基于MindSpore通过GPT实现情感分类

昇思大模型平台打卡体验活动&#xff1a;项目2基于MindSpore通过GPT实现情感分类 1. 载入与处理数据集 在情感分类任务中&#xff0c;我们使用了IMDB数据集&#xff0c;首先需要对数据进行加载和处理。由于原数据集没有验证集&#xff0c;我们将训练集重新划分为训练集和验证…...

【JAVA】会员等级互通匹配数据库表设计

1、使用数据库&#xff1a;mysql数据库 设计四张表&#xff1a; 会员互通合作商配置表 会员互通合作商会员等级配置表 会员互通合作日志表 会员互通合作等级映射表 CREATE TABLE user_level_partner ( id bigint NOT NULL AUTO_INCREMENT, partner_novarchar(100) DE…...

论文阅读:基于语义分割的非结构化田间道路场景识别

论文地址&#xff1a;DOI: 10.11975/j.issn.1002-6819.2021.22.017 概要 环境信息感知是智能农业装备系统自主导航作业的关键技术之一。农业田间道路复杂多变&#xff0c;快速准确地识别可通行区域&#xff0c;辨析障碍物类别&#xff0c;可为农业装备系统高效安全地进行路径规…...

移动网站建站视频/网络营销推广策划书

ElasticSearch集群支持动态请求的方式搭建集群和静态配置文件搭建集群 关于集群的动态连接方式官方的文档&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-update-settings.html 前置准备工作 关于参数的官网说明&#xff1a; https:…...

长沙网站建设/优化推广网站推荐

Round1&#xff1a;逻辑结构 都属于线性表&#xff0c;都是线性结构 Round2&#xff1a;存储结构 顺序表的优缺点&#xff1a; 优点&#xff1a; 支持随机存取&#xff0c;存储密度高&#xff08;只需要存储数据&#xff09; 缺点&#xff1a; 大片连续空间分配不方便&#…...

网站内部链接怎麽做/域名查询网站

差分算法是一种基础算法 介绍&#xff1a;差分算法的特点在于支持区间修改(O(1)的时间复杂度)&#xff0c;能够通过求前缀和获得修改后的原数组&#xff0c;O(n), 所以差分算法一般都是需要多次修改后&#xff0c;再进行一次前缀和求和的情况下 先看看一维差分 一维差分 一维…...

JavaScript做的网站/游戏代理怎么找渠道

Windows API 简介 其实很早之前我就完成了红队路径&#xff0c;只是没写笔记&#xff0c;现在开始复习一下红队&#xff0c;根据大佬的建议&#xff0c;我们直接只看 .NET C#相关的利用 了解如何与 win32 API 交互并了解其广泛的用例 Windows API 提供本机功能来与 Windows …...

wordpress 定向次数过多/廊坊百度关键词优化

Java之读写分离实现需求说明解决方案Sharding-JDBC实现步骤MySQL主从复制环境搭建数据库创建Maven项目搭建数据源配置测试样例总结存在问题参考地址需求说明 读写分离 数据库做读写分离&#xff0c;一主多从 解决方案 应用层解决 中间件解决 Sharding-JDBC Sharding-JDBC …...

广东旅游网站建设/搜索引擎yandex入口

第一种境界的诗句引自晏殊的《蝶恋花》&#xff1b;槛菊愁烟兰泣露&#xff0c;罗慕轻寒&#xff0c;燕子双飞去。明月不谙离恨苦&#xff0c;斜光到晓穿朱户。昨夜西风凋碧树&#xff0c;独上高楼。望尽天涯路。欲寄彩笺无尺素&#xff0c;山长水阔知何处。第二种境界的诗句引…...