C语言程序设计
文章平均质量分 51
C/C++学习和一些学习心得
水蛙菌
追风赶月莫停留,平芜尽处是春山
展开
-
C/C++编程学习 - 第22周 ⑨ 图形输出1
题目链接题目描述输入一个n,输出n层图形,见下(图为n=4的情况):**********Input输入一个数nOutput输出相应的图形Sample Input6Sample Output*********************思路输入一个数n,输出n行的图形,每1行有1个*,第二行有2个*,……第n行有n个*。C++代码:#include<bits/stdc++.h>using namespace std;int main(){ i原创 2021-02-06 10:44:51 · 1802 阅读 · 0 评论 -
C/C++编程学习 - 第22周 ⑧ 九九乘法表
题目链接题目描述我们都学过九九乘法表,现在我们将它扩展成12*12的乘法表,请你输出这个乘法表的前N行。Input输入一个数N,其中1≤N≤12Output输出一个乘法表,每行几个算式之间以空格隔开Sample Input5Sample Output1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5=25思路输入一个数n,输出n行的乘法表。提示:用原创 2021-02-06 10:44:20 · 1058 阅读 · 0 评论 -
C/C++编程学习 - 第22周 ⑦ 数字反写
题目链接题目描述读入一个四位数abcd,请你输出他的“反写”的值。比如读入1015,输出5101;读入4310,输出134(不能有前导零)不合法的四位数,如234, 0123, 12412不会作为读入数据。Input输入一个4位数abcdOutput输出一个4位数,表示反写的值Sample Input4432Sample Output2344思路定义一个整数a,输入一个整数s,则a的值为s的个位1000+s的十位100+s的百位*10+s的千位。输出a即可。#inclu原创 2021-02-06 10:44:00 · 1187 阅读 · 0 评论 -
C/C++编程学习 - 第22周 ⑥ 分数评级
题目链接题目描述程序读入一个整数S,作为一个学生的期末成绩,请你输出他的成绩评级。评级规则:A级:90 <= S <= 100,B级:80 <= S < 90,C级:70 <= S < 80,D级:60 <= S < 70,E级:0 <= S < 60。Input输入一个数S,表示该学生的分数Output输出一个大写字母,表示学生成绩的评级Sample Input72Sample OutputC思路按照题目给的级别,原创 2021-02-06 10:43:42 · 808 阅读 · 0 评论 -
C/C++编程学习 - 第22周 ⑤ 倍数的个数
题目链接题目描述读入N,求出1…N的范围内所有2或3或5的倍数一共有多少个?Input输入一个数NOutput输出一个数,表示这样的数的个数Sample Input10Sample Output8思路从1循环到n,看看有多少个数是2的倍数或3的倍数或5的倍数,如果是,则计数器+1,最后输出计数器的值。C++代码:#include<bits/stdc++.h>using namespace std;int main(){ int n; while(cin原创 2021-02-06 10:42:07 · 3169 阅读 · 0 评论 -
C/C++编程学习 - 第22周 ④ 质数判断
题目链接题目描述读入一个数N,判断这个数是不是质数(prime number)。质数:一个数 N 除了1和它本身不存在其他约数,这样的数叫做质数。约数:整数a除以整数b(b≠0) 除得的商正好是整数而没有余数。则a称为b的倍数,b称为a的约数。Input输入一个数NOutput如果N是质数,输出"yes" 如果N不是质数,输出"no"Sample Input111Sample Outputno思路判断输入的数是否为质数。C++代码:#include<bits/std原创 2021-02-06 10:41:52 · 700 阅读 · 0 评论 -
C/C++编程学习 - 第22周 ③ 分数求和
题目链接题目描述计算1/1+1/2+1/3+…+1/N的和(N为读入值)Input输入一个数NOutput输出计算结果(误差不能超过0.00001,跟保留小数位数无关)Sample Input2Sample Output1.5思路计算1/1+1/2+1/3+…+1/N的和,用for循环,从1循环到N即可。C++代码:#include<bits/stdc++.h>using namespace std;int main(){ double n; while原创 2021-02-06 10:41:26 · 1189 阅读 · 0 评论 -
C/C++编程学习 - 第21周 ② 四则运算1
题目链接题目描述读入三个数a, b, c输出a * (b + c - a)的值Input输入三个数a,b,c,以空格隔开Output输出运算结果Sample Input1 2 4Sample Output5思路读入三个数a, b, c输出a * (b + c - a)的值C++代码:#include<bits/stdc++.h>using namespace std;int main(){ int a, b, c; cin >> a >原创 2021-02-06 10:40:50 · 11971 阅读 · 0 评论 -
C/C++编程学习 - 第22周 ② 非负数的和
题目链接题目描述通过键盘不断输入整数,不断读取,输出其中(读到负数前)所有的非负数的和。注意:对于每组数据,题目共提供n个整数。这一题有2种写法1、统计已输入数字之和,直到输入的数字为负数,跳出循环。2、读完所有数字,但是只计算第一个负数前所有的非负数的和。第一种写法程序不会读取完全部输入,但是不会被判错…Input第一行输入一个n,第二行输入n个整数,以空格隔开Output输出一个数,表示读到负数前,所有非负数的和。Sample Input43 4 -6 7Sample O原创 2021-02-05 17:23:11 · 2118 阅读 · 0 评论 -
C/C++编程学习 - 第22周 ① 阶乘
题目链接题目描述给定一个整数n,求它的阶乘,n小于等于10。Input输入一个数n(1<=n<=10)Output输出一个数,表示n的阶乘Sample Input5Sample Output120思路计算阶乘,n的阶乘就是从1累乘到n。C++代码:#include<bits/stdc++.h>using namespace std;long long f(long long n){ if(n == 1) return 1; return f(原创 2021-02-05 17:22:57 · 458 阅读 · 0 评论 -
C/C++编程学习 - 第21周 ⑩ 2的幂整除
题目链接题目描述给一个正整数n,计算它最多能被2的多少次幂整除Input输入一个数nOutput输出一个数Sample Input896Sample Output7思路一直将n除以2,如果满足n%2==0就继续除,看看除了多少次。C++代码:#include<bits/stdc++.h>using namespace std;int main(){ int n; while(cin >> n) { int ans = 0; whil原创 2021-02-05 17:22:36 · 15058 阅读 · 0 评论 -
C/C++编程学习 - 第21周 ⑨ 求和
题目链接题目描述编程实现输入两个整数a,b,当a+b=1时输出one,a+b=2时输出two,a+b=3时输出three,a+b=4时输出four,a+b=5时输出five,a+b=6时输出six,a+b=7时输出seven,a+b=8时输出eight,a+b=9时输出nine,否则输出None(提示:switch语句)Input输入两个整数a,b,以空格隔开Output输出相应单词Sample Input3 5Sample Outputeight思路根据题目进原创 2021-02-05 17:22:18 · 751 阅读 · 0 评论 -
C/C++编程学习 - 第21周 ⑧ 条件输出3
题目链接题目描述编程实现输入四个整数a,b,c,d,当a+b大于10时,输出ab的值,否则当b+c>5时输出cd的值,否则当d<10或者a*c>100时输出Yes,否则输出NoInput输入4个整数a,b,c,d,以空格隔开Output输出相应结果Sample Input1 6 9 7Sample Output63思路输入四个整数a,b,c,d,当a+b大于10时,输出ab的值,否则当b+c>5时输出cd的值,否则当d<10或者a*c>100时原创 2021-02-05 17:22:08 · 2382 阅读 · 1 评论 -
C/C++编程学习 - 第21周 ⑦ 首字母
题目链接题目描述编程实现输入一个字符,当该字符为a时输出apple,当该字符为b时输出banana,当该字符为c时输出cat,否则输出noInput输入一个字符Output输出相应单词Sample InputtSample Outputno思路输入一个字符,当该字符为a时输出apple,当该字符为b时输出banana,当该字符为c时输出cat,否则输出no。C++代码:#include<bits/stdc++.h>using namespace std;int原创 2021-02-05 17:21:56 · 1306 阅读 · 1 评论 -
C/C++编程学习 - 第21周 ⑥ 条件输出2
题目链接题目描述编程实现输入两个整数a,b,当0<=a+b<=3时输出YES,当a+b>=4时输出NO,当a+b<0时输出negativeInput输入两个整数a,b,以空格隔开Output根据判断结果输出“YES”“NO”或“negative”Sample Input7 -1Sample OutputNO思路输入两个整数a,b,当0<=a+b<=3时输出YES,当a+b>=4时输出NO,当a+b<0时输出negative。C++原创 2021-02-05 17:21:40 · 846 阅读 · 0 评论 -
C/C++编程学习 - 第21周 ⑤ 条件输出1
题目链接题目描述编程实现输入两个整数a,b,当a+b大于10时,输出a*b,否则输出a-bInput输入a,b两个数,以空格隔开Output输出一个数的结果Sample Input3 7Sample Output-4思路原创 2021-02-05 17:21:18 · 364 阅读 · 0 评论 -
C/C++编程学习 - 第21周 ④ 数字交换
题目链接题目描述编写程序读入三个数到整型变量a,b,c,将让a存储原本b中的值,让b存储原本c中的值,让c存储原本a中的值,输出交换后a,b,c的值Input输入三个整数a,b,c,以空格隔开Output输出交换后的a,b,c,以空格隔开Sample Input4 5 6Sample Output5 6 4思路交换a,b,c的值,也可以交换输出顺序。C++代码:#include<bits/stdc++.h>using namespace std;int ma原创 2021-02-05 17:21:04 · 590 阅读 · 0 评论 -
C/C++编程学习 - 第21周 ③ 函数1
题目链接题目描述请完成一份实现“ 读入x,计算 (f=x^2+2*x+5) ”,输出 f 值的程序Input输入一个数xOutput输出 f 的值Sample Input2Sample Output13思路读入x,计算 (f=x^2+2*x+5)C++代码:#include<bits/stdc++.h>using namespace std;int main(){ double x; cin >> x; cout << x *原创 2021-02-05 17:20:45 · 13009 阅读 · 0 评论 -
C/C++编程学习 - 第21周 ① 最短区间
题目链接题目描述现在给定一个整数s以及一个长度为n的整数数列a0,a1,a2,a3…an−1 (全为正数),请你求出总和不小于s的连续子序列的长度的最小值。如果解不存在,则输出0。Input第一行:两个整数,表示 s 与 n,其中1≤s≤109,1≤n≤500000; 第二行:n个用空格隔开的整数,表示 a0 a1 … an−1,其中对于任意ai有1≤ai≤109。Output输出总和不小于s的连续子序列的长度的最小值。 如果解不存在,则输出0。Sample Input50 2010原创 2021-02-04 20:29:40 · 8337 阅读 · 0 评论 -
C/C++编程学习 - 第20周 ⑩ 量身高
题目链接题目描述输入一个数字n,表示身高,程序会输出一句英文,"My height is ncm.”,其中n代指输入的数字。例如:输入180,输出是“My height is 180cm.”Input输入一个数 nOutput输出"My height is ncm."Sample Input175Sample OutputMy height is 175cm.思路输入一个数字,输出一个带这个数字的字符串。C++代码:#include<bits/stdc++.h>原创 2021-02-04 20:29:00 · 2067 阅读 · 0 评论 -
C/C++编程学习 - 第20周 ⑨ 圆的面积
题目链接题目描述圆是世界上最完美的图形,我们求圆的面积笔算很复杂,用计算器又要每次都输入公式,也不便利,不妨写一个程序来计算圆的面积吧!圆面积 S 的计算公式为: S=r×r×PI其中 r 为圆的半径,读入一个浮点数r(带小数点的数),表示圆的半径,取 PI 为 3.14159,输出一个小数表示圆的面积。Input输入一个浮点数r(带小数点的数)Output输出一个小数,表示圆的面积Sample Input1.0Sample Output3.14159思路输入圆的半径,根据圆原创 2021-02-04 20:28:41 · 1579 阅读 · 0 评论 -
C/C++编程学习 - 第20周 ⑧ 复读机
题目链接题目描述众所周知,群复读是一项广受欢迎的活动。现在编写一个程序,输入一个数字之后,计算机会立即输出一个相同的数字。Input输入一个数 nOutput输出一个数 nSample Input666Sample Output666思路输入一个数,再输出。(复读)C++代码:#include<bits/stdc++.h>using namespace std;int main(){ string s; cin >> s; cout <原创 2021-02-04 20:28:26 · 15756 阅读 · 0 评论 -
C/C++编程学习 - 第20周 ⑦ n^n的末位数字
题目链接题目描述给出一个整数N,输出N^N(N的N次方)的十进制表示的末位数字。Input一个数N(1 <= N <= 109)Output输出N^N的末位数字Sample Input13Sample Output3思路快速幂(取模),这里给出快速幂取模的模板。快速幂取模:ll Quick_Mod(ll a, ll b, ll mod){ ll res = 1, term = a % mod; while(b) { if(原创 2021-02-04 20:28:12 · 3100 阅读 · 2 评论 -
C/C++编程学习 - 第20周 ⑥ 直角三角形
题目链接题目描述勾股定理举世闻名,当整数a, b, c满足a2+b2=c2时,以a, b, c为三边的三角形即为直角三角形。请你设计一个程序,读入a, b, c三个整数(其中a< b < c),如果a, b, c构成直角三角形则输出1, 否则输出0。Input输入三个整数a,b,c,以空格隔开Output输出0或1,1代表a,b,c能构成直角三角形,0代表不能Sample Input5 12 13Sample Output1思路判断三条边能否构成直角三角形,如果满足原创 2021-02-04 20:27:55 · 2540 阅读 · 0 评论 -
C/C++编程学习 - 第20周 ⑤ 逆序数
题目链接题目描述在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。给出一个整数序列,求该序列的逆序数。Input第1行:N,N为序列的长度(n <= 50000) 第2 - N + 1行:序列中的元素(0 <= Ai <= 109)Output输出逆序数Sample Input42431Sample原创 2021-02-04 20:27:32 · 8876 阅读 · 0 评论 -
C/C++编程学习 - 第20周 ④ 排序
题目链接题目描述给出N个整数,对着N个整数进行排序。Input第1行:整数的数量N(1 <= N <= 50000) 第2 - N + 1行:待排序的整数(-109 <= Ai <= 109)Output共n行,按照递增序输出排序好的数据。Sample Input554321Sample Output12345思路递增排序,输出。也可以递减排序,逆向输出。C++代码:#include<bits/stdc++.h>usin原创 2021-02-04 20:27:05 · 10082 阅读 · 0 评论 -
C/C++编程学习 - 第20周 ③ X^2 Mod P
题目链接题目描述X*X mod P = A,其中P为质数。给出P和A,求<=P的所有X。Input两个数P A,中间用空格隔开。(1 <= A < P <= 1000000, P为质数)Output输出符合条件的X,且0 <= X <= P,如果有多个,按照升序排列,中间用空格隔开。 如果没有符合条件的X,输出:No SolutionSample Input13 3Sample Output4 9思路思路:暴力就能过了,当然也可以用快速幂,效率原创 2021-02-04 20:26:38 · 5434 阅读 · 0 评论 -
C/C++编程学习 - 第20周 ② 3的幂的和
题目链接题目描述求:30 + 31 +…+ 3N mod 1000000007Input输入一个数N(0 <= N <= 109)Output输出:计算结果Sample Input3Sample Output40思路快速幂,这里给出快速幂取模的模板。快速幂取模:ll Quick_Mod(ll a, ll b, ll mod){ ll res = 1, term = a % mod; while(b) { if(b &原创 2021-02-04 20:26:07 · 8141 阅读 · 0 评论 -
C/C++编程学习 - 第20周 ① 最小公倍数LCM
题目链接题目描述输入2个正整数A,B,求A与B的最小公倍数。Input2个数A,B,中间用空格隔开。(1<= A,B <= 10^9)Output输出A与B的最小公倍数。Sample Input30 105Sample Output210思路找两个数的最小公倍数。在这里给出gcd(最大公因数)和lcm(最小公倍数)的模板。gcd:long long gcd(long long a, long long b){ return !b ? a : gcd(b原创 2021-02-03 08:20:40 · 5581 阅读 · 1 评论 -
C/C++编程学习 - 第19周 ⑩ 派
题目链接题目描述我的生日要到了!根据习俗,我需要将一些派分给大家。我有 N 个不同口味、不同大小的派。有 F 个朋友会来参加我的派对,每个人会拿到一块派(必须一个派的一块,不能由几个派的小块拼成;可以是一整个派)。我的朋友们都特别小气,如果有人拿到更大的一块,就会开始抱怨。因此所有人拿到的派是同样大小的(但不需要是同样形状的),虽然这样有些派会被浪费,但总比搞砸整个派对好。当然,我也要给自己留一块,而这一块也要和其他人的同样大小。请问我们每个人拿到的派最大是多少?每个派都是一个高为 1,半径不等的圆原创 2021-02-03 08:19:58 · 8541 阅读 · 1 评论 -
C/C++编程学习 - 第19周 ⑨ 病人排队
题目链接题目描述病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序:1.老年人(年龄 ≥60 岁)比非老年人优先看病。2.老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。3.非老年人按登记的先后顺序看病。输入格式第 1 行,输入一个小于 100 的正整数,表示病人的个数;后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:一个长度小于 10 的字符串表示病人的 ID(每个病人的 ID 各不相同且只含数字和字母),一个整数表示病人的年龄(不超过 100原创 2021-02-03 08:19:36 · 10704 阅读 · 0 评论 -
C/C++编程学习 - 第19周 ⑧ 整数奇偶排序
题目链接题目描述蒜术师给了你一个 10 个整数的序列,要求对其重新排序。排序要求:1.奇数在前,偶数在后;2.奇数按从大到小排序;3.偶数按从小到大排序。输入格式输入一行,包含 10 个整数,彼此以一个空格分开,每个整数的范围是大于等于 0,小于等于 100。输出格式按照要求排序后输出一行,包含排序后的 10 个整数,数与数之间以一个空格分开。Sample Input4 7 3 13 11 12 0 47 34 98Sample Output47 13 11 7 3 0 4 12原创 2021-02-03 08:19:02 · 897 阅读 · 2 评论 -
C/C++编程学习 - 第19周 ⑦ 奇数单增序列
题目链接题目描述给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按升序输出。输入格式第1行为 N;第2行为 N 个正整数,其间用空格间隔。输出格式增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。Sample Input101 3 2 6 5 4 9 8 7 10Sample Output1,3,5,7,9思路把奇数存入数组,排序即可。C++代码:#include<bits/stdc++.h>using namespac原创 2021-02-03 08:18:34 · 10879 阅读 · 1 评论 -
C/C++编程学习 - 第19周 ⑥ 整数去重
题目链接题目描述输入n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的整数,只保留该数第一次出现的位置,删除其余位置。输入格式输入包含两行:第一行包含一个正整数n(1 ≤ n ≤ 20000),表示第二行序列中数字的个数;第二行包含n个整数,整数之间以一个空格分开。每个整数大于等于10、小于等于100。输出格式输出只有一行,按照输入的顺序输出其中不重复的数字,整数之间用一个空格分开。Sample Input510 12 93 12 75Sample原创 2021-02-03 08:18:03 · 10798 阅读 · 1 评论 -
C/C++编程学习 - 第19周 ⑤ 直方图
题目链接题目描述给定一个非负整数数组,统计里面每一个数的出现次数。我们只统计到数组里最大的数。假设 Fmax(Fmax<10000)是数组里最大的数,那么我们只统计{0,1,2…Fmax}里每个数出现的次数。输入格式第一行n是数组的大小。1 ≤ n ≤ 10000。紧接着一行是数组的n个元素。输出格式按顺序输出每个数的出现次数,一行一个数。如果没有出现过,则输出0。对于例子中的数组,最大的数是3,因此我们只统计{0,1,2,3}的出现频数。Sample Input51 1 2原创 2021-02-03 08:17:48 · 510 阅读 · 1 评论 -
C/C++编程学习 - 第19周 ④ 蛇形填充数组
题目链接题目描述用数字1,2,3,4,…,nn这n2个数蛇形填充规模为nn的方阵。蛇形填充方法为:对于每一条左下-右上的斜线,从左上到右下依次编号1,2,…,2n-1;按编号从小到大的顺序,将数字从小到大填入各条斜线,其中编号为奇数的从左下向右上填写,编号为偶数的从右上到左下填写。比如n=4时,方阵填充为如下形式:1 2 6 73 5 8 134 9 12 1410 11 15 16输入格式输入一个不大于10的正整数n,表示方阵的行数。输出格式输出该方阵,相邻两个元原创 2021-02-03 08:17:33 · 675 阅读 · 0 评论 -
C/C++编程学习 - 第19周 ③ 不与最大数相同的数字之和
题目链接题目描述输出一个整数数列中不与最大数相同的数字之和。输入格式输入分为两行:第一行为N(N为接下来数的个数,N <= 100);第二行为N个整数,数与数之间以一个空格分开,每个整数的范围是-1000,000到1000,000。输出格式输出为N个数中除去最大数其余数字之和。Sample Input31 2 3Sample Output3思路先找到最大值,再判断是否与最大值相同,如果不同就累加求和。C++代码:#include<bits/stdc++.h&原创 2021-02-03 08:17:01 · 11567 阅读 · 0 评论 -
C/C++编程学习 - 第19周 ② 最大值和最小值的差
题目链接题目描述输出一个整数序列中最大的数和最小的数的差。输入格式第一行为M,表示整数个数,整数个数不会大于10000;第二行为M个整数,以空格隔开,每个整数的绝对值不会大于10000。输出格式输出M个数中最大值和最小值的差。Sample Input52 5 7 4 2Sample Output5思路输入的过程中,不断更新最大值和最小值,最后输出最大值和最小值的差。C++代码:#include<iostream>using namespace std;in原创 2021-02-03 08:16:35 · 1208 阅读 · 0 评论 -
C/C++编程学习 - 第19周 ① 输出最高分数的学生姓名
题目链接题目描述输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。输入格式第一行输入一个正整数N(N <= 100),表示学生人数。接着输入N行,每行格式如下:分数 姓名分数是一个非负整数,且小于等于100;姓名为一个连续的字符串,中间没有空格,长度不超过20。数据保证最高分只有一位同学。输出格式获得最高分数同学的姓名。Sample Input587 lilei99 hanmeimei97 lily96 lucy77 jimSample原创 2021-02-02 11:12:25 · 4156 阅读 · 0 评论 -
C/C++编程学习 - 第18周 ⑪ 查找特定的值
题目链接题目描述在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。输入第一行包含一个正整数n,表示序列中元素个数。1 <= n <= 10000。第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过10000。第三行包含一个整数x,为需要查找的特定值。x的绝对值不超过10000。输出若序列中存在x,输出x第一次出现的下标;否则输出-1。Sample Input52 3 6 7 33Sample Output原创 2021-02-02 10:57:37 · 4959 阅读 · 0 评论