
C语言代码练习
bfsm
这个作者很懒,什么都没留下…
展开
-
用宏交换奇偶位
第一次尝试#include<stdio.h>//在32位系统下://要拿出奇数位则需要&01010101010101010101010101010101 也就是十六进制的0x55555555//要拿出偶数位则需要&10101010101010101010101010101010 也就是十六进制的0xaaaaaaaa//最终将得到的结果相加也就是 |(或) 起来#define change(num) (((num) & 0x55555555) <<原创 2020-12-29 09:25:48 · 101 阅读 · 0 评论 -
找单身数字
第一次尝试#include<stdio.h>#include<stdlib.h>//方法1void FindSingleDog(int* arr,int size) { for (int i = 0; i < size; i++) { int flag = 0; for (int j = i + 1; j < size; j++) { if (arr[i] == arr[j]) {原创 2020-12-29 09:25:16 · 231 阅读 · 0 评论 -
字符串分段逆序
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>//自己写的类似于strtok函数,遇到空格符,就将空格赋成'\0',然后返回'\0'下一个的地址值//如果遇到'\0'则直接返回一个NULLchar* mystrtok(char* str) { while (1) { if (*str == ' ') {原创 2020-12-29 09:23:58 · 265 阅读 · 0 评论 -
指针进阶的笔试题
例题解析#include <stdio.h>#include <stdlib.h>#include <string.h>//结构体例题// sizeof(Test) => 20struct Test{ int Num; char* pcName; short sDate; char cha[2]; short sBa[4];}*p = (struct Test*)0x100000;int main() {原创 2020-12-26 09:49:31 · 151 阅读 · 0 评论 -
qsort使用练习
第一次尝试#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAX 10#define MAX_C 4//void cmp_int(const void* _a,const void* _b) {// int* a = (int*)_a;// int* b = (int*)_b;// return *a - *b;//默认升序,若想降序,则返回*b-*a//}原创 2020-12-26 09:48:24 · 119 阅读 · 0 评论 -
字符串旋转对比结果
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>int change(char* str,char* str1,char* str2,int* arr,char ch,int size) {int k = 0;while (arr[k] != -1) {int i = 0;//将原字符串中和ch相等的前面的字符旋转到最后f原创 2020-12-26 09:47:36 · 112 阅读 · 0 评论 -
字符串左旋
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>void LeftString(char* str,int size,int num) { int i = 0; for (i = 0; i < num; i++) { str[size+i] = str[i]; str[size + 1 + i] = '\0'; }原创 2020-12-26 09:47:26 · 87 阅读 · 0 评论 -
猜名次
第一次尝试#include<stdio.h>#include<stdlib.h>//A选手说:B第二,我第三; 我第三//B选手说:我第二,E第四; E第四//C选手说:我第一,D第二; D第二//D选手说:C最后,我第三; C最后//E选手说:我第四,A第一; 我第四//比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。void GuessPlaces原创 2020-12-26 09:46:48 · 228 阅读 · 0 评论 -
猜凶手
第一次尝试#include<stdio.h>#include<stdlib.h>//A说:不是我//B说:是C//C说:是D//D说:C在胡说void isMurderer() { //每个人都默认为好人 int arr[4] = { 0 }; int i = 0; for (i = 0; i < 4; i++) { //假设第i+1个为凶手 arr[i] = 1; if ((ar原创 2020-12-26 09:46:39 · 107 阅读 · 0 评论 -
杨辉三角
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#define N 10//正常排列的杨辉三角int arr[N][2 * N - 1] = { 0 };void YangHuiTriangle(int n) { int flag = 1; int mid = n; arr[0][n] = 1; for (int i = 1; i < n原创 2020-12-26 09:46:21 · 157 阅读 · 0 评论 -
喝汽水问题
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>//本题有很多变形,例如三个瓶子换一瓶汽水,四个瓶子换一瓶汽水等等#define Exchange 2int DrinkingProblem(int bottle) { int ret = bottle; while (bottle >= Exchange) { ret += bottle /原创 2020-12-25 15:34:34 · 98 阅读 · 0 评论 -
计算求和
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#define MAX 5void init(int* p,int num) { for (int i = 0; i < MAX; i++,p++) { int ret = 1; for (int j = 0; j < i; j++) { ret = ret原创 2020-12-25 15:34:20 · 100 阅读 · 0 评论 -
字符串逆序,非递归
第一次尝试#include<stdio.h>#include<stdlib.h>void reverse(char* str,int size) { int i = 0; char ch = 0; while ((str+i)<(str+size-i)) { ch = *(str+i); *(str+i) = *(str+size-i); *(str + size - i) = ch;原创 2020-12-23 08:42:24 · 121 阅读 · 0 评论 -
使用指针打印数组内容
第一次尝试#include<stdio.h>#include<stdlib.h>void print(int* p) { for (int i = 0; i < 10; i++,p++) { printf("%d ", *p); } printf("\n");}int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; print(arr); return原创 2020-12-23 08:42:17 · 119 阅读 · 0 评论 -
交换两个变量,不创建临时变量
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>void NoTempChange(int* a, int* b) { *a = *a ^ *b; *b = *a ^ *b; *a = *a ^ *b;}void NoTempChange1(int* a, int* b) { *a = *a + *b; *b = *a - *b;原创 2020-12-23 08:41:59 · 99 阅读 · 0 评论 -
统计二进制中1的个数
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int HowManyOne(int num) { int ret = 0; for (int i = 31; i >= 0; i--) { if (((num >> i) & 1) == 1) { ret++; } }原创 2020-12-23 08:41:46 · 113 阅读 · 0 评论 -
打印整数二进制的奇数位和偶数位
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>//void PrintOE(int num,int arro[16],int arre[16]) {// int num1 = 1;// int num2 = 2;// for (int i = 0; i < 16; i++,num1=num1<<2) {// if ((nu原创 2020-12-23 08:41:29 · 198 阅读 · 0 评论 -
求两个数二进制中不同位的个数
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int DifferentDigits(int m, int n) { int ret = 0; int flag = 0; int num = 1; //int flagm = 0; //int flagn = 0; flag = m ^ n; for (int i = 0;原创 2020-12-23 08:40:57 · 208 阅读 · 0 评论 -
数组交换
第一次尝试#include<stdio.h>#include<stdlib.h>#define MAX_SIZE 4void exchangeArray(int arr1[], int arr2[]) { for (int i = 0; i < MAX_SIZE; i++) { int t = 0; t = arr1[i]; arr1[i] = arr2[i]; arr2[i] = t;原创 2020-12-22 08:41:04 · 199 阅读 · 0 评论 -
数组操作
第一次尝试#include<stdio.h>#include<stdlib.h>#define MAX_SIZE 10void init(int arr[]) { for (int i = 0; i < MAX_SIZE; i++) { arr[i] = 0; }}void print(int arr[]) { for (int i = 0; i < MAX_SIZE; i++) { printf("原创 2020-12-22 08:40:40 · 108 阅读 · 0 评论 -
冒泡排序
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#define MAX_SIZE 10void BubbleSort(int arr[]) { for (int i = 0; i < MAX_SIZE;i++) { for (int j = 0; j < MAX_SIZE - i - 1; j++) { if (arr[原创 2020-12-22 08:40:33 · 54 阅读 · 0 评论 -
青蛙上台阶
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>//f(1) = 1;//f(2) = f(1) + 1 = f(1) + f(1) = 2 * f(1) = 2;//f(3) = f(2) + f(1) + 1 = f(2) + f(1) + f(1) = f(2) + 2 * f(1) // = f(2) + f(2) = 2 * f(2) = 2 * 2;//原创 2020-12-22 08:39:38 · 135 阅读 · 0 评论 -
计算斐波那契数,递归和非递归
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int fib1(int n) { if (n == 1) { return 1; } else if (n == 2) { return 1; } else { return fib1(n - 1) + fib1(n - 2); }}原创 2020-12-21 08:41:49 · 116 阅读 · 1 评论 -
递归实现n的k次方
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int NumPower(int n,int k) { if (k==1) { return n; } else { return n * NumPower(n,--k); } return 0;}int main() { printf("输入一个数原创 2020-12-21 08:41:35 · 313 阅读 · 1 评论 -
计算一个数的每位之和
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int DigitSum(int n) { if (n < 10) { return n; } else { int num = n % 10; n = n / 10; return num+DigitSum(n); }}int原创 2020-12-21 08:41:27 · 543 阅读 · 1 评论 -
字符串逆序,递归
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int reverse_string(char* arr) { if (arr[0] == '\0') { return 0; } else { reverse_string(arr + 1); printf("%c", arr[0]); retu原创 2020-12-21 08:41:09 · 288 阅读 · 1 评论 -
打印全排列
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>//在被交换的元素前面序列中,如果出现了这个元素,那么就不必交换了int judge(int arr[],int i,int k) { for (; k < i; k++) { if (arr[k] == arr[i]) { return 0; } }原创 2020-12-21 08:40:30 · 322 阅读 · 1 评论 -
斐波那契数列
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int FibNum(int num) { if (num <= 1) { return num; } else { return FibNum(num - 1) + FibNum(num - 2); }}int main() { int num =原创 2020-12-21 08:40:21 · 73 阅读 · 1 评论 -
汉诺塔问题
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>void Hanoi(int n,char a,char b,char c) { if (n == 1) { printf("%c-->%c\n",a,c); } else { Hanoi(n - 1,a,c,b); printf("%c-->%c\n原创 2020-12-21 08:40:03 · 162 阅读 · 2 评论 -
求阶乘,递归和非递归两种方法
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>//递归方法求int setFactor1(int num) { if (num == 1) { return 1; } else { return num * setFactor1(num - 1); }}//非递归方法求int setfactor2(int n原创 2020-12-20 00:07:22 · 721 阅读 · 1 评论 -
递归打印一个数的每一位
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>void NumBit(int num) { if (num <= 9) { printf("%d ", num); } else { int remainder = 0; remainder = num % 10; num = num /原创 2020-12-20 00:07:07 · 140 阅读 · 1 评论 -
打印乘法口诀表,行数和列数自己指定
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>void setMulTab(int n) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { printf("%d * %d = %d ", i, j, i * j); }原创 2020-12-20 00:06:52 · 196 阅读 · 1 评论 -
实现一个函数来交换两个整数的内容
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>void ChangeNum(int* x,int* y) { int temp = 0; temp = *x; *x = *y; *y = temp;}int main() { int* a = 0; int* b = 0; printf("输入两个数啊a,b:\n");原创 2020-12-20 00:06:40 · 1238 阅读 · 3 评论 -
判断闰年
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int isLeapYear(int year) { if ((year % 100 == 0 && year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) { printf("是闰年!\n"); } els原创 2020-12-19 15:33:20 · 68 阅读 · 1 评论 -
判断是否是素数
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int isPrimeNum(int num) { if (num == 0 || num == 1) { return 0; } for (int i = 2; i < num; i++) { if (num % i == 0) { return原创 2020-12-19 15:26:31 · 134 阅读 · 1 评论 -
打印乘法口诀表
第一次尝试#include<stdio.h>int main() { int arr[10] = { 0,1,2,3,4,5,6,7,8,9 }; for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++) { printf("%d * %d = %d\t", arr[i], arr[j], arr[i] * arr[j]); if (j原创 2020-12-19 14:51:31 · 62 阅读 · 1 评论 -
求十个数中最大值
第一次尝试#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main() { int arr[10] = { 0 }; printf("请输入十个数\n"); for (int i = 0; i < 10; i++) { scanf("%d", &arr[i]); } /*for (int i = 0; i < 10; i++) { pri原创 2020-12-19 14:46:19 · 303 阅读 · 1 评论 -
二分查找
第一次尝试#include<stdio.h> int main() { int arr[] = { 1,2,3,4,5,6,7 };//查找6 int left = 0; int right = sizeof(arr) / sizeof(arr[0]) - 1; //printf("%d\n", right); int toFind = 6; while(left<=right) { int mid = (left原创 2020-12-19 11:16:43 · 278 阅读 · 1 评论 -
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
第一次尝试#include<stdio.h> int main() { int flat = 1; double result = 0; for (int i = 1; i <= 100; i++) { result = result + flat * (1.0 / i); //设置一个标志位,每进行一次循环,就改变一次符号 flat = -flat; } printf("求和结果为:%f\原创 2020-12-19 09:48:01 · 186 阅读 · 1 评论 -
编写程序数一下 1到 100 的所有整数中出现多少个数字9
第一次尝试#include<stdio.h>int main() { int num = 0; for (int i = 1; i <= 100; i++) { if (i < 10&&i%9==0) { num++; } else if (i>=10&&i%10==9) { num++; } el原创 2020-12-18 23:27:25 · 246 阅读 · 1 评论