c语言经典习题系列
文章平均质量分 56
该专栏主要写一下博主在学习c语言的一些习题
厚积薄发ض
当你运行错误时,不如调试一下,当你等待老师的答案时,不如自己百度一下
展开
-
字符串分隔
这道题刚开始想的是 分为三步 一是如果长度=8,那就直接打印字符串,如果长度<8,那就再字符串后面追加数字0,如果长度>8,那就先打印长度为8的字符,然后换行在打印剩下的字符,在补0,但是这种做法我还是没有实现出来而且似乎也太麻烦。接下来是我看别人的思路的首先我们打印的每一行都是长度为8的字符串,所以我们没打印一行就要换行,看是否字符串长度大于8,如果长度大于8,还要在打印一行,这一行打印字符或者0。那我们仔细想一想什么时候打印0,什么时候打印字符呢,首先我们打印的字符长度肯...原创 2022-03-01 22:58:20 · 224 阅读 · 1 评论 -
c语言经典习题之逆序字符串
目录使用指针逆序字符串使用递归逆序字符串字符串逆序使用指针逆序字符串思路:给两个指针,left放在字符串左侧,right放在最后一个有效字符位置 交换两个指针位置上的字符 left指针往后走,right指针往前走,只要两个指针没有相遇,继续2,两个指针相遇后,逆置结束void reverse_string(char* str){ char* left = str;//首元素 char* right = str + strlen(str) - 1;//最后一个元素原创 2022-01-12 17:12:15 · 501 阅读 · 2 评论 -
c语言经典习题之水仙花数
水仙花数求出0~100000之间的所有“水仙花数”并输出。“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如 : 153=1 ^ 3+5 ^ 3+3 ^ 3,则153是一个“水仙花数”。思路:首先先计算出一个数的有几位,然后再求出这个数的每一位,进行求和,最后验证;注意点:求和时sum一定在循环里面,因为每次要更新; 我们在求一个数的每一位或者计算位数的时候一定要在定义一个变量防止循环体内改变循环变量。#include<stdio.h>#...原创 2022-01-12 14:18:15 · 1105 阅读 · 0 评论 -
c语言习题之奇偶排序
这篇文章讲一下关于奇偶排序的习题目录调整奇数偶数顺序使用qort函数进行奇偶排序调整奇数偶数顺序调整奇数偶数顺序调整数组使奇数全部都位于偶数前面。输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。思路:题目要求把奇数排在偶数前面,我们可以定义两个指针,第一个指针从前往后找偶数,如果遇到奇数就指针+1找下一个,同理第二个指针从后往前找奇数,如果遇到偶数就指针-1找上一个。代码实现:void usta原创 2022-01-12 12:48:10 · 1301 阅读 · 0 评论 -
c语言经典习题之最大公约数和最小公倍数
这篇文章我们最大公约数和最小公倍数目录最大公约数方法一:方法二:最小公倍数方法一:方法二:方法三:最大公约数最大公约数指两个或多个整数共有约数中最大的一个题目:求两个数中的最大公约数方法一:思路:我们可以从两个数中小的数开始,只要这个数能同时整除这两个数就是最大公约数,否则的话就-1试除。 #include<stdio.h> int main() { long long m=0; long .原创 2022-01-11 17:35:14 · 340 阅读 · 1 评论 -
c语言经典习题之素数的求解
这一篇文章我们讲解素数的求解方法目录素数试除法素数试除法改编提高效率素数筛选法素数试除法题目名称:打印素数题目内容:写一个代码:打印100~200之间的素数素数试除法:给定一个合数n(这里,n是待分解的整数),试除法看成是用小于等于n的每个素数去试除待分解的整数。如果找到一个数能够整除除尽,这个数就是待分解整数的因子。试除法一定能够找到n的因子。因为它检查n的所有可能的因子,所以如果这个算法“失败”,也就证明了n是个素数。通俗的讲就是一个数将 2-数的本身-1 .原创 2022-01-11 16:27:05 · 265 阅读 · 0 评论 -
c语言经典习题之矩阵
这一篇文章我来讲一些矩阵的相关基础题。矩阵元素定位矩阵元素定位_牛客题霸_牛客网 (nowcoder.com)思路很简单就是遍历整个数组然后如果由于它找的那个元素相等就打印,这里要注意的是,我们看见的行和列与二维数组中的行和列不一样,所以我们在比较的时候要将输入的行和列减1在与遍历的行和列比较。 当然看到这个题我们也能想到杨氏矩阵那个做法,但是因为我们这个题目矩阵不一定是行和列全部递增的,所以我们不能用那种做法,但是这也可以让你回顾一下做法,现在你能敲出来杨氏矩阵那种.原创 2022-01-11 14:41:55 · 1065 阅读 · 1 评论 -
c语言经典习题之二分查找
今天学习的是二分查找经典算法,虽然思想简单但很容易写错。#include<stdio.h>int binary_search(int array[], int n, int value){ int left = 0; int right = n - 1; while (left <= right) //注意当区间为【0,n-1】时候一定是left<=right { int middle = left + ((right - left) >> 1);/原创 2022-01-10 22:38:57 · 340 阅读 · 5 评论 -
c语言经典习题之序列的合并,去重,删除,判断,插入,排序
这篇文章主要讲一下序列中的经典问题。尤其是算法思想一定要掌握,在将来做题肯定会用到。序列的去重序列中整数去重_牛客题霸_牛客网 (nowcoder.com)错误:我刚开始想:每输入一次元素就存放到对应下标最后在打印,但是没有通过全部用例,这就是因为我们这样想就已经把数字排好序,但是题目要求原来的数字保持位置不变(这里的位置不变是相对相邻元素位置不变,不是下标不变。)方法一:我们可以我错误的方法在改编一下,我们这次是把元素依次放到数组里(注意这里的下标不对应与上面的不一样..原创 2022-01-10 20:49:54 · 1016 阅读 · 8 评论 -
c语言经典习题之打印10种图形图案
这一节的内容主要输出各种图案,题目来源牛客网;目录题目一:打印线段图案题目二:打印正方形图案题目三:打印直角三角形图案题目四:打印翻转直角三角形图案题目五:带空格直角三角形图案题目六:打印金字塔图案题目七:打印翻转金字塔图案题目八:打印菱形题目九:打印k形图案题目十:打印x形题目一:打印线段图案线段图案_牛客题霸_牛客网 (nowcoder.com)思路:根据题目要求输入线段图案用*表示,输入整数代表线段长度,很容易想到就写个循环,循环n(这里.原创 2022-01-09 23:35:25 · 28420 阅读 · 2 评论 -
c语言经典习题之杨氏矩阵查找数字
目录方法一:复杂度较高不推荐方法二:代码实现:在一个 m 行 n 列二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从 上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组 中是否含有该整数。杨氏矩阵就是每一行每一列都是数字都按递增排序;比如这道题我拿下面这个杨氏矩阵来查找数字7首先大家都会想到遍历整个二维数组找数字7,这样肯定可以,但是复杂度较高;方法一:复杂度较高不推荐#include<stdio..原创 2022-01-09 21:01:20 · 515 阅读 · 0 评论 -
c语言经典习题之判断字符串是否为它旋转之后的串
目录方法一:暴力穷举法方法二:写一个函数,判断一个字符串是否是另外一个字符串旋转之后的字符串例如:str1:ABCDEF str2:CDEFAB 输出Yes str1:ABCDEF str2:CDEFAA 输出No方法一:暴力穷举法我们依据左旋字符串那道题改编一下;思路:题目要求一个字符串是否是另外一个字符串旋转之后的字符串,我们可以将str1进行遍历旋转,旋转一次跟str2比较一下,旋转str1字...原创 2022-01-09 18:57:27 · 223 阅读 · 0 评论 -
c语言经典习题之左旋字符串
实现一个函数reverseLeftWords 可以左旋k个字符例如:字符串ABCDEFk =2 CDEFAB k=3 DEFABC目录方法一:方法二:方法三:方法一:思路:我们只要每次先把第一个元素存起来然后后面的元素依次往前移动,最后再把第一个元素放到最后。#include<string.h>#include<stdio.h>void reverseLeftWor...原创 2022-01-09 17:11:41 · 370 阅读 · 1 评论