C语言经典易错列题
这里给大家列出初学C语言时候一些高频题目以及经典列题,希望对大家有所帮助~
小轩在不在哟
新人,求大家多多指教支持~~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【C语言】用宏实现将一个整数的二进制位的奇数位和偶数位交换
题目名称 :写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。解题思路 :随便给出一个32个bit位的二进制数字,观察发现,:我们可以将其奇数位的二进制位都保留,然后偶数位制成0,再右移一位,这样奇数位就全部去到偶数位位置;再将其偶数位保留,奇数位制成0,左移一位,这样全部偶数位就去到奇数位位置;再将得到的两个数字相加,即可实现交换;补充:保留想要的位置方法:按位与上一个1,即可保留,不要的按位与一个0;保留奇数位时按位与的1010换算成十六进制就是A保留..原创 2021-10-17 19:10:25 · 1287 阅读 · 0 评论 -
算法题:“找出单身狗”--找出一个数组中只出现一次的数字
题目:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。编写一个函数找出这两个只出现一次的数字。解题过程以及思路:(思路在代码中以注释形式给出)//一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。//编写一个函数找出这两个只出现一次的数字。 #include <stdio.h>int main(){ int arr[] = { 1, 2, 3, 4, 5, 1, 2, 3, 4, 6 }; int sz = sizeof(arr) / siz..原创 2021-10-17 17:20:52 · 311 阅读 · 0 评论 -
4道经典指针笔试题讲解 ~
????前言 :今天博主来讲解4道经典的指针笔试题,很多朋友没有深刻理解函数传参知识都会在这些题目上出错,下面话不多说,我们开始 ~目录????前言 :题目一(有关传值调用与非法访问)题目二 (返回栈空间地址的问题 )题目三 (区别传值调用的传址调用)题目四 (free释放的时机)????结尾:题目一(有关传值调用与非法访问)请问运行Test 函数会有什么样的结果?答 :程序运行会崩溃 ! 且存在内存泄漏 ;原因:1.str传给p的时候,是值传递,p是str的临时拷贝,所以当malloc开原创 2021-10-06 19:49:28 · 819 阅读 · 8 评论 -
一道关于整型提升/截断的经典练习题
理解这道题目,能很好帮助我们理解整型提升与截断 :下面程序的输出结果是:题目解析 :所以第一个 a+b 以 %d形式打印结果为300第二个 unsigned char c 以 %d形式打印结果为 44#include <stdio.h>int main(){ unsigned char a = 200; unsigned char b = 100; unsigned char c = 0; //unsigned 无符号类型...原创 2021-09-12 18:57:50 · 201 阅读 · 0 评论 -
C语言---写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串
题目:写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。#include <string.h>#include <stdio.h>void left_revolve(char* arr, int n,int len){ n = n%len; int i = 0; for (i = 0; i < n; i++) { char copy = arr[0]; int j = 0; for (j = 0; j < len - .原创 2021-08-22 18:39:09 · 1390 阅读 · 1 评论 -
C语言----字符串左旋
题目:实现一个函数,可以左旋字符串中的n个字符。例如ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB#include <stdio.h>#include <string.h>void left_revolve(char* arr, int n,int len){ n = n%len; // 避免重复左旋 int i = 0; for (i = 0; i < n; i++) { char copy = arr[0]; /.原创 2021-08-22 18:11:37 · 176 阅读 · 0 评论 -
水仙花数 与 变种水仙花数 的求解 【C语言】
目录水仙花数变种水仙花数水仙花数简介:水仙花数是自幂数中的一种,三位自幂数又被称为水仙花数。补充:如果在一个固定的进制中,一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为自幂数。例如:在十进制中,153是一个三位数,各个数位的3次幂之和为13+53+3^3=153,所以153是十进制中的自幂数。在n进制中,所有小于n的正整数都为自幂数,比如2进制中1是自幂数,3进制中1和2都是自幂数,4进制中1,2和3都是自幂数…题目:求解0~100000范围间的所有水仙花数。(其他范围类比即原创 2021-08-06 15:43:36 · 863 阅读 · 3 评论 -
C语言----求解N以内的素数的两种典型方法以及其优化
题目描述:求解N以内的素数法一:(筛选法)筛选法求解过程为:将2~n之间的正整数放在数组内存储,将数组中2之后的所有能被2整除的数清0,再将3之后的所有能被3整除的数清0 ,以此类推,直到n为止。数组中不为0 的数即为素数。#include <stdio.h>int main(){ int arr[101]={0}; // 使数组下标和下标对应的值保持相同,数组不越界 int n=0; while(scanf("%d",&n)!=...原创 2021-08-03 23:26:14 · 6185 阅读 · 4 评论 -
一道经典面试题讲解 :数组越界而没报错 ,却出现死循环 ?(C语言)
下面这道经典易错题出自《C陷阱与缺陷》,也一度被众多互联网公司作为面试题拿来考察,可见其易错程度与重点程度,下面我就给大家详细讲解一下这道列题,希望对大家有所帮助:作为面试题:下面我们就以简洁代码形式给出,原理是一样的,话不多说,上代码:#include <stdio.h>int main(){ int i = 0; int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; //0~9 for (i = 0; i &l...原创 2021-08-03 13:34:12 · 1835 阅读 · 17 评论 -
C语言易错题--分别找出n个数字中最大值与最小值
题目来源:牛客网编程入门训练--BC76 公务员考试输入描述:一行,输入7个整数(0~100),代表7个成绩,用空格分隔。输出描述:一行,输出去掉最高分和最低分的平均成绩,小数点后保留2位,每行输出后换行。解题思路:此题的核心考察点就是分别找出一连串数字中的最大值与最小值。就拿该题举列,找出7个数字中的最大值与最小值,我们就设置循环变量i,循环7次,设最大值为0,循环比较,比他大的值就交换; 同理,设最小值为100(因为此题是满分100分,所以设置最小值为100,其他题目将最小.原创 2021-07-30 17:02:42 · 3760 阅读 · 1 评论 -
C语言易错图形题--打印n行n列的空心正方形图案
题目来源:牛客网编程入门训练--BC69 空心正方形图案解题思路:此题需要注意的是当i(行)和j (列)为0和n-1时候,打印的是“ * ”(*+空格),其余情况均打印“ ”(空格+空格)即可。直接上代码:#include <stdio.h>int main(){ int n = 0; while (scanf("%d", &n) != EOF) { int i = 0; for (i = 0; i < n; i++) { int j ..原创 2021-07-30 16:00:16 · 2632 阅读 · 0 评论 -
C语言易错题--求最大公约数与最小公倍数之和(辗转相除法)
题目来源:牛客网编程入门训练--BC115 小乐乐与欧几里得输入描述:每组输入包含两个正整数n和m。(1 ≤ n ≤ 109,1 ≤ m ≤ 109)输出描述:对于每组输入,输出一个正整数,为n和m的最大公约数与最小公倍数之和。解题思路:此题有多种解题方法,列如分别求出两数的最大公约数与最小公倍数,再将其相加。(大致方法:取两数较小数为初识化的最大公约数,依次--,直到找到能同时将其整除的数字再停下,即为最大公约数;最小公倍数类似,取两数较大数为初始化的最小公倍数,依次++,直到找.原创 2021-07-30 15:51:35 · 354 阅读 · 0 评论 -
C语言易错题--将一个整数转换为六进制打印
题目来源:牛客网编程入门训练--BC111 小乐乐与进制转换输入描述:输入一个正整数n (1 ≤ n ≤ 109)输出描述:输出一行,为正整数n表示为六进制的结果解题思路:由十进制数字打印类比可得,需要得到一个十进制整数的每一位,只需要将数字取模10,得到最低位,再除以10,去掉得到的这一位,再取模10,拿下第二位........所以这题需要得到正整数六进制的表示结果,只需要将该正整数取模6,拿下最低位,除以6,去掉该位,再取模拿下第二位(放在一个数组里面).....最后从...原创 2021-07-30 15:32:14 · 613 阅读 · 0 评论 -
【C语言刷题】交换两个变量(包含不创建临时变量)的解法
目录一.常规方法(引入空瓶变量)二.题目要求,不允许创建临时变量2.1 通过两数加法实现交换2.2 按位异或操作符实现交换题目:写代码实现两个变量的交换。(不允许创建临时变量)一.常规方法(引入空瓶变量)#include <stdio.h>int main(){ int a = 0; int b = 0; scanf("%d %d",&a, &b); printf("交换前:a=%d b=%d\n", a, b); int tmp = 0;// 空瓶变量原创 2021-07-29 21:33:39 · 863 阅读 · 0 评论 -
C语言必须会写的10道经典题(小白必看!)
对于初学C语言的小白们来说,提高进步最快的方式无疑是刷题,反复刷反复思考优化,这里给大家列出几道C语言入门经典好题,对于小白们锻炼思维很不错,下面就一起来看看吧~文章目录前言1.写代码将三个整数数按从大到小输出。2.写一个函数求两个整数的较大值3.写一个代码打印1 - 100之间所有3的倍数的数字4.给定两个数,求这两个数的最大公约数5.打印1000年到2000年之间的闰年6.写一个代码:打印100~200之间的素数7.编写程序数一下 1到 100 的所有整数中出现多少个数字98.计算1 / 1 - 1原创 2021-07-21 15:09:01 · 3714 阅读 · 0 评论 -
求n!(n的阶乘)和1!+2!+....n! (阶乘求和) ----C语言实现
不少小伙伴搞不清楚n!和n!求和,下面我就列出运用for循环实现求解的简洁方法,一步一步慢慢分析都能搞懂噢~1.求n!算法思想:首先要清楚阶乘定义,所谓 n 的阶乘,就是从 1 开始乘以比前一个数大 1 的数,一直乘到 n,用公式表示就是:1×2×3×4×…×(n-2)×(n-1)×n=n!具体的操作:利用循环解决问题,设循环变量为 i,初值为 1,i 从 1 变化到 n;依次让 i 与 sum 相乘,并将乘积赋给 sum。 (注意不能初始化为0,0*任何数等于0);① 定义变量 sum,并.原创 2021-07-19 15:02:18 · 39921 阅读 · 3 评论 -
牛客网编程初学者入门训练
BC19-反向输出四位数。#include <stdio.h>int main(){ int n = 0; scanf("%d", &n); while (n != 0) { printf("%d", n % 10); n = n / 10; } return 0;}原创 2021-07-01 20:01:28 · 434 阅读 · 0 评论 -
C语言经典列题——编写代码,演示多个字符从两端移动,向中间汇聚。
#include <stdio.h>#include <string.h>#include <windows.h>int main(){char arr1[] = { "i love meng" };char arr2[] = { " " };int left = 0;int right = strlen(arr2) - 1;while (left <= right){ arr2[left] = arr1[left];.原创 2021-07-19 16:48:35 · 191 阅读 · 0 评论 -
牛客网编程初学者入门训练 BC28
BC28 大小写转换#include <stdio.h>int main(){ int ch = 0; while ((ch = getchar()) != EOF) { printf("%c\n", ch = ch + 32); getchar(); } return 0;}注意:回车也是一个字符 要用getchar();吸收掉原创 2021-07-02 19:51:33 · 169 阅读 · 0 评论 -
C语言题解:用二分法思想求解10个元素中某个元素的下标(包含函数方法)
算法思想:用左下标和右下标之和除二得出中间下标值,再通过与所求元素比较,缩小范围,最后实现左下右下标相等,即找出所求下标。代码实现如下:#include <stdio.h>int main(){ int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int sz = sizeof(arr) / sizeof(arr[0]); //元素个数 int left = 0; int right = sz-1; int mid = 0; int原创 2021-07-19 15:53:25 · 471 阅读 · 0 评论
分享