每日一练
daidaihaha
这个作者很懒,什么都没留下…
展开
-
求一个数二进制中1的位数
题目:比如给个5,5二进制为101,有两个1因此输出2.很多人都会觉得简单写出以下程序int Count_one_bits(int n){ int count = 0; while (n) { if (n & 1) count++; n = n >> 1; } return count;}但是这个代码是有问题的,如果给出的数是负数,原创 2018-01-24 10:31:43 · 671 阅读 · 0 评论 -
用C语言编写程序,将多个字符串排序输出
1:有三个字符串分别是:"hello" "bit" "world".然后排序之后输出的顺序为:"bit" "hello" "worldint main(){ char str1[100]; char str2[100]; char str3[100]; char tmp[100]; scanf("%s", str1); scanf("%s",原创 2018-02-23 23:38:06 · 9191 阅读 · 1 评论 -
将"i am a student"转换成" student a am i"
整体思路:1.先将整个字符串逆序 2.再将整个单词逆序void Reverse_word(char *left,char *right){ assert(left); assert(right); while (left < right) { char tmp = *left; *left = *right; *right = tmp原创 2018-03-02 11:32:18 · 2757 阅读 · 0 评论 -
用C语言编写一个程序,对整型数组排序(冒泡排序,选择排序)
冒泡排序:void Bubblesort(int *arr, int sz)//冒泡排序{ for (int j = sz - 1; j >= 0; j--)//控制趟数 { for (int i = 0; i+1 <= j; i++)//控制每趟多少次 { if (arr[i] > arr[i + 1]) { int tmp = arr[i...原创 2018-02-23 15:05:11 · 14029 阅读 · 0 评论 -
用C语言编写程序求一个1!+2!+3!+4!...(两种方法)
方法一:思路:用两个for循环,一个用于计算阶乘(n!),一个用于计算和(sum).代码如下,自己感悟。int main(){ int sum = 0; for (int i = 1; i <= 4; i++)//此循环用于求和 即求1!+2!+3!+4! { int ret = 1; for (int j = 1; j <= i; j++)//此循环用于计算...原创 2018-02-23 15:04:55 · 38075 阅读 · 3 评论 -
判断一个数是否是回文数(两种方法1.将数字翻转看与原来是否相等2.当作字符串处理看是不是左右对称相等)
方法一 :将一个整数翻转,判断翻转后的数是否与原数相等,如果相等则是回文数int JudgePalindrome(int n)//方法1{ int m = 0; int c = n;//保存n,底下用于判断是否和反过来的数相等 while (n) { m = m * 10 + n % 10; n = n / 10; } if (c == m) {...原创 2018-02-23 15:04:36 · 1802 阅读 · 0 评论 -
C语言求最小公倍数与最大公约数(4种实现)
一 最大公约数算法:1.辗转相除思想有整数a b;(1)a%b得到余数c (2)若c==0,则b就是最大公约数(3若c!=0,则a=b;b=c;继续执行(1)int GetGreatestCommonDivisor(int a, int b)//辗转相除{ int c = 1; while (c) { c = a%b; a = b; b = c; } return ...原创 2018-02-18 00:30:15 · 4070 阅读 · 0 评论 -
实现不创建临时变量,但交换两个数的函数
#include#include//方法1:创建临时变量//int Swap(int* x, int* y)//{// int tmp =*x;// *x = *y;// *y = tmp;//}//方法2:不创建临时变量 异或//int Swap(int *x,int *y)//{// *x = *x^*y;// *y = *x^*y;// *x原创 2018-02-09 23:42:45 · 371 阅读 · 0 评论 -
剑指offer第4题 把空格替换成20% 剑指offer第14题 让一个数组中奇数位与前面,偶数位与后面
1.题目:请实现一个函数,将一个字符串中的空格替换成20%,例如当字符串为i am happy,输出i%20am%20happy#include<stdio.h>#include<stdlib.h>#include<string.h>void replace_black(char*str){ int count = 0; char*ptr = st...原创 2018-02-09 20:59:51 · 215 阅读 · 0 评论 -
二分查找递归实现,非递归实现
二分查找非递归实现一 区间左闭右闭#include<stdio.h>#include<stdlib.h>int BinarySerach(int *arr, int x, int sz){ int left = 0; int right = sz - 1;//左闭右闭 while (left <= right)//注意有等号 { int mid...原创 2018-02-09 20:56:04 · 2381 阅读 · 3 评论 -
蛇形数组
#include#includeusing namespace std;#define line 10void initS(int arr[line][line]){ int i = 0; int j = 0; int m= line - 1; int n = line - 1; int s; int x; int z; int y; int原创 2018-01-27 15:37:45 · 267 阅读 · 0 评论 -
如何判断大小端
要判断大小端,我们首先来了解以下大小端的概念大端模式:数据的高字节,保存在内存的低地址中。而数据的低字节,保存在高地址中小段模式:数据的低字节,保存在内存的低地址中,而数据的高字节,保存在高地址中方法1:利用联合解决:首先要了解联合的存放顺序是所有成员都从低地址开始存放#includeunion A{ int a1; char b1;}a;int mai原创 2018-01-26 09:33:03 · 641 阅读 · 0 评论 -
实现字符串左移函数
例:实现字符串左移函数,比如“abcdef"左移三位就得到”defabc"三步翻转法:先翻转前三个得到cbadef从第四个字符开始翻转剩下的字符得到cbafed再接着整体翻转 defabc具体实现代码如下#define _CRT_SECURE_NO_WARNINGS#include#include#include#includevoid Revers原创 2018-01-24 23:17:28 · 1090 阅读 · 0 评论 -
关于逻辑移位和算数移位
很多人在这里都好像知道,但又不太清楚,我之前也是,不过现在我弄清楚了。移位分为两种------------逻辑移位,算数移位(说的都是补码)逻辑移位:二进制数(补码)向左向右移动,缺位补0 针对无符号数算数移位:算数左移和逻辑左移是相同的空位补0 针对有符号数 但是算数右移是补符号位,原创 2018-01-24 11:28:50 · 1640 阅读 · 1 评论 -
求连续子数组最大和
这个问题其实特别简单,但是我就是弄了很久才明白整体思路:定义两个变量cur用来表示当前连续子数组的最大值,sum表示的是最终返回的最大值。cur赋初值为0,然后遍历数组, if(cur+当前数组元素>当前数组元素)那么把这个元素加到cur上去。否则说明最大的连续子数组在当前元素以及当前元素之后所以cur=当前元素。每次都把当前最大cur和max比较,如果大于max则更新max。否则max就...原创 2018-07-16 11:01:00 · 239 阅读 · 0 评论