题目给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2,找出并返回这两个正序数组的 。中位数解题思路这道题我们如果使用C语言,很自然的就会想道口利用内存管理和指针来解题,分步骤如下:开辟动态内存往开辟的内存中有序存放2个数组的元素元素是偶数个 -> 取动态内存中间2个数
摘要:本文以220和284的奇妙邂逅为引,探索了亲和数的神秘世界,并用C语言编织了一个寻找数字间“友谊”的程序。定义亲和数,指两个正整数中,彼此的全部约数之和(本身除外)与另一方相等比如220的所有因子之和(去除自身),为284284的所有因子和(去除自身),刚好也为220这样,我们就把它们两个称为一对亲和数 程序设计思路设循环数为i提取i的所有因数(除去自身),并将其求和,得到iSum提取iSu
摘要:当程序员遇上π,蒙特卡洛算法成了他们的魔法棒。本文用一段C语言代码,将随机点的雨滴洒向数字的海洋,用概率的网捕捉π的踪迹。这不仅是一场算法的探险,更是对编程魔法的一次奇妙展示。认识蒙特卡洛算法蒙特卡洛算法是一类基于概率的算法的统称,不是特指某一种算法。它也被称为统计模拟方法,是指使用随机数来解决很多计算问题的方法。它的工作原理为两件事:不断抽样逐渐逼近使用蒙特卡洛算法今天我们来用它来逼近&n
数字的魔法:给我任意一个四位数,通过排列和减法,最终总能得到6174——卡布列克常数。本文用代码演示了这一神奇过程,带你领略数学的奇妙和编程的乐趣。卡布列克常数(Kablek constant):任意一个不是由完全相同数字组成的四位数,如果对它们的每位数字重新排序,组成一个较大的数和一个较小的数,然后用较大数减去较小数,差不够四位数时补零,类推下去,最后将变成一个固定的数:6174,这就是卡布列克
题目描述:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例:分析:这道题是链表中比较经典的一道题。有很多种方式来解题,我们这里选择的是比较巧妙的递归解法。反转单链表,并不用对链表中的数据进行逆序排序。而可以直接将链表中各个结点的链接方式进行更改。简单来说,就是将后驱指针改为前驱指针。我们的递归设计思路为:往下递推,直至尾结点开始回归,将原next结点的ne
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数”。例如,6的因子为1,2,3,而6 = 1+2+3.因此6是“完数”。编程序找出100之内的所有完数,并按下面格式输出其因子:6 its factors are 1, 2, 3分析:这道题的难点在于如何计算一个数的因子和。我们将它拆分为 --> 如何找到一个数的因子找一个数的因子就比较简单了,只要拿比这个数小的数去尝试除它,若可以整除
题目:编写程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串,请用指针完成。分析:让指向computer的指针设置为char* 类型,然后每次+2来输出即可。代码实现:#include <stdio.h> int main() { char s[] = "computer"; char* p = NULL; //输出原字符串,用来与下面的输出对
[真题] (华东师范大学):输入一行字符,然后按逆序输出。分析:这道题我们有2种算法递归循环递归的算法是先递推到字符串末尾,然后从末尾开始输出字符。循环的算法是用strlen求出字符串的长度,然后从右往左输出字符。我们用递归来解题。代码实现:#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <assert
[真题] (北京理工大学) :编写一函数能够统计出一个字符串中字母、数字、空格和其他字符的个数,要求在主函数中输入字符串并输出统计结果。分析:本题必须用gets,不能用scanf语句对字符串赋值。因为用scanf语句输入时,遇到空格即停止录入。而gets遇到换行符才停下。代码实现:#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>
题目:一个盒子中放有12个球,其中3个红的,3和白的,6个黑的,从中任取8个球,求共有多少种不同颜色搭配,分别输出。分析:写2层嵌套的循环,把每一种搭配都循环一遍。然后在循环内部做判断,符合数量要求的即可。代码实现:#include <stdio.h> #define RED 3 #define WHITE 3 #define BLACK 6 #define MAX 8 int ma
题目:输入 2 个十进制整数 M 和 N,输入M对应的N进制数,2 <= n && n <= 16例如:输入 6 2输出 1 1 0分析:进制转换的题这几年很喜欢考,我们前面的文章已经有过详细的解析,这里就不赘述了,直接写代码代码实现:#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include
题目:有一个5*5的二维数组(要求通过键盘为其赋值),求其周边元素之和以及该数组中最小的元素,然后输出。分析:先建立一个5*5的数组再建立2层循环嵌套,外层循环控制行,内层循环控制列然后我们在循环体内把3件事情都做了:录入数据至二维数组求周边元素之和找数组中最小元素代码实现:#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> i
题目:输入10个字符串,从中找到最大的字符串并输出。要求使用二维数组存放这些字符串,用指针数组分别指向这些字符串,用一个二级指针指向这个指针数组。分析:这道题比较简单,如果不是题目限制我们必须建立二维字符数组、指针数组和二级指针的话,我们甚至可以在录入的同时去比较字符串大小,输入一结束,结果就可以瞬间出来。但做题,还是要看题目要求的。所以我们先按要求,建立二维字符数组、指针数组和二级指针。然后再利
真题(西北工业大学):编程实现:在主函数中,从键盘读入10个整数,按从大到小的顺序构造链表。每读入一个整数, 就调用函数,函数根据整数的大小在合适的位置插入链表。题目分析:实现思想:循环输入10个整数给每个数动态创建一个结点,用 malloc 函数动态分配内存查找这个数在链表中该存放的位置插入进去输出结果难点击破:这道题只有2个难点,也是考点所在:建立链表从大到小插入到链表里1.链表直接上代码st
题目:输入一个数字字符串,将其输出为整数输出。不得调用C语言提供的将数字字符串转化为整数的库函数来完成。输入输出示例:输入:-1234输出:-1234分析:这种题我们有一种通用的算法:n = n * 10 + *p - '0'while (*p)//p为指向“数字字符串 首位字符地址”的指针 { n = n * 10 + *p - '0'; p++; }利用这个算法,我们可以轻易解题。
题目:一个自然数的七进制表达式是一个3位数,而这个自然数的九进制表达式也是一个3位数,且这2个3位数的数码顺序正好相反,求这个自然数。解题思路:该题考察的是我们的进制转换,而不同类型中的进制转换纯粹是数学上的计算。只要在数学上理解了,写出进制转换的代码轻而易举。所以我们直接从数学上分析:以10进制的101,转7进制为例10进制的10展开来看,从低位到高位其实是:它每一位的权重,是以10为底,以位次
题目:编写程序从终端键盘输人圆的半径r,圆柱的高h分别计算出圆周长cl、 圆面积cs和圆柱的体积cvz输出计算结果时要求有文字说明,并取小数点后2位数字代码实现:#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #define PI 3.14159 int main() { float r = 0.0f; float h
本题来源于牛客网,是一道很有意思的题目,我们一起来做一下吧!题目:给定一个数组height,长度为n,每个数代表坐标轴中的一个点的高度,height[i]是在第i点的高度,请问,从中选2个高度与x轴组成的容器最多能容纳多少水1.你不能倾斜容器2.当n小于2时,视为不能形成容器,请返回03.数据保证能容纳最多的水不会超过整形范围,即不会超过231-1数据范围:如输入的height为[1,7,3,2,
题目:要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。斐波那契数列,又称黄金分割数列 ,它是指这样一个数列:1,1,2,3,5,8,13,21,34,55,89……这个数列从第3项开始 ,每一项都等于前两项之和。输入数据范围:要求:空间复杂度 ,时间复杂度 ,本题也有时间复杂度 的解法解题思想:本题要求使用动态规划的方法解题,所以我
题目:存款利息的计算。有1000元,想存5年,可按以下5种办法存:(1)一次存5年期(2)先存2年期,到期后将本息再存3年期(3)先存3年期,到期后将本息再存2年期(4)存1年期,到期后将本息再存1年期,连续存5次(5)存活期存款,活期利息每一季度结算一次2017年银行存款利息如下:1年期定期存款利息为1.5%;2年期定期存款利息为2.1%;3年期定期存款利息为2.75%;5年期定期存款利息为3%
题目:编写程序实现:输人一个整数,判断它能否分别被3、5、7整除,并输出以下信息之一:(1)能同时被3、5、7整除;(2)能被其中两数(要指出哪两个)整除;(3)能被其中一个数(要指出哪-一个)整除;(4)不能被3、5、7 中任一个整除。代码实现:#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { i
题目:编写程序判断输人的正整数是否既是5又是7的整倍数。若是,则输出yes,否则输出no代码实现:#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int n = 0; scanf("%d", &n); //n % m == 0 // 代表 n 可以被 m 整除 // 也就是说
题目: 输出100-200之间的素数 (素数是除了1和它本身不能被其它数整除的数)。代码实现:#include <stdio.h> #include <math.h> #include <stdbool.h> #define START 100 #define END 200 bool Is_prime(int n) { int i = 0;
题目:用一维数组接收学生成绩,输出最高成绩学成绩和序号(学生序号从1开始,最后一个是10)。解题思路:我们可以在录入数据的同时,让每一个数进行比较,并记录较大值和它的下标。然后输出结果即可解题(注意下标要进行 + 1)代码实现:1.使用指针#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #define SIZE 10 in
题目:假设有一个一元二次方程,有a,b,c三个系数,求该方程的根并输出,没有则输出"Error"(已知头文件math.h中的求平方根的sqrt函数)。分析:要解决本题,我们首先要熟悉一元二次方程的求根公式:然后建立3个分支结构:方程有2个不同实数根方程有2个相同实数根方程没有实数根在分支结构中套用此公式即可解题。代码实现:#define _CRT_SECURE_NO_WARNINGS 1 #in
题目:给一个长度为 n 整数数组排序,即实现一个可以给任意长度数列排序的工具输入描述:第1行输入1个正整数 n ,表示数组长度。第2行输入 n 个正整数,表示数组中每个元素的值输出描述:输出排序后的数组解题思路:利用calloc或者malloc动态开辟空间,用来存储n个元素的数列利用冒泡排序对数列进行排序代码实现:#define _CRT_SECURE_NO_WARNINGS 1 #includ
题目:给出一百分制成绩,要求输出成绩等级’A’、‘B’、‘C’、‘D’、‘E’。90分以上为’A’80~89分为’B’70~79分为’C’60~69分为’D’ 60分以下为’E’解题思路:这道题显然是在考察选择结构。我们写一个嵌套的if语句,来实现分支选择。代码实现:#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int m
题目:有一个函数:写程序,输入x的值,输出y相应的值。解题思路:我们可以写一个嵌套3层的if语句,来实现分支选择。代码实现:#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int x = 0; int y = 0; printf("Please input x:\n"); scanf("%
题目描述来源:牛客网题目描述:牛牛有一个学习计划,他计划在 y 年 m 月 d 日开始学习,但在之前他是绝不会开始学习的,但是他一旦开始学习就不会停下来,请你判断 y1 年 m1 月 d1 日牛牛应该学习吗。输入描述:第一行输入 y ,m ,d ,即牛牛计划开始学习的时间。第二行输入 y1,m1,d1,即询问的时间。输出描述:请你判断牛牛是否开始学习。如果是则输出 yes ,否则输出
题目描述来源:牛客网题目:描述牛牛正在寄快递,他了解到快递在 1kg 以内的按起步价 20 元计算,超出部分按每 kg 1元计算,不足 1kg 部分按 1kg计算。如果加急的话要额外付五元,请问牛牛总共要支付多少快递费输入描述:第一行输入一个单精度浮点数 a 和一个字符 b ,a 表示牛牛要寄的快递的重量,b表示牛牛是否选择加急,'y' 表示加急 ,'n' 表示不加急。输出描述:输出牛牛总共要支付
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号