C语言题目要求实现方法总结(1-10)

目录

一、互换A, B的值

1. 1使用中间变量

1.2 使用异或^(不允许创建中间变量)

1.3 使用函数(指针传参)

二、 按降序输出A, B的值

2.1 直接实现

2.2 使用指针

三、 找出最大值

3.1 遍历数组

先输入再找(常规)

边输入边找(改进)

其实把数组优化掉也不是不可以(偷懒法,不够通用,第一个常规法最通用)

四、进行排序

4.1 暴力循环法

4.2 冒泡排序

五、逆序存储

六、斐波那契数列

递归实现(最简):

函数实现

七、公约数和公倍数:

7.1 最大公约数

函数实现

递归实现(进阶)

7.2 最小公倍数

八、闰年

九、switch语句

十、求素数


一、互换A, B的值

1. 1使用中间变量

int main() {int A, B;scanf("%d %d", &A, &B);int tmp = A;A = B;B = tmp;printf("%d %d", A, B);return 0;
}

1.2 使用异或^(不允许创建中间变量)

int main()
{int a,b;scanf("%d %d", &a, &b);a = a ^ b;b = a ^ b;a = a ^ b;printf("%d %d", a, b);retu

1.3 使用函数(指针传参)

int Swap(int* m, int* n)
{int tmp;tmp = *n;*n = *m;*m = tmp;return 0;
}int main()
{int a, b;scanf("%d %d", &a, &b);Swap(a, b);printf("%d %d\n", a, b);return 0;
}

二、 按降序输出A, B的值

2.1 直接实现

int main() {int A, B;scanf("%d %d", &A, &B);if (A > B)printf("%d %d", A, B);if (A < B)printf("%d %d", B, A);return 0;
}

2.2 使用指针

int main() {int A, B,*p,*q;scanf("%d %d", &A, &B);p = &A;q = &B;if(*p>*q)printf("%d %d", *p, *q);if (*p < *q)printf("%d %d", *q, *p);return 0;
}

三、 找出最大值

背景:依次输入10个数,找出其中最大的数

3.1 遍历数组

先输入再找(常规)

int main() {int a[10] = { 0 };for (int i = 0; i < 10; i++)//遍历数组输入10个数{scanf("%d", &a[i]);}                        int max = 0;                //遍历数组找出最大值for (int i = 0; i < 10; i++){   if (max < a[i])max = a[i];}printf("%d", max);return 0;
}

边输入边找(改进)

int main() {int a[10] = { 0 }, max = 0;;for (int i = 0; i < 10; i++){scanf("%d", &a[i]);if (max < a[i])max = a[i];}printf("%d", max);return 0;
}

其实把数组优化掉也不是不可以(偷懒法,不够通用,第一个常规法最通用)

int main() {int n,max = 0;;for (int i = 0; i < 10; i++){scanf("%d", &n);if (max < n)max = n;}printf("%d", max);return 0;
}

四、进行排序

背景:依次输入10个数,按降序输出

因为需要存储这10个数,所以这次一定要用数组了(不然创建10个变量不够优雅)

4.1 暴力循环法

不使用排序方法排序数组,强行按降序输出,(循环较为繁琐)

int main() {int a[10] = { 0 };int max = 0;for (int i = 0; i < 10; i++){scanf("%d", &a[i]);      //接收10个数if (max < a[i])max = a[i];          //得到最大值,方便后续循环建立}for (int j = max; j >= 0; j--)//从最大值开始向下遍历{for (int i = 0; i < 10; i++)//与数组内的数一一比较{if (j == a[i])        //相等则输出{printf("%d ", j);break;            //输出后记得跳出循环,不然可能重复输出}}}return 0;
}

4.2 冒泡排序

        冒泡排序是一种简单直观的排序算法,它重复地走访要排序的元素,依次比较相邻的两个元素,如果它们的顺序不正确就交换它们。通过多次遍历数组并比较相邻元素的大小,最大(或最小)的元素会逐渐 “浮” 到最后(或最前)的位置,最终实现整个数组的排序。

具体步骤如下:

  1. 从第一个元素开始,依次比较相邻的两个元素,如果顺序不正确就交换它们;
  2. 继续比较下一对相邻元素,执行同样的操作;
  3. 重复以上步骤,直到没有任何一对相邻元素需要交换位置。

        冒泡排序的时间复杂度为O(n^2),其中n表示待排序元素的个数。虽然冒泡排序效率较低,但由于实现简单,适用于元素数量较少的情况。

//冒泡排序
void sort(int a[10]) {for (int i = 0; i < 10; i++) {    //遍历数组10次,每次移动一项for (int j = 0; j < 9; j++)   //移动一项,每次移动一位,最多共需移动9次if (a[i] < a[i + 1])      //满足条件则交换两项{int tmp = a[i];a[i + 1] = a[i];a[i + 1] = tmp;}}
}int main() {int a[10];for (int i = 0; i < 10; i++)    //通过循环接收数组scanf("%d", &a[i]);sort(a);                        //调用函数进行冒泡排序for (int i = 0; i < 10; i++)printf("%d\n", a[i]);       //打印结果return 0;
}

五、逆序存储

背景:用数组接收10个整数,逆序存储,然后输出

int main() {int a[10];for (int i = 0; i < 10; i++)	//接收数组scanf("%d", &a[i]);for (int i = 0; i < 5; i++)		//逆序存储{int tmp = a[i];				//对称交换5次,通过下标确定交换对象a[i] = a[9 - i];a[9 - i] = tmp;}for (int i = 0; i < 10; i++)	//输出结果printf("%d", a[i]);return 0;
}

六、斐波那契数列

递归实现(最简):

递归

int fib(int n) {if (n < 3)return 1;elsereturn fib(n - 1) + fib(n - 2);
}

三目表达式

int fib(int n) {return n < 3 ? 1 : fib(n - 1) + fib(n - 2);
}

函数实现

//斐波那契数列循环实现
int main() {int f1 = 1, f2 = 1, f3, ;printf("%d\n%d\n", f1,f2);for (int i = 1; i <= 30; i++){f3 = f1 + f2;printf("%d\n", f3);f1 = f2;f2 = f3;}return 0;
}

举例是输出1-30项,稍加修改也可以得到某一项

//斐波那契数列循环实现
int main() {int f1 = 1, f2 = 1, f3, n;scanf("%d", &n);            //输入想要得到的项for (int i = 1; i <= n; i++){f3 = f1 + f2;f1 = f2;f2 = f3;}printf("%d\n", f2);return 0;
}

七、公约数和公倍数:

7.1 最大公约数

函数实现

int gcd(int a, int b){while (b){int t = b;b = a % b;a = t;}return a;
}

递归实现(进阶)

        三目表达式(最简)

int gcd(int a, int b) {return b > 0 ? gcd(b, a % b) : a;
}

7.2 最小公倍数

1. 需调用最大公约数

int lcm(int a, int b) {return a * b / gcd(a, b);
}

2. 输出最大公约数和最小公倍数的实例

//输出最大公约数和最小公倍数的实例
int gcd(int a, int b) {return b > 0 ? gcd(b, a % b) : a;
}
int lcm(int a, int b) {return a * b / gcd(a, b);
}int main() {int m, n;scanf("%d %d", &m, &n);int a =gcd(m, n);int b = lcm(m, n);printf("gcd=%d,lcm=%d",a,b);return 0;
}

3. 求多个数的最小公倍数

//从定义出发
int main() {int a, b, c;scanf("%d %d %d", &a, &b, &c);for (int i = 1;; i++) {if (i % a == 0 && i % b == 0 && i % c == 0){printf("%d", i);break;}}return 0;
}

八、闰年

//输出1900-2000年中是闰年的年份
int main() {for (int i = 1900; i <= 2000; i++)if (i % 4 == 0 && i % 100 != 0 || i % 100 == 0 && i % 400 == 0)printf("%d ", i);return 0;
}

九、switch语句

若题目要求使用switch语句,也要牢记switch语句的用法

switch(表达式)
{
case 常量1:语句1
case 常量2:语句2
default:语句n   break;
}
int bonus(int n) {if (n > 1000)                //写一个奖金函数,判断奖金属于哪一档return 1;else if (n > 800 && n < 1000)return 2;else if (n > 600 && n < 800)return 3;elsereturn 4;
}int main() {            int n;scanf("%d", &n);switch (bonus(n))            //通过switch语句完成{case 1:printf("perfect");break;                   //使用Switch语句不要忘记加break;case 2:printf("well done");break;case 3:printf("good");break;case 4:printf("keep trying");break;}return 0;
}

十、求素数

求100-200之间的素数

#include<math.h>
#include<stdio.h>
int main()
{int i;int count = 0;for (i = 101; i < 200; i += 2) // 因为偶数一定不是素数,这里缩小范围,在奇数中去找素数{int j; //定义一个变量j用来表示因子int flag = 1;//此时定义一个flag标记,表示假设i是素数for (j = 2; j <= sqrt(i); j++)//假设一个数m= a*b,那么这个数m它的因子a和b中一定至少有一个因子小于等于m的开平方数{if (i % j == 0){flag = 0; break;}}//当上一个for循环任意一个数i都不能被j(2到i-1)整除,也即j==i时,跳出for循环if (flag == 1) //此时判断如果flag还是为1,则说明i是素数{count++;printf("%d ", i);//打印素数}}printf("\ncount = %d\n", count);//所有素数求出来之后,打印素数的个数return 0;
}

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

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

相关文章

一文了解JVM(中)

HotSpot 虚拟机对象探秘 对象的创建 Header解释使用 new 关键字调用了构造函数使用 Class 的 newInstance 方法调用了构造函数使用 Constructor 类的newInstance 方法调用了构造函数使用 clone 方法没有调用构造函数使用反序列化没有调用构造函数说到对象的创建,首先让我们看…

6个迹象表明你的电脑电缆管理很糟糕,看下你有没有中招

​清理电脑内部的电缆可能看起来像是徒劳的忙碌。毕竟,如果一切都正常,为什么还要麻烦呢?好吧,我有六个很好的理由可以说服你打开你的机箱,修复你电脑里的混乱。 你很难打开侧板 如果你的电缆离侧板的边缘太近,你将无法毫不费力地将它们滑开。虽然这不是你每天都要做的…

完全指南:C语言学习资源汇总

C语言是编程学习的基石&#xff0c;无论是为了职业发展还是个人兴趣&#xff0c;掌握C语言都是技术生涯的重要一步。为了帮助初学者和有经验的程序员更好地学习和深化对C语言的理解&#xff0c;我们汇总了一系列优秀的书籍和在线资源。这些资源将帮助你从基础知识到高级概念&am…

数据结构——图论详细笔记

一 图论基本概念 Directed Acyclic Graph &#xff08;DAG&#xff09; 二 图的存储 ①邻接矩阵(适用于稠密图) ②邻接表(适用于稀疏图) 三、图的遍历 ①深度优先搜索 //(基于邻接表实现&#xff0c;以有向图为例) //DFS:Depth First Search 深度优先搜索 //1、访问起始顶点 …

为什么要开发盲盒小程序?商家企业的盈利方向?

近几年&#xff0c;盲盒已经成为了一种娱乐消费的流行趋势&#xff0c;受到了年轻人的喜欢&#xff0c;推动了盲盒经济的快速发展。在互联网的支持下&#xff0c;盲盒行业也获得了数字化发展&#xff0c;盲盒小程序为市场创新发展提供了重要动力。在当下小程序快速发展的时代&a…

【C++修行之道】类和对象(四)运算符重载

目录 一、 运算符重载 函数重载和运算符重载有什么关系&#xff1f; 二、.*运算符的作用 三、运算符重载的正常使用 四、重载成成员函数 五、赋值运算符重载 1.赋值运算符重载格式 传值返回和引用返回 有没有办法不生成拷贝&#xff1f; 2. 赋值运算符只能重载成类的…

MongoDB CRUD操作:可重试写入

MongoDB CRUD操作&#xff1a;可重试写入 文章目录 MongoDB CRUD操作&#xff1a;可重试写入使用的先决条件部署的限制支持的存储引擎3.6 MongoDB 驱动程序MongoDB 版本写确认 可重试写入和多文档事务启用可重试写入MongoDB驱动mongosh 可重试的写操作行为持续的网络错误故障切…

Linux如何远程连接服务器?

远程连接服务器是当代计算机技术中一个非常重要的功能&#xff0c;在各种领域都有广泛的应用。本文将重点介绍如何使用Linux系统进行远程连接服务器操作。 SSH协议 远程连接服务器最常用的方式是使用SSH&#xff08;Secure Shell&#xff09;协议。SSH是一种网络协议&#xff…

Java常规题技术分享

一、数组排序和添加成员 设计类Student和类StudentClass。 (1) 类Student有字符串属性name、double属性grade和int属性age 有带参数的构造方法&#xff0c;可设置三个属性的值 有各个属性的置取方法 (2)类StudentClass有Student数组属性stus存放班级成员&#xff0c;有int…

「不只是框架:Django REST framework的超能力大揭秘」

想要让你的API服务像五星级餐厅一样令人难忘吗&#xff1f;今天阿佑将为你揭晓&#xff01;从基础的RESTful原则到Django REST framework的高级特性&#xff0c;我们一步步带你走进API开发的后厨&#xff0c;展示如何准备食材&#xff08;数据模型&#xff09;、调制酱料&#…

揭秘GPU技术新趋势:从虚拟化到池化

从GPU虚拟化到池化 大模型兴起加剧GPU算力需求&#xff0c;企业面临GPU资源有限且利用率不高的挑战。为打破这一瓶颈&#xff0c;实现GPU算力资源均衡与国产化替代&#xff0c;GPU算力池化成为关键。本文深入探讨GPU设备虚拟化途径、共享方案及云原生实现&#xff0c;旨在优化资…

Java EE-Spring Session实现(如何导入依赖、配置文件)

Spring Session Session 共享问题 在 Web 项目开发中&#xff0c;Session 会话管理是一个很重要的部分&#xff0c;用于存储与记录用户的状态或相关的数据。 通常情况下 session 交由容器&#xff08;tomcat&#xff09;来负责存储和管理&#xff0c;但是如果项目部署在多台…

yolov5模型结构与构建原理

一.yolov5模型结构与构建原理 修改模型结构&#xff0c;全部在models文件夹下面 models/common.py &#xff08;加入新增网络细节&#xff09; models/yolo.py &#xff08;设定网络结构传参细节&#xff09; models/##.yaml &#xff08;修改模型结构配置文…

测试文章27-这是一篇测试文章请忽略

这是一篇测试文章请忽略 这是测试的文字&#xff0c;如有打扰请谅解。稍后测试完毕会删除 ‍ ‍ 测试代码块 ‍ public static void main(String[] args){System.out.println("Hello, World!"); } aaa

kill 不管用时,类型为C

当使用nvidia-smi时看到类型为C的进程时&#xff0c;使用 kill -9 PID&#xff0c;却不管用&#xff0c;这时需要先使用如下命令&#xff0c;找出运行的脚本对应的所有PID: ps -aux | grep train.py 接着就会把train.py对应运行的进程全部展示出来&#xff1a; 接着就是使用 …

C++ 习题精选(3)——只出现一次的数字

目录 1. 只出现一次的数字 I2. 只出现一次的数字 II 1. 只出现一次的数字 I 题目描述&#xff1a;给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度&…

Go 延迟调用机制

defer延迟调用机制 是什么&#xff1f;为什么&#xff1f; 延迟调用是函数return正常结束后或者painc异常结束前会执行的一些操作。 再申请资源的时候延迟调用&#xff0c;防止忘记资源释放&#xff0c;数据库、文件、锁等资源释放。 延迟调用的顺序&#xff1f; 会按先进后出的…

景源畅信电商:抖音小店怎么做好运营?

在如今这个数字化时代&#xff0c;电商平台如雨后春笋般涌现&#xff0c;其中抖音小店以其独特的短视频营销模式迅速崛起。如何在这个竞争激烈的市场中占据一席之地&#xff0c;成为了许多商家和创业者思考的问题。下面&#xff0c;我们将深入探讨抖音小店的运营策略&#xff0…

多线程插入10万条数据,且避免堆栈溢出

在多线程环境下插入大量数据&#xff08;如10万条&#xff09;时&#xff0c;避免堆栈溢出的关键在于合理管理线程的生命周期、控制递归深度&#xff08;如果使用了递归的话&#xff09;&#xff0c;以及合理分配每个线程处理的数据量。以下是一些建议来实现这个目标&#xff1…

论文阅读[268]基于EEM荧光光谱,感知燃烧产生的颗粒物

【论文基本信息】 标题:EEM Fluorescence Spectroscopy based Sensing of Combustion Generated Particulate Matter 来源与类型:华盛顿大学,博士学位论文 推荐理由:论文作者将主成分回归(PCR)方法与三维荧光光谱结合,预测样本中特定类污染物的总浓度,准确率达到了97.6…