C语言
主要是C语言的题目,包含pintia,天梯赛等一些内容
星辰和他的梦
深夜两点半的夜灯依旧闪烁,凌晨四点的闹钟不止你一个。
展开
-
7-13 二分查找法之过程 (15 分)
本题要求使用二分查找法,在给定的n个升序排列的整数中查找x,并输出查找过程中每一步的中间结果。如果数组a中的元素与x的值相同,输出相应的下标(下标从0开始);如果没有找到,输出“Not Found”。如果输入的n个整数没有按照从小到大的顺序排列,或者出现了相同的数,则输出“Invalid Value”。二分查找法的算法步骤描述如下:设n个元素的数组a已升序排列,用left和right两个变量来表示查找的区间,即在a[left] 〜 a[right]区间去查找x。初始状态为left = 0,right原创 2021-08-07 19:16:44 · 4186 阅读 · 0 评论 -
7-6 递归实现阶乘 (20 分)
输入一个正整数n的值(n不超过20),编程输出n!(n的阶乘)。程序中的整数请定义成long long型。请定义递归函数计算阶乘。输入样例:5结尾无空行输出样例:120结尾无空行代码实现:#include<bits/stdc++.h>using namespace std;int main(){ int i=1; long long sum=1; int n; cin>>n; for(i=1;i<=n;i++) { s原创 2021-12-26 15:59:28 · 1530 阅读 · 1 评论 -
6-7 统计某类完全平方数 (20 分)
统计某类完全平方数 (20 分)本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。函数接口定义:int IsTheNumber ( const int N );其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。裁判测试程序样例:#include <stdio.h>#include <math.h>int IsTheNumber ( const int N );in原创 2021-08-24 00:04:20 · 2121 阅读 · 4 评论 -
使用函数求素数和 (20 分)
使用函数求素数和 (20 分)本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。函数接口定义:int prime( int p );int PrimeSum( int m, int n );其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数PrimeSum返回区间[m,n]内所有素数的和。题目保证用户传入的参数m≤n。裁判测试程序样例:#include <st.原创 2021-08-10 10:39:23 · 2814 阅读 · 0 评论 -
7-25 念数字 (15 分)
念数字 (15 分)输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:0: ling1: yi2: er3: san4: si5: wu6: liu7: qi8: ba9: jiu输入格式:输入在一行中给出一个整数,如:1234。提示:整数包括负数、零和正数。输出格式:在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如yi er san si。输入样例:-600输出样例.原创 2021-08-20 12:27:12 · 512 阅读 · 4 评论 -
7-5 函数的递归调用 (20 分)
有n个人坐在一起,第n个人比第n-1个人大2岁,第n-1个人比第n-2个人大2岁,以此类推,……,第1个人是10岁。请问第n个人年龄多大?输入格式:输入一个整数表示第几个人。输出格式:输出第n个人是m岁。输入样例:5结尾无空行输出样例:Number 5 is 18 age!结尾无空行代码实现:#include<bits/stdc++.h>using namespace std;int a[50];int main(){ int n;原创 2021-12-26 15:58:40 · 1073 阅读 · 0 评论 -
使用函数输出指定范围内的完数 (20 分)
使用函数输出指定范围内的完数 (20 分)本题要求实现一个计算整数因子和的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有完数。所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。函数接口定义:int factorsum( int number );void PrintPN( int m, int n );其中函数factorsum须返回int number的因子和;函数PrintPN要逐行输出给定范围原创 2021-08-11 19:38:12 · 9996 阅读 · 8 评论 -
7-4 括号匹配 (20 分)
给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。输入格式:输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。输出格式:如果括号配对,输出yes,否则输出no。输入样例1:sin(10+20)结尾无空行输出样例1:yes结尾无空行输入样例2:{[}]结尾无空行输出样例2:no结尾无空行代码实现:////原创 2021-12-26 15:57:54 · 1725 阅读 · 0 评论 -
7-13 输出全排列 (20 分)
请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间。输入格式:输入给出正整数n(<10)。输出格式:输出1到n的全排列。每种排列占一行,数字间无空格。排列的输出顺序为字典序,即序列a1,a2,⋯,an排在序列b1,b2,⋯,bn之前,如果存在k使得a1=b1,⋯,ak=bk并且ak+1<bk+1。输入样例:3结尾无空行输出样例:1231322132313..原创 2023-02-23 08:51:22 · 183 阅读 · 0 评论 -
7-23 币值转换 (20 分)
币值转换 (20 分)输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。输入格式:输入在一行中给出一个不超过9位的非负整数。输出格式:在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。输入样例1:813227345输原创 2021-08-19 20:04:18 · 2797 阅读 · 3 评论 -
使用函数统计指定数字的个数 (15 分)
使用函数统计指定数字的个数 (15 分)本题要求实现一个统计整数中指定数字的个数的简单函数。函数接口定义:int CountDigit( int number, int digit );其中number是不超过长整型的整数,digit为[0, 9]区间内的整数。函数CountDigit应返回number中digit出现的次数。裁判测试程序样例:#include <stdio.h>int CountDigit( int number, int digit );i原创 2021-08-10 10:57:51 · 11030 阅读 · 10 评论 -
7-2 约瑟夫环 (20 分)
有n个人围成一圈(编号为1~n),从第1号开始进行1、2、3报数,凡报3者就退出,下一个人又从1开始报数……直到最后只剩下一个人时为止。请问此人原来的位置是多少号?输入格式:测试数据有多组,处理到文件尾。每组测试输入一个整数n(5≤n≤100)。输出格式:对于每组测试,输出最后剩下那个人的编号。输入样例:102869输出样例:42368代码实现: #include<bits/stdc++.h> using namespace std;原创 2021-12-26 15:52:36 · 1295 阅读 · 0 评论 -
使用函数输出指定范围内的Fibonacci数 (20 分)
使用函数输出指定范围内的Fibonacci数 (20 分)本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。函数接口定义:int fib( int n );void PrintFN( int m, int n );其中函数fib须返回第n项Fibonacci数;函数PrintFN要在一行中输出给原创 2021-08-12 16:08:48 · 3072 阅读 · 0 评论 -
7-26 单词长度 (15 分)
单词长度 (15 分)你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it's算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。输入格式:输入在一行中给出一行文本,以.结束提示:用scanf("%c",...);来读入一个字符,直到读到.为止。输出格式:在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。输入样例:It's great to原创 2021-08-20 15:11:12 · 6855 阅读 · 13 评论 -
7-28 猴子选大王 (20 分)
猴子选大王 (20 分)一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?输入格式:输入在一行中给一个正整数N(≤1000)。输出格式:在一行中输出当选猴王的编号。输入样例:11输出样例:7分析:这道题目跟我们之前写过的报数差不多,但是输出不一样,我转载 2021-08-22 15:51:58 · 1945 阅读 · 0 评论 -
练习8-8 移动字母 (10 分)
移动字母 (10 分)本题要求编写函数,将输入字符串的前3个字符移到最后。函数接口定义:void Shift( char s[] );其中char s[]是用户传入的字符串,题目保证其长度不小于3;函数Shift须将按照要求变换后的字符串仍然存在s[]里。裁判测试程序样例:#include <stdio.h>#include <string.h>#define MAXS 10void Shift( char s[] );void GetSt.原创 2021-08-13 15:33:00 · 5480 阅读 · 0 评论 -
7-12 求幂级数展开的部分和 (20 分)
已知函数ex可以展开为幂级数1+x+x2/2!+x3/3!+⋯+xk/k!+⋯。现给定一个实数x,要求利用此幂级数部分和求ex的近似值,求和一直继续到最后一项的绝对值小于0.00001。输入格式:输入在一行中给出一个实数x∈[0,5]。输出格式:在一行中输出满足条件的幂级数部分和,保留小数点后四位。输入样例:1.2结尾无空行输出样例:3.3201结尾无空行代码实现:#include<bits/stdc++.h>using namespace原创 2021-12-26 16:05:02 · 661 阅读 · 0 评论 -
7-11 递归实现辗转相除法求最大约数的函数 (20 分)
编写函数,函数的形式参数为两个正整数a和b,函数返回a与b的最大公约数,要求用递归方式实现。主函数中输入两个整数m和n,输出m和n的最大公约数。输入样例:36 24结尾无空行输出样例:12结尾无空行代码实现:#include <stdio.h>int Gcd(int a, int b);int main(){ int a, b, c; scanf("%d %d", &a, &b); c = Gcd(a,b);原创 2021-12-26 16:03:59 · 1024 阅读 · 0 评论 -
冒泡法排序之过程
本题要求使用冒泡法排序,将给定的n个整数从小到大排序后输出,并输出排序过程中每一步的中间结果。冒泡排序的算法步骤描述如下:第1步:在未排序的n个数(a[0]〜a[n−1])中,从a[0]起,依次比较相邻的两个数,若邻接元素不符合次序要求,则对它们进行交换。本次操作后,数组中的最大元素“冒泡”到a[n−1];第2步:在剩下未排序的n−1个数(a[0]〜a[n−2])中,从a[0]起,依次比较相邻的两个数,若邻接元素不符合次序要求,则对它们进行交换。本次操作后,a[0]〜a[n−2]中的最...原创 2021-08-07 20:24:42 · 5661 阅读 · 0 评论 -
7-15 计算圆周率 (15 分)
计算圆周率 (15 分)根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。2π=1+31+3×52!+3×5×73!+⋯+3×5×7×⋯×(2n+1)n!+⋯输入格式:输入在一行中给出小于1的阈值。输出格式:在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。输入样例:0.01输出样例:3.132157分析:本题主要是根据给与计算式的最后一项的表达式来进行计算。java代码实现:import java.util.Scanne原创 2021-08-17 12:00:25 · 4532 阅读 · 0 评论 -
L1-002 打印沙漏 (20 分)
打印沙漏 (20 分)本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印***** *** * ********所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。输出格式:首转载 2021-08-26 14:45:48 · 6827 阅读 · 6 评论 -
7-3 英文单词排序 (20 分)
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。输入格式:输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。输出格式:输出为排序后的结果,每个单词后面都额外输出一个空格。输入样例:blueredyellowgreenpurple#结尾无空行输出样例:red blue green yellow purple 结尾无原创 2021-12-26 15:56:50 · 1095 阅读 · 0 评论 -
使用函数求特殊a串数列和 (20 分)
使用函数求特殊a串数列和 (20 分)给定两个均不超过9的正整数a和n,要求编写函数求a+aa+aaa++⋯+aa⋯a(n个a)之和。函数接口定义:int fn( int a, int n );int SumA( int a, int n );其中函数fn须返回的是n个a组成的数字;SumA返回要求的和。裁判测试程序样例:#include <stdio.h>int fn( int a, int n );int SumA( int a, int n );in原创 2021-08-11 12:17:52 · 1673 阅读 · 0 评论 -
7-30 字符串的冒泡排序 (20 分)
字符串的冒泡排序 (20 分)我们已经知道了将N个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的K(<N),输出扫描完第K遍后的中间结果序列。输入格式:输入在第1行中给出N和K(1≤K<N≤100),此后N行,每行包含一个长度不超过10的、仅由小写英文字母组成的非空字符串。输出格式:输出冒泡排序法扫描完第K遍后的中间结果序列,每行包含一个字符串。输入样例:6 2bestcateastafreeday输出样例:be原创 2021-08-24 18:09:48 · 5016 阅读 · 2 评论 -
7-16 求符合给定条件的整数集 (15 分)
求符合给定条件的整数集 (15 分)给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。输入格式:输入在一行中给出A。输出格式:输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。输入样例:2输出样例:234 235 243 245 253 254324 325 342 345 352 354423 425 432 435 452 453523 524 532 534 542 54原创 2021-08-17 12:36:19 · 3698 阅读 · 0 评论 -
方阵转置
方阵转置 (15 分)本题要求编写程序,将一个给定的n×n方阵转置(行列互换)后输出。输入格式:输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。输出格式:输出转置后的n行n列矩阵,每个数占4位。输入样例:31 2 34 5 67 8 9输出样例: 1 4 7 2 5 8 3 6 9分析:本题主要对理解矩阵转置的含义,对于数组来说就是行下标和列下标交换,然后在输出即可。代码实..原创 2021-08-08 11:11:00 · 3221 阅读 · 0 评论 -
7-17 爬动的蠕虫 (15 分)
爬动的蠕虫 (15 分)一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。输入格式:输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100。输出格式:在一行中输出蠕虫爬.原创 2021-08-17 16:40:07 · 277 阅读 · 0 评论 -
7-1 寻找第k小的数 (20 分)
7-1 寻找第k小的数 (20 分)给定若干整数,请设计一个高效的算法,确定第k小的数。输入格式:测试数据有多组,处理到文件尾。每组测试数据的第1行输入2个整数n,k(1≤k≤n≤1000000)。第2行输入n个整数,每个数据的取值范围在0到1000000之间。输出格式:对于每组测试,输出第k小的数。输入样例:5 31 2 2 2 19 31 2 3 4 5 6 9 8 7输出样例:23提示:如果提交后超时,请注意需要设计的是高效的算法!如果你初学原创 2021-12-26 15:49:53 · 3681 阅读 · 0 评论 -
使用函数输出一个整数的逆序数 (20 分)
使用函数输出一个整数的逆序数 (20 分)本题要求实现一个求整数的逆序数的简单函数。函数接口定义:int reverse( int number );其中函数reverse须返回用户传入的整型number的逆序数。裁判测试程序样例:#include <stdio.h>int reverse( int number );int main(){ int n; scanf("%d", &n); printf("%d\n", re.原创 2021-08-12 19:03:04 · 5418 阅读 · 1 评论 -
习题8-4 报数 (20 分)
报数 (20 分)报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(<n)的人退出圈子;下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。本题要求编写函数,给出每个人的退出顺序编号。函数接口定义:void CountOff( int n, int m, int out[] );其中n是初始人数;m是游戏规定的退出位次(保证为小于n的正整数)。函数CountOff将每个人的退出顺序编号存在数组out[]中。因为C语言数组下.原创 2021-08-13 17:56:49 · 5973 阅读 · 0 评论 -
7-10 利用STL比较数据大小并排序 (20 分)
本题目要求读入n个整数(输入数字个数根据输入时随机确定,以输入一个非数字的值作为输入结束标志),利用STL比较数据大小并排序(由小到大升序),然后输出排序后的数据。输入格式:输入在一行中依次输入整数值,每个数字之间用空格分隔,输入数字个数根据输入时随机确定,以输入一个非数字的值作为输入结束标志。输出格式:先输出一段提示“从标准设备读入数据,直到输入是非整型数据为止”,在输入一组数字后,输出排序后的数字,在一行中由小到大依次输出所有值,数字之间用空格分隔。输入样例:10 3 -2 8原创 2021-12-26 16:03:12 · 1121 阅读 · 0 评论 -
7-9 递归实现逆序输出整数 (20 分)
本题目要求读入1个正整数n,然后编写递归函数reverse(int n)实现将该正整数逆序输出。输入格式:输入在一行中给出1个正整数n。输出格式:对每一组输入,在一行中输出n的逆序数。输入样例:12345结尾无空行输出样例:54321结尾无空行代码实现:#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; while(n!=0) {原创 2021-12-26 16:02:22 · 1243 阅读 · 0 评论 -
使用函数验证哥德巴赫猜想 (20 分)
使用函数验证哥德巴赫猜想 (20 分)本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。函数接口定义:int prime( int p );void Goldbach( int n );其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解,其中p≤q均为素数。又因为这样的分解不唯一(例如24可以原创 2021-08-12 17:54:54 · 4560 阅读 · 0 评论 -
求矩阵的最大值(设惟一)
求矩阵的最大值(设惟一)本题要求编写程序,求一个给定的m×n矩阵的最大值以及位置。题目保证最大值惟一。输入格式:输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间以空格分隔。输出格式:输出在第一行中输出最大值,在第二行中按照“行下标 列下标”(下标从0开始)的格式输出最大值的位置。输入样例:3 26 3 23 -96 -1输出样例:231 0分析:由题目很直观的看出需要使用二维数组,是一个简单地求解二维数组的最大值。根据本.原创 2021-08-07 23:13:07 · 3255 阅读 · 0 评论 -
6-2 多项式求值 (15 分)
多项式求值 (15 分)函数接口定义:double f( int n, double a[], double x );其中n是多项式的阶数,a[]中存储系数,x是给定点。函数须返回多项式f(x)的值。裁判测试程序样例:#include <stdio.h>#define MAXN 10double f( int n, double a[], double x );int main(){ int n, i; double a[MAXN], .原创 2021-08-21 20:13:06 · 3852 阅读 · 7 评论 -
6-9 统计个位数字 (15 分)
统计个位数字 (15 分)本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-21252中,2出现了3次,则该函数应该返回3。函数接口定义:int Count_Digit ( const int N, const int D );其中N和D都是用户传入的参数。N的值不超过int的范围;D是[0, 9]区间内的个位数。函数须返回N中D出现的次数。裁判测试程序样例:#include <stdio.h>int Count_Digit ( const int.原创 2021-08-24 00:37:52 · 579 阅读 · 6 评论 -
数组循环右移
本题要求编写程序,将数组a中的每个元素循环向右移m个位置,即将数组a中元素由a[0]、a[1]、⋯、a[n−1]变换为第a[n−m]、a[n−m+1]、⋯、a[n−1]、a[0]、a[1]、⋯、a[n−m−1]。输入格式:输入第1行给出n(1≤n≤100)和m(1≤n≤100),第2行输入n个整数,之间用空格分隔。输出格式:在一行中输出循环移位后的数组元素,每个元素后有一个空格。输入样例:3 21 2 3输出样例:2 3 1 代码实现:#include&.原创 2021-08-07 22:33:21 · 5752 阅读 · 0 评论 -
计算天数(15分)
计算天数 (15 分)本题要求编写程序计算某年某月某日是该年中的第几天。输入格式:输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。输出格式:在一行输出日期是该年中的第几天。输入样例1:2009/03/02输出样例1:61输入样例2:2000/03/02输出样例2:62分析:本题主要是对闰年和非闰年的理解。代码实现:.原创 2021-08-08 12:09:12 · 1752 阅读 · 0 评论 -
7-33 有理数加法 (15 分)
有理数加法 (15 分)本题要求编写程序,计算两个有理数的和。输入格式:输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。输出格式:在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。输入样例1:1/3 1/6输出样例1:1/2输入样例2:4/3 2/3输出样例2:2总结:本题需要求分子分母的最大公约数进行最终的化简。最后对输出格式进行原创 2021-08-24 21:00:45 · 555 阅读 · 0 评论 -
使用函数输出水仙花数 (20 分)
使用函数输出水仙花数 (20 分)水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。函数接口定义:int narcissistic( int number );void PrintN( int m, int n );函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。函数Pr原创 2021-08-10 21:09:18 · 20374 阅读 · 5 评论