C语言入门经典例子
文章平均质量分 65
为了整理和记录自己见到的经典例子,同时分享给大家,促进各位一起学习。这些例子来自于CSDN创作者:英雄哪里出来
Healer说这题太baby了
这个作者很懒,什么都没留下…
展开
-
【第25题】求所有1到5的全排列
用C语言来试一试1到5的全排列吧!原创 2022-01-07 22:35:10 · 809 阅读 · 0 评论 -
【第23题】给定a和b,求它们的最小公倍数
最大公约数和最小公倍数的关系原创 2022-01-07 09:54:57 · 240 阅读 · 0 评论 -
【第22题】给定a和b,代表分数 a / b,求它的最简分数
你会用C语言化简分数吗?原创 2022-01-07 09:14:15 · 631 阅读 · 0 评论 -
【第21题】给定a和b,求它们的最大公约数
你真的了解最大公约数吗原创 2022-01-06 22:10:14 · 511 阅读 · 0 评论 -
【第20题】给定一个十进制数d和一个进制X,求它的X进制表示
十进制转换成别的进制,C语言实现原创 2022-01-06 18:12:26 · 346 阅读 · 0 评论 -
【第19题】给出一个R进制的数x,求它的十进制表示
进制转换,用C语言代码实现原创 2022-01-06 16:22:29 · 305 阅读 · 0 评论 -
【第18题】给出一个字符串代表日期,问它是这一年的第几天 || 一维数组前缀和的应用
目录题目描述解题思路解题代码感想写在最后题目描述循环输入。每次输入为一个字符串,字符串的格式为YYYY/MM/DD,即YYYY年MM月DD日。要求输出这是一年的第几天。当没有任何输入时,程序结束。解题思路这里我只想到了switch - case语句,这样太繁琐了,下面有一种简单的做法,好像是一维前缀和。以及这里截取字符串使用了sscanf解题代码#include <stdio.h>#include <stdlib.h>#include <string.h原创 2021-12-27 19:01:15 · 338 阅读 · 0 评论 -
【第17题】给定一个字符串,判定是否是C语言合法标识符 || ----> 这道题目当时没做出来
目录题目描述解题思路第一步第二步第三步第四步解题代码写在最后写在最后题目描述循环输入。每组输入为一个长度不超过80的字符串,判断它是否是C语言合法标识符。没有任何输入时,程序结束。C语言合法标识符需要满足如下条件:(1)出现空格(或者tab)非法;(2)首字符不能是数字;(3)中间不能出现空格(4)字符集只有 数字、_、大写字母、小写字母;解题思路第一步对于输入的字符串,我们要先看一下它的长度是否是不超过80。第二步判断是否是空串。(这里比较巧妙,因为在判断空串的同时,可以顺原创 2021-12-27 16:15:41 · 747 阅读 · 0 评论 -
【第16题】给定一个密码,判断是否是一个安全的密码 || -------->这个题自己没做出来
目录题目描述解题思路解题代码写在最后题目描述循环输入。每次输入一个长度不超过20的密码字符串,判断这个串是不是一个安全密码串,是则输出YES,否则输出NO。没有任何输入的时候,程序结束。安全密码串的条件如下:(1) 长度在8到16之间(2) 至少有小写字母、大写字母、数字、特殊字符中的任意三种;(3) 特殊字符为~!@#$%^其中之一;解题思路解题代码#include <stdio.h>#include <string.h>#include <stdl原创 2021-12-26 20:13:01 · 652 阅读 · 0 评论 -
【第15题】给定n,打印一个直角边为n的等腰直角三角形
目录题目描述解题思路解题代码写在最后题目描述循环输入。对于每个输入的整数n,打印出一个直角边为n的等腰直角三角形。字符使用*来表示,当没有任何输入时,程序结束。例如输入4,输出如下:**********解题思路我们可以发现这样的规律:第一行打印一个*,第二行打印两个*,那么第n行打印n个*。所以一个二重循环直接就解决了。解题代码#include <stdio.h>int main(){ int n; while(scanf("%d",&n) != E原创 2021-12-26 19:10:13 · 2139 阅读 · 0 评论 -
【第14题】给一个整数,对它逆序输出
目录题目描述解题思路 除法和取模运算解题代码写在最后题目描述循环输入。每次输入为一个正整数a(a ≤ 109),现在需要对这个正整数进行逆序输出。当没有任何输入时,程序结束。解题思路 除法和取模运算其实大家可以看出来这个题目的核心是想要考察你的取模运算和除法运算。比如说一个数字是123,那么模10的话,就可以得到最后一位数字3,那么我想得到2该怎么办呢?肯定是让123变成12,然后模10就可以了,那么我就让123除10就可以了,所以一直这样子,我们就可以得到这个数字的所有位置的数字原创 2021-12-26 18:56:11 · 203 阅读 · 0 评论 -
【第13题】给你一个字符串,对它进行翻转输出
目录题目描述解题思路思路一 倒序输出思路二 操作下标解题代码解法一 倒序输出解法二 操作下标写在最后题目描述循环输入。每组输入是一个长度不超过1000的字符串,现在需要对这个字符串进行翻转后输出,当没有任何输入时,程序结束。解题思路思路一 倒序输出题目没有说是非要对这个输入的字符串进行操作,只需要最后的结果即可,那么我们直接倒着输出这个字符串即可。思路二 操作下标我们可以让这个字符串的头部和尾部一直进行交换,然后逐渐到了字符串的中间位置,那么到了中间位置后原创 2021-12-26 18:32:50 · 329 阅读 · 0 评论 -
【第12题】已知半径,求圆的周长和面积
目录题目描述解题思路解题代码写在最后题目描述循环输入。每输入一个正整数r,输出两个浮点数分别表示圆的周长和面积并且以空格分隔,均精确到小数点后六位。当没有任何输入时,程序结束。解题思路这里我们只要知道圆的周长和面积计算公式即可。那么这里的Π的话,有两种定义方式。方式一:直接自己定义一个PI 3.14方式二:利用自带的数学函数来表示PI这里要注意反三角函数的返回值和参数都是double,如图解题代码#include<stdio.h>#include <mat原创 2021-12-26 16:14:17 · 1137 阅读 · 0 评论 -
【第11题】简单的溢出处理
目录题目描述解题思路解题代码写在最后题目描述先输入一个t(t ≤ 100),然后输入t组数据。每组输入为4个正整数a,b,c,d(0 ≤ a,b,c,d ≤ 2 62),输出a + b + c +d的值。解题思路这里我被卡了,学C以来我知道的比较大的就是long long 类型了,但是这里使用 long long类型是不行的,因为是放不下这么大的和的。那么这里有一个更大的存放类型,是unsiged long long,不过unsigned long long的表示范围也只有264-1,但是这里的原创 2021-12-26 15:49:50 · 70 阅读 · 0 评论 -
【第10题】给定n个正整数,输出它们的平均数
目录题目描述解题思路解题代码写在最后个人感想题目描述循环输入,每组数据先输入n(n ≤ 10000),再输入n个正整数ai(ai≤10000),输出它们的平均数,精确到小数点后两位,当没有仍和输入时,程序结束。解题思路我们可以直接将这些数字的和算出来,保存在一个变量sum中,然后让sum除以这些数字的个数,那么就可以得到平均数了。注意这里的平均数要使用浮点数来保存,并且结果要精确到小数点后两位。解题代码#include <stdio.h>int main(){ int原创 2021-12-26 14:56:16 · 2018 阅读 · 0 评论 -
【第9题】给定n个整数,输出其中最大的整数
目录题目描述解题思路解题代码写在最后题目描述循环输入。每组数据先输入n(n ≤ 10000),再输入n正整数,输出其中最大的整数。当没有任何输入时,程序结束。解题思路我们可以使用迭代法来逐个比较,从而得到最大的元素。也就是说,我假设第一个数字是最大的,那么我让它和后面的数字依次比较,那么如果要是没有后面的数字大,那么最大数字就会由当前的数字更行为后面的那个比这个当前数字大的那个数字。这样就会始终保证在比较到某个位置A的时候,最大元素是A位置之前的所有元素的最大值。解题代码#include原创 2021-12-25 22:42:17 · 2041 阅读 · 0 评论 -
【第8题】给定一个字符,将它大写以后输出
目录题目描述解题思路解题代码写在最后题目描述循环输入,每组输入数据为一个字符,如果字符不是小写英文字母则原样输出;如果是小写英文字母,那么转换成大写字母后输出。当没有输入时,程序结束。解题思路这里需要知道一个知识点:在ASC表中,小写字母的ASC值比大写字母的ASC值大32,那么如果这个字母是小写字母,那么我们只需要让这个小写字母减去32即可得到大写字母。解题代码#include <stdio.h>int isLowwer(char c){ return c >=原创 2021-12-25 22:23:49 · 100 阅读 · 0 评论 -
【第7题】给定n,求1x 2 x 3 x 4 ... x n的乘积
目录题目描述解题思路思路一思路二解题代码方法一方法二写在最后题目描述循环输入,每输入一个正整数n(n ≤ 12),输出 1 x 2 x 3 … x n的值,当没有任何输入时,结束程序。解题思路思路一我们可以很容易想到迭代,因为这里的n的上界很小,所以可以直接使用迭代。思路二假设我们要计算第n项,那么也就是说要从1开始,一直乘到第n项,那么假设我们已经知道前n - 1项的乘积Sn-1,那么我们只需要让Sn-1在乘第n项的值(假设是An),那么Sn-1 * An-1就可以得到前n项的乘积原创 2021-12-25 21:13:26 · 1339 阅读 · 0 评论 -
【第6题】在二维直角坐标系中,求两点之间的距离
目录题目描述解题思路解题代码写在最后题目描述循环输入,每组输入为四个浮点数,分别代表两个点的坐标,即(X0,Y0),和(X1,Y1),求输出这两个点之间的距离,精确到小数点后两位,当没有任何输入,结束程序。解题思路我们设两点间的距离是d,那么d = (X0−X1)2+(Y0−Y1)2\sqrt[]{(X_0 - X_1)^2 + (Y_0-Y_1)^2}(X0−X1)2+(Y0−Y1)2 。解题代码#include <stdio.h>#include <m原创 2021-12-25 20:12:01 · 454 阅读 · 0 评论 -
【第5题】求一个数字的绝对值
目录题目描述解题思路解题代码补充写在最后题目描述循环输入,每输入一个浮点数num,就输出num的绝对值,精确到小数点后两位。当没有任何输入时,结束程序。解题思路可以看到题目中有绝对值和精确到小数点后两位这种字眼,那么说明我们需要C中的库函数来求绝对值以及printf函数的输出格式。解题代码#include <stdio.h>#include <math.h>//(1)int main(){ double num; while(scanf("%lf",&a原创 2021-12-25 19:41:33 · 196 阅读 · 0 评论 -
【第4题】给定a 和 b,判断a能否被b整除
目录题目描述解题思路解题代码解法一解法二写在最后题目描述输入一个数字n,然后输入n组数据,每组数据中只有两个整数a和b,如果a能被b整除,那么输出YES,否则输出NO。解题思路首先对于除法,我们很容易知道它的边界情况被漏掉,这个边界情况就是对于除数b,不可以是0,如果除数b是0的话,那么相当于分母是0,那么是错误的。所以这个边界情况要考虑到。其次,要判断a能否被b整除,那么其实就是看a除以b的余数是否为0,如果是0,那么说明a可以被b整除,否则说明a不能被b整除。那么,在C语言中,我们可以想原创 2021-12-25 19:25:49 · 3397 阅读 · 0 评论 -
【第3题】给定两个数,交换这两个数字的值并且输出
目录题目描述解题思路解题代码解法一:引入临时变量解法二: 不使用临时变量,就自己操作解法三: 使用异或运算(比较快速的高阶技法)知识补充解法四: 脑经急转弯写在最后题目描述循环输入两个数a 和 b,交换两者的值后输出 a 和 b。当没有任何输入时,结束程序。解题思路最基础的方法就是引入临时变量从而实现两个数字的交换,除此之外,其实还有别的方法,我们来一起看看。解题代码解法一:引入临时变量#include <stdio.h>int main(){ int a, b;原创 2021-12-24 22:03:15 · 1031 阅读 · 4 评论 -
【第2题】求1+2+3...+n的和(4种解法)
目录题目解题思路解题代码1. 错误解法2. 正确解法(1)3. 正确解法(2)4. 正确解法(3)5. 正确解法(4)写在最后题目循环输入,每输入一个正整数n(n ≤ 65535), 输出1 + 2 + 3 + … + n 的值,并且多输出一个空行。当没有任何输入时,结束 程序。解题思路我们可以通过暴力枚举或者使用等差数列前n项和的公式来计算出来结果解题代码1. 错误解法# include<stdio.h>int main(){ int n; while(scanf原创 2021-12-24 21:27:24 · 7242 阅读 · 0 评论