C语言小题狂练+小游戏
以C语言为例,解决常见题型解题思路,编写有趣的小游戏!
Zincy星辰
细心耐心的Java、Python、数据库MySQL、数据结构及算法学习分享
展开
-
【C语言小题】判断当前机器的字节序(大小端问题)
大小端概念大端字节序存储:当一个数据的低字节数据存放在高地址处,高字节序存放在低地址处,这种存储方式就是大端字节序存储。小端字节序存储:当一个数据的低字节数据存放在低地址处,高字节序存放在高地址处,这种存储方式就是小端字节序存储。基本解法#include <stdio.h>int check_sys(){ int a = 1; char* p = (char*)&a; //原来的&a是int*类型,需要强制转换为char* if (1 == *p)原创 2022-02-26 17:44:08 · 350 阅读 · 0 评论 -
【C语言小题】模拟实现库函数strlen
#include <string.h>strlen - stringlength 求字符串长度函数1.优化版本!(用const修饰传入的指针)assert用于检测传入指针是否为空(警告)#include <stdio.h>#include <assert.h>my_strlen(const char* str) //用const修饰char*指针,表明不能修改所指内容中的值{ assert(str != NULL); const..原创 2022-02-26 14:33:59 · 238 阅读 · 0 评论 -
【C语言小题】打印菱形
用C语言在屏幕上输出以下图案:解题思路仔细观察图形,可以发现,此图形中是由空格和*按照不同个数的输出组成的。上三角:先输出空格,后输出*,每行中 空格:从上往下,一行减少一个 *:2*i+1的方式递增下三角:先输出空格,后输出*,每行中 空格:从上往下,每行多一个空格 *:从上往下,按照2*(line-1-i)-1的方式减少,其中:line表示总共有多少行按照上述方式,将上三角和下三角中的空格和*分别输出即可。参考答案#include <stdio.h&g...原创 2022-02-23 22:58:17 · 164 阅读 · 0 评论 -
【C语言小题】打印水仙花数
求出0~100000之间的所有“水仙花数”并输出。“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。解题思路此题的关键在于只要知道判断一个数据是否为水仙花数的方式,问题就迎刃而解。假定给定一个数据data,具体检测方式如下:1. 求取data是几位数2. 获取data中每个位置上的数据,并对其进行立方求和3. 对data中每个位上的数据立方求和完成后,在检测其结果是否与data相等即可,相等:则为水仙花数原创 2022-02-23 22:16:45 · 310 阅读 · 0 评论 -
【C语言小题】计算求和
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222解题思路通过观察可以发现,该表达式的第i项中有i个a数字,因此:假设第i项为temp,则第i+1项为temp*10+aint main(){ int a = 0; int n = 0; int i = 0; int sum = 0; int tmp = 0; scanf("%d%d", &a, &n); for(i=0; i<原创 2022-02-23 21:33:12 · 276 阅读 · 0 评论 -
【C语言小题】字符串逆序
字符逆序__牛客网写一个函数,可以逆序一个字符串的内容,即:将一个字符串str的内容颠倒过来,并输出。输入描述:输入一个字符串,可以有空格输出描述:输出逆序的字符串示例输入I am a student输出tneduts a ma I解题#include <stdio.h>#include <string.h>void Reverse(char* str){ char* left = str; char*原创 2022-02-23 20:46:21 · 644 阅读 · 0 评论 -
【C语言小题】使用指针打印数组内容
写一个函数打印arr数组的内容,不使用数组下标,使用指针。arr是一个整形一维数组。include <stdio.h>int main(){ int arr[10] = { 0 }; int* p = arr; int i = 0; int sz = sizeof(arr)/sizeof(arr[0]); for (i = 0; i < sz; i++) { printf("%d ", *p); p++; } return 0;}...原创 2022-02-23 20:11:22 · 373 阅读 · 0 评论 -
【C语言小题】模拟实现库函数strcpy
#include <string.h>strcpy - string copy字符串拷贝函数1. 功能实现(不完整)#include <stdio.h>#include <string.h>void my_strcpy(char* dest, char* src){ while (*src != '\0') { *dest = *src; dest++; src++; } *dest = *src; //处理'\0'.原创 2022-02-07 19:27:35 · 617 阅读 · 0 评论 -
【C语言小题】计算n的阶乘并累加
思路:一个变量存储累加结果,一个变量存储阶乘结果#include <stdio.h>int main(){ int n = 0; scanf("%d", &n); int i = 0; int ret = 1; int j = 0; int sum = 0; for (j = 1; j <= n; j++) { ret = 1; for (i = 1; i <= j; i++) { ret *= i; } sum +=原创 2022-02-07 13:37:20 · 1072 阅读 · 0 评论 -
【C语言小题】判断是元音还是辅音
描述KiKi开始学习英文字母,BoBo老师告诉他,有五个字母A(a), E(e), I(i), O(o),U(u)称为元音,其他所有字母称为辅音,请帮他编写程序判断输入的字母是元音(Vowel)还是辅音(Consonant)。输入描述:多组输入,每行输入一个字母。输出描述:针对每组输入,输出为一行,如果输入字母是元音(包括大小写),输出“Vowel”,如果输入字母是非元音,输出“Consonant”。示例输入:A b输出:Vowel ...原创 2022-02-05 16:41:57 · 833 阅读 · 0 评论 -
【C语言小题】判断整数奇偶性
KiKi想知道一个整数的奇偶性,请帮他判断。从键盘任意输入一个整数(范围-231~231-1),编程判断它的奇偶性。输入描述:多组输入,每行输入包括一个整数。输出描述:针对每行输入,输出该数是奇数(Odd)还是偶数(Even)原创 2022-02-05 16:33:36 · 2320 阅读 · 0 评论 -
【C语言小题】不创建临时变量交换两个变量的值
不创建临时变量交换两个变量的内容(使用按位异或操作符)^ 按位异或(相同为0,相异为1)#include <stdio.h>int main(){ int a = 3; int b = 5; printf("交换前:a=%d b=%d\n", a, b); a = a ^ b; b = a ^ b; a = a ^ b; printf("交换后:a=%d b=%d", a, b); return 0;}...原创 2022-01-27 17:15:45 · 152 阅读 · 0 评论 -
【C语言小题】打印整数二进制的奇数位和偶数位
打印整数二进制的奇数位和偶数位获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列。解题思路:通过移位运算符,依次打印数字的二进制末尾。#include <stdio.h>void print(int n){ //打印奇数位 int i = 0; printf("奇数位:"); for (i = 30; i >= 0 ; i -= 2) { printf("%d ", (n >> i) & 1); } printf("原创 2022-01-27 17:06:50 · 306 阅读 · 0 评论 -
【C语言小题】求两个数二进制中不同位的个数
求两个数二进制中不同位的个数。编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?输入例子:1999 2299输出例子:7方法一思路:依次比较两个数的每一位是否相异#include <stdio.h>int count_diff_bit(int a, int b){ int i = 0; int c = 0;//计数器 for (i = 0; i < 32; i++) { if ((a & 1) != .原创 2022-01-27 16:44:37 · 550 阅读 · 2 评论 -
【C语言小题】统计二进制中1的个数
题目链接:二进制中1的个数统计二进制中1的个数写一个函数返回参数二进制中 1 的个数。比如: 15 0000 1111 4 个 1原创 2022-01-27 16:08:27 · 433 阅读 · 0 评论 -
【C语言小游戏】扫雷
代码实现共由一个头文件(.h),两个(.c)文件组成头文件game.hgame.h头文件包含库函数的引用,字符、函数的声明。#pragma once//头文件的包含#include <stdio.h>#include <time.h>#include <stdlib.h>//符号的声明#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2#define EASY原创 2022-01-27 11:47:53 · 2117 阅读 · 0 评论 -
【C语言小题】冒泡排序
实现一个对整形数组的冒泡排序(遍历数组,对数组中相邻的两个元素进行比较,如果需要升序,前一个数据大于后一个数据时,交换两个位置上的数据,直到所有的数据比较完,此时,最大的数据已经放在数组的末尾。除最大数据已经排好序外,其余数据还是无需,对剩余数据采用与上述类似的方式进行处理即可。)冒泡排序的思想一趟冒泡排序能搞定一个数字的位置,让当前待排序数组中一个元素来到最终应该出现的位置上。如果整型数组有有n个数字,则需要进行n-1趟冒泡排序。代码//实现一个对整形数组的冒泡排序#incl原创 2022-01-27 11:23:54 · 714 阅读 · 0 评论 -
【C语言小题】交换数组
将数组A中的内容和数组B中的内容进行交换。(数组一样大)解题思路:创建临时变量依次交换#include <stdio.h>int main(){ int arr1[] = { 1,3,5,7,9 }; int arr2[] = { 2,4,6,8,10 }; int sz = sizeof(arr1) / sizeof(arr1[0]); //交换 int tmp = 0; int i = 0; for (i = 0; i < sz; i++) { t原创 2022-01-27 10:42:38 · 270 阅读 · 0 评论 -
【C语言小题】创建一个整形数组,完成对数组的操作
创建一个整形数组,完成对数组的操作实现函数init()初始化数组为全0 实现print()打印数组的每个元素 实现reverse()函数完成数组元素的逆置。要求:自己设计以上函数的参数,返回值。...原创 2022-01-27 10:27:23 · 262 阅读 · 0 评论 -
【C语言小题】计算斐波那契数
使用递归和非递归分别实现求第n个斐波那契数例如:输入:5输出:5输入:10, 输出:55输入:2, 输出:11.递归方式#include <stdio.h>int fib(int n){ if (n <= 2) return 1; else return fib(n - 1) + fib(n - 2);}int main(){ int n = 0; scanf("%d", &n); int ret = fib(n);..原创 2022-01-25 19:31:16 · 367 阅读 · 0 评论 -
【C语言小题】递归实现n的k次方
编写一个函数实现n的k次方,使用递归实现。解题思路分三种情况返回:k = 0 时,n = 1k > 0 时,n^k = n * n^(k-1)k < 0 时,n^k = 1.0 / n^(-k)代码#include <stdio.h>double Pow(int n, int k){ if (k == 0) return 1; else if (k > 0) return n * Pow(n, --k); else re原创 2022-01-25 19:07:59 · 1886 阅读 · 2 评论 -
【C语言小题】用递归实现计算一个数的每位之和
用递归实现计算一个数的每位之和写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19输入:1729,输出:19#include <stdio.h>int DigitSum(size_t n){ if (n <= 9) return n; else return DigitSum(n / 10) + n % 10; //int sum = 0; //w原创 2022-01-25 18:29:28 · 692 阅读 · 0 评论 -
【C语言小题】递归实现将参数字符串中的字符反向排列
编写一个函数 reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列,不是逆序打印。要求:不能使用C函数库中的字符串操作函数。比如:char arr[] = "abcdef";逆序后数组的内容变成:fedcba1.递归实现1.1解题思路对于字符串“abcdefg”,递归实现的大概原理: 1. 交换a和g, 2. 以递归的方式逆置源字符串的剩余部分,剩余部分可以看成一个有效的字符串,再以类似的方式逆置如:r..原创 2022-01-25 18:01:15 · 162 阅读 · 0 评论 -
【C语言小题】递归和非递归实现strlen函数的模拟
递归和非递归分别实现strlen函数的模拟1.递归方式#include <stdio.h>int my_Strlen(char* str){ if (*str == '\0') { return 0; } else { return 1 + my_Strlen(1 + str); }}int main(){ char *p = "abcdef"; printf("字符长度为%d", my_Strlen(p)); return 0;}2.非递原创 2022-01-25 16:58:21 · 169 阅读 · 1 评论 -
【C语言小题】递归和非递归实现求n的阶乘
用递归和非递归分别实现求n的阶乘(不考虑溢出的问题)1.递归方式# include <stdio.h>long long Fac(int N){ if (N <= 1) { return 1; } return Fac(N - 1) * N;}int main(){ int i = 3; printf("%d", Fac(i)); return 0;}2.循环方式(非递归)# include <stdio.h>long原创 2022-01-25 16:33:08 · 716 阅读 · 0 评论 -
【C语言小题】用递归方式打印一个整数的每一位
用递归方式实现打印一个整数的每一位解题思路当 n <= 9时,打印一次n代码#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);//1234 Print(num); retur原创 2022-01-25 16:10:51 · 234 阅读 · 0 评论 -
【C语言小游戏】三子棋
先来看看怎么玩吧~(全部代码在后面)游戏简介程序运行后屏幕打印出游戏菜单,用户输入1开始游戏,输入0退出程序。输入1后,界面出现空白三子棋网格 ,用户可以通过输入行列的形式进行下棋。如:输入1 1,则表示在第一行第一列下棋,2 3表示在第二行第三列下棋。*表示玩家下棋的棋子,#表示电脑下棋的位置。每当玩家下一次棋后,电脑则自动进行下棋并输出至屏幕。直至任意一行或一列或对角线为相同棋子后,某一方胜利,否则为平局。按0退出程序。代码实现代码分为三部分.原创 2022-01-21 10:04:59 · 61 阅读 · 0 评论 -
【C语言小题】写函数打印乘法口诀表,口诀表的行数和列数自己指定(自定义口诀表的行数列数)
实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定如:输入9,输出9*9口诀表,输出12,输出12*12的乘法口诀表。解题思路1. 设计函数原型,不需要返回值,参数N表示乘法口诀表总共有多少行2. 设定两个循环,外层循环控制总共有多少行 内层循环控制每行有多少个表达式以及表达式中的内容//乘法口诀表#include <stdio.h>void PrintMulTable(int N){ for (int i = 1; i <= N...原创 2022-01-18 19:04:47 · 506 阅读 · 0 评论 -
【C语言小题】用函数来交换两个整数的内容
实现一个函数来交换两个整数的内容。解题思路需要清楚传值和传指针的区别。传值:形参是实参的一份拷贝,函数运行起来后,形参是形参,实参是实参,形参和实参没有任何关联性,改变形参时,不会对实参造成任何影响。传地址:形参是实参地址的一份拷贝,形参指向的实体是实参,对形参解引用后,拿到的内容就是实参,因此对形参解引用之后的内容进行修改,改变的就是实参。实例//交换两个整数#include <stdio.h>void Swap(int* pa, int* pb){ int i =原创 2022-01-18 18:57:36 · 1656 阅读 · 0 评论 -
【C语言小题】写一个计数函数,每调用一次这个函数,就会将num的值增加1
写一个计数函数,每调用一次这个函数,就会将num的值增加1关键使用指针,传入地址,*解引用修改参数的值方法一:(土办法,不推荐)#include <stdio.h>int add(int n){ n++; return n; //也可以直接 return ++n;}int main(){ int num = 0; //进行了三次,以便测试 //将计算得出的结果重新赋给num num = add(num);原创 2022-01-18 18:43:49 · 1297 阅读 · 0 评论 -
【C语言小题】用函数实现整型有序数组的二分查找
用函数实现整型有序数组的二分查找以数字7为例,数组为0~9关键使用left,right,mid整型进行查找注意:sz在传参之前进行计算,因为数组传参时传入的是arr[0]的地址//写一个函数,实现一个整型有序数组的二分查找#include <stdio.h>//找到了就返回下标,找不到返回-1int binary_search(int arr[], int k, int sz){ int left = 0; int right = sz - 1; whil原创 2022-01-18 18:24:00 · 276 阅读 · 0 评论 -
【C语言小题】写函数判断是否为闰年
实现函数判断year是不是闰年。关键year能被4整除且不能被100整除,或者year能被400整除(四年闰但百年不闰,每400年再闰一次)year % 4 == 0 且 year % 100 != 0或者 year % 400 == 0C语言:(((n % 4 == 0)&&(n % 100 != 0)) || (n % 400 == 0))//写一个函数判断是不是闰年#include <stdio.h>int is_leap_year(原创 2022-01-18 17:23:43 · 2132 阅读 · 0 评论 -
【C语言小题】写函数判断是否为素数
实现一个函数,判断一个数是不是素数。利用上面实现的函数打印100到200之间的素数。关键判断该数是否能在2~sqrt(n) 之间除尽即可。2~sqrt(n) ——(i = 2; i <= sqrt(n); i++)除尽 ——(0 == n % i)另外还可以在判断数字时手动排除2的倍数,如使用i += 2的方式跳过判断2的倍数(除2和3之外,不会有两个连续相邻的数同时为素数)#include <stdio.h>#include <math...原创 2022-01-18 17:02:07 · 1025 阅读 · 0 评论 -
【C语言小游戏】猜数字游戏
电脑随机生成一个1~100之间的数字玩家猜数字玩家猜小了,电脑会告诉:猜小了 玩家猜大了,电脑会告诉:猜大了 玩家猜对了,电脑会告诉:恭喜你,猜对了生成随机数的方:使用时间戳设置一个随机数的生成器原创 2022-01-18 16:10:02 · 67 阅读 · 0 评论 -
【C语言小题】二分查找
二分查找:在一个有序的序列中,找某个数据是否在该集合中,如果在打印该数据在集合中的下标,否则打印找不到解题思路1. 找到数组的中间位置2. 检测中间位置的数据是否与要查找的数据key相等 a: 相等,找到,打印下标,跳出循环 b: key < arr[mid], 则key可能在arr[mid]的左半侧,继续到左半侧进行二分查找 c: key > arr[mid], 则key可能在arr[mid]的右半侧,继续到右半侧进行二分查找 如果找到返回...原创 2022-01-16 14:01:37 · 70 阅读 · 0 评论 -
【C语言小题】乘法口诀表
在屏幕上输出9*9乘法口诀表解题思路由两个循环进行控制外层循环控制打印多少行内部循环控制每行打印多少个表达式以及表达式内容原创 2022-01-16 13:56:31 · 99 阅读 · 0 评论 -
【C语言小题】求最大值
求10 个整数中最大值解题思路1. 采用循环的方式输入一个数组2. 使用max标记数组中的最大值,采用循环的方式依次获取数组中的每个元素,与max进行比较,如果arr[i]大于 max,更新max标记的最大值,数组遍历结束后,max中保存的即为数组中的最大值。原创 2022-01-16 13:52:57 · 230 阅读 · 0 评论 -
【C语言小题】分数求和
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果解题思路1. 从上述表达式可以分析出 a. 该表达式主要由100项,基数项为正,偶数项为负2. 设置一个循环从1~100,给出表达式中的每一项:1.0/i, 注意此处不能使用1,否则结果全部为0 然后使用flag标记控制奇偶项,奇数项为正,偶数项为负 然后将所有的项相加即可原创 2022-01-16 13:10:51 · 2212 阅读 · 2 评论 -
【C语言小题】数9的个数
编写程序数一下 1到 100 的所有整数中出现多少个数字9解题思路1. 给一个循环从1遍历到100,拿到每个数据后进行一下操作2. a. 通过%的方式取当前数据的个位,检测个位数据是否为9 如果是,给计数器加1 b. 通过/的方式取当前数据的十位,检测十位数据是否是9, 如果是,给计数器加1 循环一直继续,直到所有的数据检测完,所有9的个数已经统计在count计数中。原创 2022-01-16 13:00:54 · 692 阅读 · 2 评论 -
【C语言小题】判断一个数是否是素数
写一个代码:打印100~200之间的素数素数:即质数,除了1和自己之外,再没有其他的约数,则该数据为素数原创 2022-01-17 17:09:47 · 469 阅读 · 0 评论