C语言练习
C语言练习
kokouya
♥
展开
-
求一个有序数组中两个元素值相加为k的数组,返回这两个元素的下标。
题目描述:求一个有序数组(假设升序)中两个元素值相加为k的数组,返回这两个元素的下标。没找到返回 -1。Java实现:查看完整测试代码方法1:设置两个循环遍历数组,依次相加比较。时间复杂度O(n^2),空间复杂度O(n)。public static int[] sumK(int[] a,int k){ int[] index = {-1,-1}; in...原创 2019-08-21 21:54:31 · 639 阅读 · 0 评论 -
对于一个字符串,找到第一次重复的字符。
测试样例:"kdbaaak",返回:a注意:这里返回的是 a ,不是 k,题目意思不是先遍历字符串,然后找出重复的。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>char findFirstRepeat(char s[...原创 2019-08-20 16:55:51 · 1221 阅读 · 0 评论 -
数组中出现次数超过一半的数字
剑指offer——题目:数组中有一个数字出现次数超过数组长度的一半,请找出这个数字。方法1:利用qsort函数对数组进行排序,然后找出数组长度n的中位数n/2处的元素。判断其出现次数是否超过数组长度的一半。在检查函数中,我设置的若出现次数没有超过数组长度的一半则返回-1。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>...原创 2019-06-01 20:32:40 · 184 阅读 · 0 评论 -
字符串的排列
剑指offer——题目:输入一个字符串,打印出该字符串中字符的所有排列。如输入abc打印出abc,acb,bac,bca,cba,cab。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<assert.h>void Permutation(...原创 2019-06-01 19:06:13 · 91 阅读 · 0 评论 -
动态通讯录
题目:实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:1. 添加联系人信息2. 删除指定联系人信息3. 查找指定联系人信息4. 修改指定联系人信息5. 显示所有联系人信息6. 清空所有联系人7. 以名字排序所有联系人8. 保存联系人到文件9. 加载联系人头文件 contact.h...原创 2019-05-31 23:03:06 · 299 阅读 · 0 评论 -
顺时针打印矩阵
剑指offer——输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如,输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 1213 14 15 16则依次打印出数字:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10。分析:把矩阵看成若干个圈。利用循环一次打印一个圈。假如矩阵有R...原创 2019-05-27 21:18:55 · 139 阅读 · 0 评论 -
调整数组顺序使奇数全部位于偶数前面(扩展版)
剑指offer——输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。1.定义两个指针,left指向数组的头,right指向数组的尾2.判断情况:1)left指向的是偶数,right指向的是奇s数-----> arr[left] 和 a[right] 交换2)left指向奇数,直接left++3)right指...原创 2019-05-22 22:17:01 · 239 阅读 · 0 评论 -
数值的整数次方
剑指offer——实现函数double Power(double base,int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题。自以为题目简单的解法:用for或者while循环double Poweruint(double a, unsigned int ex){ double ret = 1.0; while (ex--){ ...原创 2019-05-22 20:55:59 · 130 阅读 · 0 评论 -
写一个函数,输入n,求斐波那契数列的第n项。
剑指offer——求斐波那契数列第n项。之前我写过一些递归与非递归的练习,其中包括了斐波那契数列,感兴趣的可以看一下其他例题。https://blog.csdn.net/qq_43606352/article/details/891624211.大家对递归算法求斐波那契数列是很熟悉的。分析递归的求解过程就会发现,递归有很严重的效率问题。对于规模较大的问题,递归占用的空间大,花费的时间长...原创 2019-05-21 23:02:26 · 8038 阅读 · 0 评论 -
旋转数组的最小数字
剑指offer——把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。方法1:从头到尾遍历一遍数组,就可以找出最小的元素。时间复杂度为O(n),代码很容易写,但是没有利用旋转数组的特性。一个无序数组通过遍历的方法同样可以找到最小元素。#...原创 2019-05-21 22:17:17 · 123 阅读 · 0 评论 -
C语言实现Trim()函数:删除字符串首尾空格。
如:“ cd dwq ”,删除后为“cd dwq”。思路:定义两个指针,一个指向字符串的第一个字符,向后遍历,找到第一个不为空格的字符。另一个指针指向字符串的最后一个字符,向前遍历,找到第一个不为空格的字符。将该字符的下一个字符设为 '\0',返回第一个指针。若字符串全为空格,返回空。isspace(int c)函数:头文件:#include<ctype.h>功...原创 2019-08-24 13:56:21 · 3551 阅读 · 0 评论 -
删除字符串首尾空格,中间的连续空格只留一个。
题目描述:编写代码完成如下功能:删除字符串首尾空格,中间的连续空格只留一个,原来字符串的顺序不变。如:"********as****adadp***"(*表示空格)变成"as*adadp"。思路:先删除首尾空格,若删除后字符串为空,则代表该字符串全为空格,那么返回 null,不用继续进行操作。若不为空,然后遍历字符串,为了避免访问溢出,从第一个遍历到倒数第二个字符。若该字符不...原创 2019-08-24 13:59:36 · 2370 阅读 · 0 评论 -
学完就忘之记录练习题
1.若有以下定义:char a; int b; float c; double b;则表达式 a * b + d - c 值的类型为 double。2.能正确表示逻辑关系:" a >= 10 或 a <= 0"的C语言表达式是 a >= 10 ||a <= 03.C 语言中,函数的返回值类型的定义可以缺省,此时函数返回值的隐含类型是 void。4. t...原创 2019-09-07 23:06:52 · 788 阅读 · 0 评论 -
9:回文数
问题描述:力扣链接 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。LeetCode解析示例 1:输入: 121 输出: true示例2:输入: -121 输出: false //解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。Java实现回文数测试代码方法1:首先负数肯定...原创 2019-08-12 22:33:03 · 124 阅读 · 0 评论 -
53:最大子序和
LeetCode题目链接问题描述:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释:连续子数组[4,-1,2,1] 的和最大,为6。思路:动态规划,定义两个变量,sum 代表当前子数组的和, ans 代表最大子数组的和如果 sum...原创 2019-08-15 20:24:27 · 135 阅读 · 0 评论 -
387:字符串中的第一个唯一字符
LeetCode原题链接题目描述:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = "leetcode" , 返回 0。 s = "loveleetcode",返回 2。思路:定义数组,长度为 26,代表 26 个字母,遍历字符串,将该字符出现次数记录下来,再次遍历字符串,判断该字符出现次数是否为 1,若是 1,则该字符就是第一个...原创 2019-08-15 23:38:34 · 219 阅读 · 0 评论 -
1000!有几位数,为什么?
答:2568 位求多个数相乘的位数只要求它的常用对数和就可以。解析:用科学计数法表示 b = a * 10^X,其中 1 < a <10,x 为整数,则 b 有 a + Y位数。比如:1509 = 1.509 * 10^3,则 1509 有 1 + 3(Y) = 4 位数。当 1 < a <10,0 < lg(a) < 1,即 lg(a * ...原创 2019-08-20 20:01:19 · 3157 阅读 · 0 评论 -
X^Y,X和Y均为整数
题目描述:模拟实现pow(x,y),x 和 y 均为整数(0不是整数)。思路:x,y有可能为正整数,负整数,当指数 y 为负数时,先对指数求绝对值,然后算出次方的结果再求倒数。方法1:一步一步求解,利用循环让 x 乘 x方法2:递归求解,简化运算。以平方为单位求解。Java实现import java.util.Scanner;public class MyPow {...原创 2019-08-20 19:08:21 · 1241 阅读 · 0 评论 -
从第一个字符串中删除第二个字符串中所有的字符
题目描述:输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符。例如:输入"They are students.",输入"aeiou",则删除之后的第一个字符串变为"Thy r stdnts."思路:建立数组,将字符串 2 的字符在数组中标记为 1,定义两个指针指向字符串 1,遍历字符串 1,若当前字符所代表的 ASIIC码在数组中对应的值不为 1,表示该字符不是字符串 2 中出现...原创 2019-08-20 17:58:25 · 2534 阅读 · 0 评论 -
(C语言)模拟实现strcpy,strcat,strstr,strchr, strcmp, memcpy, memmove.
1.模拟实现strcpy char *strcpy( char *strDestination, const char *strSource );把strSource 拷贝到strDestination,返回strDestination#include<stdio.h>#include<stdlib.h>#include<string.h>...原创 2019-05-12 16:52:04 · 133 阅读 · 0 评论 -
(递归)汉诺塔问题, 青蛙跳台阶问题
1.汉诺塔问题:在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。一个盘子:A--->C 一次两个盘子:A--->B A--->C B--->C 三次三个盘子:A--->C A--->B ...原创 2019-05-20 22:23:52 · 298 阅读 · 0 评论 -
C语言练习题
1. 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。#include<stdio.h>#include<stdlib.h>int main(){ for (i...原创 2019-04-14 17:21:21 · 114 阅读 · 0 评论 -
扫雷(C语言)
扫雷(C语言)1>第一次下子,不炸死。2>坐标周围没雷,可以实现展开。头文件 mine.h#ifndef _MINE_H_#define _MINE_H_#include<stdio.h>#include<stdlib.h>#include<time.h>#include<string.h>#define ROW 1...原创 2019-04-16 21:16:39 · 115 阅读 · 0 评论 -
三子棋(C语言)
C语言实现:三子棋问题**memset()函数,可以一个字节一个字节的把整个数组设置为一个指定的值,在<memory.h>或<string.h>头文件中声明。函数原型为void memset( void dest, int c, size_t count );其中第一个参数是数组名,第二个参数是设置的指定值,第三个参数使数组的长度。**srand ()函数,在<s...原创 2019-04-10 15:30:18 · 304 阅读 · 0 评论 -
C语言:递归与非递归
1.递归和非递归分别实现求第n个斐波那契数。#include <stdio.h>#include<stdlib.h>int Fib(int n)//递归{ if (n <= 2){ return 1; } else { return Fib(n - 1) + Fib(n - 2); }}int NFib(int n)//非递归{ in...原创 2019-04-09 21:15:45 · 1059 阅读 · 0 评论 -
用函数实现:打印乘法口诀表;实现两个数的交换;判断一个数是不是素数;判断year是不是润年;创建数组,实现函数初始化数组,清空数组,数组元素的逆置
1.实现一个函数,打印乘法口诀表。 2.使用函数实现两个数的交换。 3.实现一个函数判断year是不是润年。 4. 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。 5.实现一个函数,判断一个数是不是素数。头文件 函数的声明 teat.h#ifndef _TEST_H_#def...原创 2019-04-01 21:59:54 · 171 阅读 · 0 评论 -
写一个函数返回参数二进制中 1 的个数;获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列;输出一个整数的每一位;两个int整数m和n的二进制有多少bit位不同?
1.写一个函数返回参数二进制中 1 的个数方法1:将数字逻辑右移i位并按位与1如:10的二进制表示为(000…000)1010(此处省略前28位0,后同),当i=0时,逻辑右移0位,1010&0001 结果为0,count=0;当i=1时,逻辑右移1位,0101&0001 结果为1,count=1;当i=2时,逻辑右移2位,0010&0001 结果为0,count=1;...原创 2019-04-10 17:28:05 · 269 阅读 · 0 评论 -
用C语言实现:打印图案;求Sn=a+aa+aaa+aaa的前n项之和,其中a是一个数字;求出0~999之间的所有“水仙花数”并输出
用C语言实现:打印图案;求Sn=a+aa+aaa+aaa的前n项之和,其中a是一个数字;求出0~999之间的所有“水仙花数”并输出1.打印如下图案#include<stdio.h>#include<stdlib.h>int main(){ int i = 0; int j = 0; int line = 0; scanf("%d", &line);...原创 2019-03-25 21:18:03 · 426 阅读 · 0 评论 -
用C语言实现:给定两个整型变量的值,将两个值的内容交换;求10个整数中的最大值;将三个数从大到小输出;求两个数的最大公约数
用C语言实现:给定两个整型变量的值,将两个值的内容交换(不使用临时变量);求10个整数中的最大值(由键盘输入);将三个数从大到小输出;求两个数的最大公约数1.给定两个整型变量的值,将两个值的内容交换(1)使用临时变量,来完成值的交换#define _CRT_SECURE_NO_WARNINGS 1#include &lt;stdio.h&gt;#include &lt;stdlib.h&...原创 2019-03-17 22:22:57 · 499 阅读 · 0 评论 -
用C语言实现:将数组A中的和数组B中的内容进行交换;计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值;编写程序数一下1到100整数中数字9出现的次数
用C语言实现:将数组A中的和数组B中的内容进行交换;计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值;编写程序数一下1到100整数中数字9出现的次数1.将数组A中的和数组B中的内容进行交换#define _CRT_SECURE_NO_WARNINGS 1#include&lt;stdlib.h&gt;#include&lt;stdio.h&gt;int...原创 2019-03-17 21:53:33 · 659 阅读 · 0 评论 -
C语言练习
1.编写函数: unsigned int reverse_bit(unsigned int value),这个函数的返回值是value的二进制位模式从左到右翻转后的值。如:在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000程序结果返回:2...原创 2019-04-14 23:33:42 · 326 阅读 · 0 评论 -
C语言练习
1.一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个只出现一次的数字,编程实现。void qsort( void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) );功能: 对buf 指向的数据(包含num 项, 每项的大小为size)进行快速排序。如果函数compare...原创 2019-04-26 23:43:48 · 167 阅读 · 0 评论 -
演示多个字符从两端移动,向中间汇聚。模拟用户登录情景。猜数字游戏。
1.编写代码,演示多个字符从两端移动,向中间汇聚。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>void Fun1(char arr1[], char arr2[], int left, int right);int main(){...原创 2019-05-20 20:59:19 · 216 阅读 · 0 评论 -
二维数组的查找
剑指offer——在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。时间复杂度小于O(n)。分析:先把要查找的数字和右上角的作比较,如果要查找的数字大,由于数组每行每列都是递增的,那么剔除第一行元素。如果要查找的数字小,则剔除最后一列。一次剔除后将要查找数字和下一个右上角元素作比较,...原创 2019-05-19 20:30:21 · 225 阅读 · 0 评论 -
实现一个函数,替换字符串的空格。
剑指offer——实现一个函数,把字符串的每个空格替换成%20。如to be or not to be,输出to%20be%20or%20not%20to%20be。方法1:定义一个指针p指向数组,数组内元素个数为len,直观扫描数组,没有遇到空格时p++,遇见空格时将空格置为'%',利用memmove函数将数组往后移动两个字节,移动后的两个字节分别存放‘2','0',同时p+=3,每扫描一次...原创 2019-05-19 20:13:08 · 2456 阅读 · 3 评论 -
136:只出现一次的数字
题目描述:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个只出现一次的数字,编程实现。#include<stdio.h>#include<stdlib.h>int compare(const void *valuel1,const void *valuel2){ return *(int*)valuel1 - *(int*)value...原创 2019-05-18 22:43:34 · 149 阅读 · 0 评论 -
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。编程实现。
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。编程实现。#include<stdio.h>#include<stdlib.h>int main(){ int money = 0;//钱数 int total = 0; //喝的饮料总数 int empty = 0;//空瓶子数 scanf("%d", &money);...原创 2019-05-18 22:41:30 · 159 阅读 · 0 评论 -
实现一个函数,可以左旋字符串中的k个字符,判断一个字符串是否为另外一个字符串旋转之后的字符串。
1.实现一个函数,可以左旋字符串中的k个字符。ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>char Fun(char *str, int k){ asser...原创 2019-05-18 22:35:14 · 744 阅读 · 2 评论 -
调整数组使奇数全部都位于偶数前面,杨氏矩阵 (C语言)
1.调整数组使奇数全部都位于偶数前面。题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。(扩展版,有图示)https://blog.csdn.net/qq_43606352/article/details/90452351#include<stdio.h>#include<st...原创 2019-05-18 22:27:52 · 799 阅读 · 3 评论 -
模拟实现strncpy,strncat,strncmp
1.strncpy#include<stdio.h>#include<stdlib.h>#include<assert.h>//char *strncpy( char *strDest, const char *strSource, size_t count );char *Mystrncpy(char *dest, const char *stc...原创 2019-05-18 22:11:15 · 94 阅读 · 0 评论