
C题
Dzu
这个作者很懒,什么都没留下…
展开
-
【解题笔记】编程初学者入门训练
1.实践出真知描述于老师经常告诉我们“学习编程最好的办法就是上机实践,因为你要对计算机下指令,想让计算机帮你干活,就得多和计算机‘交流’,实践才能出真知。”输入描述:本题没有输入输出描述:Practice makes perfect!2.我是大V描述每个人都想成为大V (VIP:Very Important Person),但要一点一点积累才行,先从小v做起。要求输出由小写字母v组成的大V。输入描述:无输出描述:v vv vv...原创 2022-01-10 17:28:55 · 1561 阅读 · 0 评论 -
【解题笔记】计数法
1.唯一元素的和2.字符串中的第一个唯一字符3.检查是否所有字符出现次数相同4.找到所有数组中消失的数字5.好数对的数目6.大餐计数1.唯一元素的和给你一个整数数组nums。数组中唯一元素是那些只出现恰好一次的元素。请你返回nums中唯一元素的和。2.字符串中的第一个唯一字符给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。3.检查是否所有字符出现次数相同给你一个字符串s,如果 s是一...原创 2021-12-21 23:10:47 · 145 阅读 · 0 评论 -
【解题笔记】数组
1.杨辉三角形给定一个非负整数numRows,生成「杨辉三角」的前numRows行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。/** * Return an array of arrays of size *returnSize. * The sizes of the arrays are returned as *returnColumnSizes array. * Note: Both returned array and *columnSizes array m...原创 2021-12-19 19:15:58 · 138 阅读 · 0 评论 -
【解题笔记】简单递归
1.阶乘后的零给定一个整数n,返回n!结果中尾随零的数量。提示n! = n * (n - 1) * (n - 2) * ... * 3 *2.将数字变成0的操作次数给你一个非负整数num,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。3.完全二叉树的节点个数给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都...原创 2021-12-18 19:44:17 · 732 阅读 · 0 评论 -
【解题笔记】二级指针
1.翻转图像给定一个二进制矩阵A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转[1, 1, 0]的结果是[0, 1, 1]。反转图片的意思是图片中的0全部被1替换,1全部被0替换。例如,反转[0, 1, 1]的结果是[1, 0, 0]。/* * Return an array of arrays of size *returnSize. * The sizes of the arrays are...原创 2021-12-17 18:30:55 · 318 阅读 · 0 评论 -
【解题笔记】二维数组
1.统计有序矩阵中的负数给你一个m* n的矩阵grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。 。请你统计并返回grid中负数的数目。int countNegatives(int** grid, int gridSize, int* gridColSize){ int r = gridSize; int c = gridColSize[0]; int cnt = 0; for(int i = 0; i < r; i++){ ...原创 2021-12-16 23:20:32 · 808 阅读 · 0 评论 -
【解题笔记】贪心
所谓贪心,总是做出在当前看来是最好的选择。也就是说,不从整体最优上进行考虑,算法得到的是某种意义的局部最优解1.两个数对之间的最大乘积差两个数对(a, b) 和 (c, d) 之间的 乘积差 定义为 (a * b) - (c * d) 。例如,(5, 6) 和 (2, 7) 之间的乘积差是 (5 * 6) - (2 * 7) = 16 。给你一个整数数组 nums ,选出四个 不同的 下标 w、x、y 和 z ,使数对 (nums[w], nums[x]) 和 (nums[...原创 2021-12-15 18:42:00 · 1585 阅读 · 0 评论 -
【解题笔记】排序
1.排序数组给你一个整数数组nums,请你将该数组升序排列。/** * Note: The returned array must be malloced, assume caller calls free(). */ int cmp(const void *a, const void *b){ return *(int *)a - *(int *)b; }//若a>b,则返回值大于0,a在b的右边 大的在右边//若a<b,则返回值小于0,a在b的左边 .原创 2021-12-14 18:19:39 · 905 阅读 · 0 评论 -
【解题笔记】指针
1.重新排列数组给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,...,xn,y1,y2,...,yn] 的格式排列。请你将数组按 [x1,y1,x2,y2,...,xn,yn] 格式重新排列,返回重排后的数组。链接:https://leetcode-cn.com/problems/shuffle-the-array/** * Note: The returned array must be malloced, assume caller calls free().原创 2021-12-13 15:54:06 · 1430 阅读 · 0 评论 -
哈希表给数排大小
#include <stdio.h>#include <string.h>#define maxn 1001int main(){ int h[maxn]; int n, x, i, j; while (~scanf("%d", &n))//需要输入的元素个数n { memset(h, 0, sizeof(h));//memset函数,引用源文件<string.h> ,将第一个参数中的sizeof(h)个数全部...原创 2021-12-02 23:08:10 · 879 阅读 · 0 评论 -
模拟实现拷贝字符串
1.#include <stdio.h>#include <assert.h>void my_strcpy(char* dest, char* src){ assert(dest, src); while (*src != '\0') { *dest = *src; dest++; src++; } *dest = *src;}int main(){ char arr1[20] = { 0 }; char arr2[] = "hello w原创 2021-11-23 23:27:00 · 116 阅读 · 0 评论 -
交换两个变量(不创建临时变量)
a ^ a = 00 ^ a = aa = a ^ bb = a ^ b=a ^ b ^b = a ^ 0 = a;a = a ^ b = a ^ a ^ b = 0 ^ b = b;#include <stdio.h>int main(){ int a = 0; int b = 0; scanf("%d %d", &a, &b); printf("a = %d b = %d\n", a, b); a = a ^ b; b = a ^ b..原创 2021-11-17 09:00:00 · 71 阅读 · 0 评论 -
统计二进制中1的个数
若果一个数%2 = 1 ;1的个数+1;#include <stdio.h>int main(){ int a = 0; int count = 0; scanf("%d", &a); int i = 0; for (i = 1; i <= 32; i++) { if (a % 2 == 1) { count++; } a >>= 1; } printf("%d", count); return 0;}..原创 2021-11-16 17:30:49 · 617 阅读 · 0 评论 -
打印整数二进制的奇数位和偶数位
如果一个数%2 为 1 时,最后一位是1;如果一个数%2为0时,最后一位是0;#include <stdio.h>int main(){ int a = 0; int b = 0; int i = 0; scanf("%d", &a); b = a; for (i = 1; i <= 16; i++) { if (a % 2 == 0) { printf("0"); } else { printf("1"); }原创 2021-11-16 17:25:06 · 925 阅读 · 0 评论 -
求两个数二进制中不同位的个数
将两个数进行按位异或操作 ;若两个数相同;则结果为0;若两个数不同,则结果为1;将进行按位异或后的数模二,若结果为1,则最后一位两个数不同;若结果为0,则最后一位两个数相同;因为在二进制中,若最后一位是1,则这个数是奇数;若最后一位是0.则这个数是偶书;1 *2 ^0 = 1 是奇数,其他都是1* 2 ^ x;x>1时为偶书;所以这个数是奇数;0 * 2 ^0 = 0 是偶书,其他都是1* 2 ^ x;x>1时为偶书;所以这个数是偶数;#include <stdio.原创 2021-11-16 17:09:03 · 321 阅读 · 0 评论 -
扫雷游戏
1.test.c#include "game.h"void menu()//打印菜单{ printf("******************************\n"); printf("**** 1.play ****\n"); printf("**** 0.exit ****\n"); printf("******************************\n");}void game()//游戏{ char m原创 2021-11-14 18:36:55 · 3336 阅读 · 0 评论 -
三子棋游戏
2原创 2021-11-09 18:41:29 · 3162 阅读 · 0 评论 -
将数字进行排大小
有N个元素先相邻两个之间的数比大小,将小的往左或右方,第一轮比玩后,最后一个是最小值或最大值。然后进行N-1轮,将所有的数排大小。#include<stdio.h>void bubble_sort(int arr[], int sz){ int i = 0; for (i = 0; i < sz - 1; i++) { int j = 0; for (j = 0; j < sz - 1 - i; j++) { if (arr[j] >原创 2021-11-07 10:18:29 · 324 阅读 · 0 评论 -
汉诺塔问题
A B C当只有一个盘子的时候,只移动一次当盘子大于一时,先将n-1个盘子通过C移动到B,再将剩下的移动到C,再将n-1个盘子通过A移动到C.#include <stdio.h>void move(char pos1, char pos2){ printf(" %c -> %c ", pos1, pos2);}void hanoi(int n, char pos1, char pos...原创 2021-11-06 12:30:44 · 85 阅读 · 0 评论 -
青蛙跳台阶问题
青蛙跳台阶,一次跳一个或两个当跳到第n阶时,n-1跳一次,n-2跳两次,把n-1 和n-2 的次数加起来#include <stdio.h>int jump(int x){ if (x == 0) return 0; if (x == 1) return 1; if (x == 2) return 2; else return jump(x - 1) + jump(x - 2);}int main(){ int n = 0; scanf("%d",原创 2021-11-06 12:03:12 · 78 阅读 · 0 评论 -
递归实现n的k次方
当k大于一时,= n*n^k-1;当K等于一时,=n;#include <stdio.h>int XXX(int x, int y){ if (y > 1) { return x * XXX(x, y - 1); } else return x;}int main(){ int n = 0; int k = 0; printf("输入一个数:"); scanf("%d %d", &n, &k); int ret = XXX(n原创 2021-11-06 11:45:08 · 103 阅读 · 0 评论 -
计算一个数的每位之和(递归实现)
#include <stdio.h>int DigitSum(int x){ if (x > 9) return (x % 10 + DigitSum(x / 10)); else return x;}int main(){ int n = 0; scanf("%d", &n); int ret = DigitSum(n); printf("%d", ret); return 0;}原创 2021-11-06 11:31:55 · 85 阅读 · 0 评论 -
将参数字符串中的字符反向排列.
例如输入:abcdef输出:fedcba在打印完第一次后,再次调用该函数时,需要下标减一。#include <stdio.h>void reverse_string(char* x,int y){ if (y >= 0) { printf("%c", x[y]); reverse_string(x, --y); }}int main(){ char arr[20] = { 0 }; scanf("%s", arr); int sz =原创 2021-11-06 02:21:11 · 76 阅读 · 0 评论 -
利用函数求斐波那契数列
1 1 2 3 5 8 13 21 34 55 ...1、#include <stdio.h>int fib(int x){ if (x <= 2) return 1; else return fib(x - 1) + fib(x - 2);}int main(){ int n = 0; scanf("%d", &n); int ret = fib(n); printf("%d", ret); return 0;}...原创 2021-11-06 00:59:17 · 4156 阅读 · 0 评论 -
利用函数,求字符串的长度
当输入一串字符时,从第一个开始,如果这个字符不是\0字符串长度就加一原创 2021-11-06 00:00:31 · 377 阅读 · 0 评论 -
接受一个无符号的整型值,按顺序打印它的每一位
使用递归:将一个数一直除以10,直到这个数是个位数,当其为个位数之后,再逐次倒着模10;并将结果打印出来。#include <stdio.h>void Print(unsigned int n){ if (n > 9) { Print(n / 10); } printf("%d ", n % 10);}int main(){ unsigned int num = 0; scanf("%u", &num); Print(num); return 0原创 2021-11-05 23:49:34 · 217 阅读 · 0 评论 -
利用函数实现一个数的自增
写一个函数,当调用这个函数的时候,值就会自增void 型 :将需要的变量的地址穿过去int 型 :返回一个值void:#include <stdio.h>void agg(int* x){ *x += 1;}int main(){ int n = 0; printf("输入一个数字:>"); scanf("%d", &n); printf("%d\n", n); agg(&n); printf("%d\n", n); agg(&a原创 2021-11-03 22:36:01 · 704 阅读 · 0 评论 -
利用函数打印乘法口诀表
打印乘法口诀表:1112 2213 23 3314 24 34 44...........可以看到每一行后一位都是最大值,前一位是递增。可以利用一个for循环for(j=1;j<=m;j++)打印每一行的乘法再在外面套用一个for循环for(m=1;m<=n;m++)打印完每一行后后一位递增打印第二行。并在第一次结束后加上换行。#include <stdio.h>void mul(int y){ ...原创 2021-11-03 22:15:39 · 207 阅读 · 0 评论 -
利用函数在有序数组中找到数
#include <stdio.h>int binary_search(int arr[], int k, int sz){ int left = 0; int right = sz - 1; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] < k) left = mid + 1; else if (arr[mid] > k) right = mid - .原创 2021-11-02 18:14:44 · 99 阅读 · 0 评论 -
利用函数打印1000到2000年之间的闰年
#include <stdio.h> int is_leap_year(int y){ return (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0));} int main(){ int n = 0; int count = 0; for (n = 1000; n <= 2000; n++) { if (is_leap_year(n) != 0) { printf("%d ", n).原创 2021-11-02 17:53:22 · 119 阅读 · 0 评论 -
用函数判断一个年份是不是闰年
#include <stdio.h>int is_leap_year(int y){ return (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0));}int main(){ int n = 0; printf("输入一个年份:>"); scanf("%d", &n); if (is_leap_year(n) != 0) printf("%d是闰年\n", n); else pr.原创 2021-11-02 17:48:59 · 2089 阅读 · 0 评论 -
利用函数打印100到200之间的素数
#include <stdio.h>#include <math.h>int is_prime(int n){ int j = 0; for (j = 2; j <= sqrt(n); j++) { if (n % j == 0) return 0; } return 1;}int main(){ int a = 0; int n = 0; for (a = 100; a <= 200; a++) { if (is_prime.原创 2021-11-02 17:21:48 · 445 阅读 · 0 评论 -
利用函数判断一个数是不是素数
#include <stdio.h>#include <math.h>int is_prime(int n){ int j = 0; for (j = 2; j <= sqrt(n); j++) { if (n % j == 0) { return 0; } } return 1;}int main(){ int a = 0; scanf("%d", &a); if (is_prime(a) == 1) printf(.原创 2021-11-02 17:12:13 · 169 阅读 · 0 评论 -
利用函数求两个数的最大值
#include <stdio.h>int MAX(int x, int y){ return (x > y ? x : y);}int main(){ int a = 0; int b = 0; scanf("%d %d", &a, &b); printf("%d", MAX(a, b)); return 0;}原创 2021-11-02 16:43:29 · 1237 阅读 · 1 评论 -
关机,输入指定命令取消。
#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){ char input[20] = { 0 }; system("shutdown -s -t 6000");again: printf("请注意,你的电脑将在100分钟之后关机;如果输入你好,就取消关机,否则,就关机\n"); scanf("%s", input); if (strcmp(input, "你好") =.原创 2021-11-02 13:16:35 · 178 阅读 · 0 评论 -
利用函数将两个数交换位置
#include <stdio.h>void swap(int* pa, int* pb){ int tem = 0; tem = *pa; *pa = *pb; *pb = tem;}int main(){ int a = 0; int b = 0; printf("输入两个数字:>"); scanf("%d %d", &a, &b); printf("交换前:a = %d b = %d\n", a, b); swap(&a, &a.原创 2021-11-01 13:18:20 · 766 阅读 · 0 评论 -
求最大公约数
1、假设两个数中最小的是最大公约数,如果不是则一直减,直到存在。#include <stdio.h>int main(){ int m = 0; int n = 0; int ret = 0; scanf("%d %d", &m, &n); if (m > n) ret = n; else ret = m; while (1) { if (m % ret == 0 && n % ret == 0) { br..原创 2021-10-30 00:13:00 · 68 阅读 · 0 评论 -
猜数字游戏
电脑随机生成一个数字,输入数字根据电脑提示将数字猜出来#include <stdio.h>#include <stdlib.h>#include <time.h>void menu()//创建一个菜单{ printf("*********************************\n"); printf("******* 1.play *********\n"); printf("******* 0.exit原创 2021-10-29 23:46:20 · 1354 阅读 · 0 评论 -
模拟用户登录场景
假设一个密码,允许用户输三次,三次错误后程序关闭#include <stdio.h>#include <string.h>int main(){ int i = 0; char password[20] = { 0 }; for (i = 0; i < 3; i++) { printf("请输入密码:>"); scanf("%s", password); if (strcmp(password, "123456") == 0) //s原创 2021-10-29 23:15:50 · 174 阅读 · 0 评论 -
多个字符从两端移动,向中间汇聚
输出一段话,原先是*****,然后从两边逐渐出现一个字符,直到全部出现#include <stdio.h>#include <string.h>#include <windows.h>int main(){ char arr1[] = { "hello word!!!!!!" }; char arr2[] = { "****************" }; int left = 0; int right = strlen(arr1) - 1;//st原创 2021-10-29 15:01:43 · 114 阅读 · 0 评论