C基础算法与实现

server/2025/2/3 19:01:33/

前言

        通过业务侧输入需求,使用代码完成。

1.偶数立方和

        编写函数求1~100中奇数的平方与偶数的立方的和

1.1代码实现结果

1.2源码示例

#include <stdio.h>// 计算1到100中奇数的平方与偶数的立方的和
int calculateSum() {int sum = 0;// 遍历1到100之间的所有数字for (int i = 1; i <= 100; i++) {// 如果是奇数if (i % 2 == 1) {// 计算奇数的平方并累加到总和中sum += i * i;} else {// 计算偶数的立方并累加到总和中sum += i * i * i;}}// 返回计算结果return sum;
}int main(int argc, const char *argv[])
{// 调用calculateSum函数并将结果存储在result变量中int result = calculateSum();// 输出结果printf("1到100中奇数的平方与偶数的立方的和为: %d\n", result);return 0;
}

2.买衣问钱

        买一件上衣59元,买一件裤子70元,如果成套买的话,一套120.假设我买了m个上衣和n个裤子,问:需要花多少钱?

2.1代码实现结果

2.2源码示例

#include <stdio.h>int main(int argc, const char *argv[])
{int m, n; // m表示上衣的数量,n表示裤子的数量int cost = 0; // 初始化总花费为0printf("请输入上衣的数量: ");scanf("%d", &m);printf("请输入裤子的数量: ");scanf("%d", &n);// 计算成套购买的套数int sets = (m < n) ? m : n;// 计算成套购买的花费cost += sets * 120;// 计算单独购买上衣的花费if (m > sets) {cost += (m - sets) * 59;}// 计算单独购买裤子的花费if (n > sets) {cost += (n - sets) * 70;}printf("总共需要花费: %d元\n", cost);return 0;
}

3.打印倒金字塔

        终端输入行数,打印倒金字塔

3.1代码实现结果

3.2源码示例

#include <stdio.h>int main(int argc, const char *argv[])
{int rows;// 提示用户输入行数printf("请输入行数: ");// 从用户输入中获取行数scanf("%d", &rows);// 外层循环控制行数for (int i = rows; i >= 1; i--) {// 内层循环控制空格的数量for (int j = 1; j <= rows - i; j++) {// 打印空格printf(" ");}// 内层循环控制星号的数量for (int k = 1; k <= 2 * i - 1; k++) {// 打印星号printf("*");}// 每行结束后换行printf("\n");}return 0;
}

4.异或算术

        使用异或和算术求和交换两个数

4.1代码实现结果

4.2源码示例

#include <stdio.h>int main(int argc, const char *argv[])
{int a = 5;int b = 10;printf("B_swap: a = %d, b = %d\n", a, b);// 使用异或运算交换a = a ^ b;b = a ^ b;a = a ^ b;printf("A_swap: a = %d, b = %d\n", a, b);printf("------------------------------\n");// 使用算术求和交换int x = 30;int y = 50;printf("B_swap1: a = %d, b = %d\n", x, y);x = x + y;y = x - y;x = x - y;printf("A_swap1: x = %d, y = %d\n", x, y);return 0;}

5.固定数字不同且无重复

        有 1、2、3、4个数字,能组成多少互不相同且无重复的三位?都是多少?

5.1代码实现结果

5.2源码示例

#include <stdio.h>int main(int argc, const char *argv[])
{// 初始化计数器int count = 0;// 定义一个包含4个数字的数组int digits[4] = {1, 2, 3, 4};// 外层循环遍历数组中的每个数字作为百位for (int i = 0; i < 4; i++) {// 中层循环遍历数组中的每个数字作为十位for (int j = 0; j < 4; j++) {// 内层循环遍历数组中的每个数字作为个位for (int k = 0; k < 4; k++) {// 检查百位、十位和个位数字是否不重复if (i != j && i != k && j != k) {// 打印由这三个数字组成的三位数printf("%d%d%d\n", digits[i], digits[j], digits[k]);// 计数器加1count++;}}}}// 打印生成的不重复三位数的总数printf("不重复有: %d\n", count);return 0;
}

6.求最大公约数和最小公倍数

        输入两个正整数m和n,求其最大公约数和最小公倍数

6.1代码实现效果

6.2源码示例

#include <stdio.h>// 函数声明
int gcd(int m, int n);
int lcm(int m, int n);int main(int argc, const char *argv[])
{int m, n;// 输入两个正整数printf("请输入两个正整数 m 和 n: ");scanf("%d %d", &m, &n);// 计算并输出最大公约数int gcd_result = gcd(m, n);printf("最大公约数: %d\n", gcd_result);// 计算并输出最小公倍数int lcm_result = lcm(m, n);printf("最小公倍数: %d\n", lcm_result);return 0;
}// 欧几里得算法求最大公约数
int gcd(int m, int n) {// 当n不为0时,继续循环while (n != 0) {// 计算m除以n的余数int temp = m % n;// 将n赋值给mm = n;// 将余数赋值给nn = temp;}// 返回m,此时m为最大公约数return m;
}// 利用最大公约数求最小公倍数
int lcm(int m, int n) {// 计算最小公倍数,公式为 (m * n) / gcd(m, n)return (m / gcd(m, n)) * n;
}

7.冒泡排序算法实例

        终端输入10个学生成绩,使用冒泡排序对学生成绩从低到高排序

7.1代码实现结果

7.2源码示例

#include <stdio.h>// 冒泡排序函数
void bubbleSort(int arr[], int n) 
{// 外层循环控制排序趟数for (int i = 0; i < n - 1; i++){// 内层循环控制每趟比较次数for (int j = 0; j < n - 1 - i; j++) {// 如果当前元素大于下一个元素,则交换它们if (arr[j] > arr[j + 1]) {// 交换相邻元素int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}int main(int argc, const char *argv[])
{int scores[10];printf("请输入10个学生成绩:\n");// 输入10个成绩for (int i = 0; i < 10; i++) {printf("学生 %d 成绩: ", i + 1);scanf("%d", &scores[i]);}// 使用冒泡排序对成绩进行排序bubbleSort(scores, 10);// 输出排序后的成绩printf("排序后的成绩(从低到高):\n");for (int i = 0; i < 10; i++) {printf("学生 %d 成绩: %d\n", i + 1, scores[i]);}return 0;
}

8.实现字符串的整体逆置

8.1代码实现结果

8.2源码示例

#include <stdio.h>
#include <string.h>int main(int argc, const char *argv[])
{char str[100];int i, j;char temp;// 提示用户输入一个字符串printf("请输入一个字符串: ");// 从标准输入读取字符串fgets(str, sizeof(str), stdin);// 去掉输入字符串末尾的换行符if (str[strlen(str) - 1] == '\n') {str[strlen(str) - 1] = '\0';}// 计算字符串长度int len = strlen(str);// 逆置字符串for (i = 0, j = len - 1; i < j; i++, j--) {// 交换字符temp = str[i];str[i] = str[j];str[j] = temp;}// 输出逆置后的字符串printf("逆置后的字符串: %s\n", str);return 0;
}


http://www.ppmy.cn/server/164681.html

相关文章

【开源免费】基于SpringBoot+Vue.JS美食推荐商城(JAVA毕业设计)

本文项目编号 T 166 &#xff0c;文末自助获取源码 \color{red}{T166&#xff0c;文末自助获取源码} T166&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

[STM32 - 野火] - - - 固件库学习笔记 - - -十三.高级定时器

一、高级定时器简介 高级定时器的简介在前面一章已经介绍过&#xff0c;可以点击下面链接了解&#xff0c;在这里进行一些补充。 [STM32 - 野火] - - - 固件库学习笔记 - - -十二.基本定时器 1.1 功能简介 1、高级定时器可以向上/向下/两边计数&#xff0c;还独有一个重复计…

数据库安全管理中的用户和角色管理:打造安全高效的数据环境

title: 数据库安全管理中的用户和角色管理:打造安全高效的数据环境 date: 2025/2/1 updated: 2025/2/1 author: cmdragon excerpt: 在数字化时代,数据库作为信息存储和处理的核心,安全管理显得尤为重要。用户和角色管理是保障数据库安全性的重要手段,合理的管理策略不仅…

【赵渝强老师】K8s中Pod探针的TCPSocketAction

在K8s集群中&#xff0c;当Pod处于运行状态时&#xff0c;kubelet通过使用探针&#xff08;Probe&#xff09;对容器的健康状态执行检查和诊断。K8s支持三种不同类型的探针&#xff0c;分别是&#xff1a;livenessProbe&#xff08;存活探针&#xff09;、readinessProbe&#…

实验六 项目二 简易信号发生器的设计与实现 (HEU)

声明&#xff1a;代码部分使用了AI工具 实验六 综合考核 Quartus 18.0 FPGA 5CSXFC6D6F31C6N 1. 实验项目 要求利用硬件描述语言Verilog&#xff08;或VHDL&#xff09;、图形描述方式、IP核&#xff0c;结合数字系统设计方法&#xff0c;在Quartus开发环境下&#xff…

科技快讯 | 领英“隐私风波”告一段落;华为余承东智驾 1345 公里返工,称智界 R7 打赢“鸡蛋保卫战”;谷歌翻译将增“提问”功能

谷歌安卓 16 快捷设置被曝告别悬浮窗&#xff0c;选项在面板内展开 科技媒体Android Authority于1月30日发布博文&#xff0c;称谷歌安卓16更新中&#xff0c;快捷面板&#xff08;Quick Setting&#xff09;功能可能回归旧版样式。当前安卓版Quick Setting点击磁贴会扩展为浮动…

笔灵ai写作技术浅析(四):知识图谱

知识图谱(Knowledge Graph)是一种结构化的知识表示方式,通过将知识以图的形式进行组织,帮助AI系统更好地理解和利用信息。在笔灵AI写作中,知识图谱技术被广泛应用于结构化组织各种领域的知识,使AI能够根据写作主题快速获取相关的背景知识、概念关系等,从而为生成内容提供…

DeepSeek R1本地化部署 Ollama + Chatbox 打造最强 AI 工具

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; Ollama &#x1f98b; 下载 Ollama&#x1f98b; 选择模型&#x1f98b; 运行模型&#x1f98b; 使用 && 测试 二&#xff1a;&#x1f525; Chat…