舟桥居士
写这个只为证明我不懒!
展开
-
C:1102火车票退票费计算(函数专题)
题目描述:2013年起,火车票退票费比例下调:票面乘车站开车时间前48小时以上的按票价5%计退票费。同时,车票退票费的计算方法不再四舍五入到元为单位,而是以5角为单位:尾数小于0.25元的舍去、不小于0.25元且小于0.75元的计为0.5元、不小于0.75元的进为1元。编写一个函数,计算退票费,假定退票时间举例开车时间在48小时以上。函数原型如下:double CancelFee(double price);输入:输入一个实数,表示火车票票面价格。输出:输出一个实数,表示退票费,结果保留一位小数。样例原创 2021-10-30 11:32:53 · 910 阅读 · 1 评论 -
C:围圈报数,内蒙古,892,1709,程序设计
问题描述:有n个人围成一圈,顺序排号。现从第i个人开始,由1至k不断报数,凡报到k的人出列。重复报数过程,直到所有人都出列为止。请编写程序模拟这n个人出列的顺序。思路:将n个人排列在数组中,将位置序号1~n存放到对应数据元素中a[0~n-1],因此第i个人在数组a[i-1]的位置上;从指定的第i个人(a[i-1])开始从1到k循环报数,只要没有退出就参与报数,直到有人报到k,输出存放的位置,将数组元素置为0表示已退出,退出人数加1;从下一没退出的人重新开始报数;当超过数组末尾时,i置为0从数组头开始再循原创 2021-10-27 19:57:42 · 296 阅读 · 2 评论 -
C:字母的H图形
使用小写字母组成图形H,要求:输入个数不大于26。例如:输入n=10,输出:a e ib d f h jc g代码:#include <stdio.h>int main(){ int n,i=1,x=0,y=0,j; char ch='a',c[3][13]={' '}; scanf("%d",&n); if(n>26||n<=0) return 0; c[x][y]=ch; while(n>i){ for(j原创 2021-12-27 00:00:00 · 634 阅读 · 0 评论 -
C:基本文件操作
打开文件A,B,将内容排序后存入新文件C#include<stdio.h>#include<string.h>int BubbleSort(char a[],int n){ int i,j; for(i=0;i<n-1;i++){ for(j=1;j<n-i;j++){ if(a[j]<a[j-1]){ int tem=a[j]; a[j]=a[j-1]; a[j-1]=tem; } } } }int m原创 2021-12-27 00:15:00 · 276 阅读 · 0 评论 -
C:递归实现十进制转换其他进制
#include <stdio.h>int N;int fun(int n){ int a; if(n<N) printf("%c", (a=n%N-10) >= 0 ? a+'A' : n%N+'0' ); else { fun(n/N); printf("%c", (a=n%N-10) >= 0? a+'A' : n%N+'0' ); } }int main(){ int n; scanf("%d %d",&n,&N); f.原创 2021-11-23 13:32:03 · 1112 阅读 · 1 评论 -
C:简易计算器,内蒙古,892,1908,程序设计
#include<stdio.h>int main(){ int ch,num1,num2; while(printf("请输入指令,1-加,2-减,3-乘,4-除,5-退出\n"),scanf("%d",&ch),ch!=5){ int sum; scanf("%d %d",&num1,&num2); switch(ch){ case 1: sum=num1+num2;break; case 2: sum=num1-num2;break;原创 2021-11-21 12:17:14 · 202 阅读 · 0 评论 -
C:1113递归调用的次数统计(函数专题)
题目描述:如下程序的功能是计算 Fibonacci数列的第n项。函数fib()是一个递归函数。请你改写该程序,计算第n项的同时,统计调用了多少次函数fib(包括main()对fib()的调用)。输入:输入一个正整数n。输出:输出包含两行,第一行是一个整数,表示第n项的值;第二行输出递归调用了多少次,具体格式见输出样例。样例输入20样例输出6765递归调用了13529次思路:关键在设置一个全局变量,每次调用fib()就自加代码:#include<stdio.h>int i=0原创 2021-11-18 00:02:41 · 519 阅读 · 0 评论 -
C:蛇形方阵(建议看改进版)
问题描述: 输入一个数n(要求该数可开平方),生成回字蛇形方阵。如:输入25,输出:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一、初版(方阵):思路: 撇开第一行不看,可以观察到明显规律代码:#include<stdio.h>#include<math.h>int main(){ int n,k,d=0,i,j,n原创 2021-11-17 23:33:59 · 730 阅读 · 0 评论 -
C:统计单词个数,内蒙古,892,1803,程序设计
问题描述:输入一个长度不大于100的字符串(由字母和空格组成),输出串中包含的单词个数。如不存在单词则输出0.例如:字符串“hello world”,则输出结果为2。思路:类似于判定回文数、判定素数,实质是判定当前子串是否为单词,若是,遍历完该单词,单词数目加一。注意,主串游标需要回退一位。代码:#include<stdio.h>int main(){ int i=0,flag,num=0;//flag用来判定是否有单词出现; char str[101]; gets(str);原创 2021-11-17 23:15:07 · 305 阅读 · 0 评论 -
C:列最大值和,内蒙古,892,1804,程序设计
问题描述:输入整数N(N<=2<=10),再输入NN方阵中的全部数据,计算方正每列元素的最大值之和,并输出。例如:44的方阵数据如下:1 2 3 45 6 7 26 7 8 87 6 4 1则各列的最大值分别为 7 7 8 8,则输出的结果为30代码:#include<stdio.h>int main(){ int N,i,j,max,sum=0; scanf("%d",&N); int a[N][N]; for(i=0;i<N;i++){原创 2021-11-17 23:13:18 · 136 阅读 · 0 评论 -
C:2月29统计,内蒙古,892,1806,程序设计
问题描述:输入小李的出生日期,计算他从出生到今天共经历了多少个2月29日,输出计算结果。不需要考虑输入的日期不合法或不在要求范围之内的情况。例如:输入 2012 3 1,则输出结果为1代码:#include <stdio.h>#include <time.h>int main(){ int y,m,d,num=0; scanf("%d %d %d",&y,&m,&d); time_t timer;// 这是一个适合存储日历时间类型; str原创 2021-11-17 23:11:55 · 151 阅读 · 0 评论 -
C:计算时间差,内蒙古,892,1707,程序设计
题目:某学者去国外求学,假定离开日期为公元A年B月C日,返回日期为公元X年Y月Z日。请计算求学的总天数(含离开和返回当天)。思路:将A年至X的前一年的天数累加,再减去A年里B月C日之前多加的天数,再加上X年里Y月Z日之前没加天数。注意闰年的问题(闰年的条件:year%40&&year%100!=0||year%4000)。代码:#include<stdio.h>int main(){ int fun(int y,int n);//函数声明 int A,B,C,X,Y,原创 2021-11-17 23:08:31 · 199 阅读 · 0 评论 -
C:9进制转19进制,内蒙古,892,1804,程序设计
问题描述:输入1个9进制数字串,将其转化为19进制并输出。依次使用小写字母a…i表示数字10…18。假设将该数字转化为10进制时,存储于int型变量不溢出。例如:输入40,则输出结果为1h。思路:先转10进制,再转19进制代码:#include <stdio.h>#include <math.h>#include <string.h>int convertD(char s[]){//返回十进制数 int T=0,i=0,num=strlen(s); w原创 2021-11-17 23:03:29 · 309 阅读 · 0 评论 -
C:按年龄输出姓名,内蒙古,892,1807,程序设计
问题描述:班级共有50位同学,依次输入每位同学的姓名和生日。姓名中不含有空格,生日的输入格式yyyy/mm/dd(yyyy代表出生年,mm代表出生月,dd代表出生日)。按照年龄从大到小的顺序输出每位同学的姓名,每个名字占一行。例如:输入“李强 1995/08/15”,输出“李强…”。思路:首先明确出生年月数值越小,年龄就越大,要将出生日期小的排在前; 这种题必然采用结构体变量;宏定义N为50,声明结构体数组大小为N,进行N次输入操作; 在输入时采用插入解决排序问题;关于插入位置,在已插入元素中用i原创 2021-11-17 23:01:11 · 318 阅读 · 0 评论 -
C:数字字符求和,内蒙古,892,1907,程序设计
问题描述:输入一行字符(个数<=100),查找其中的数字字符,输出数字字符组成的数字之和。注意,数字字符可能组成两位或两位以上的数字。例如:输入a11b22c3, 则输出36。注:这道题需要考虑大数加法运算!!!稍后更新代码:#include <stdio.h>#include <ctype.h>#include <string.h>#include <math.h>int main(){ char ch[100]; int i=0,j原创 2021-11-16 19:52:54 · 343 阅读 · 0 评论 -
C:求素数和,内蒙古,892,1906,程序设计
问题描述:输入正整数n,输出比n大的5个最小素数之和。素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。例如:输入1,则输出28。代码:#include <stdio.h>int fun(int n){ for(int i=2;i<=n/2;i++)//此处判断条件一定要“i<=n/2”,要不会误判4!!! if(n%i==0) return 0; return 1;}int main(){ int n,num=1,sum=0; scanf("%d原创 2021-11-16 18:41:38 · 189 阅读 · 0 评论 -
C:自加自减
代码:#include <stdio.h>#include <stdlib.h>int main(){ int i=3; printf("%d\n",(i++,i++,i++));//结果为5 注:i在遇到每个逗号后,认为本计算单位已经结束,i这时候自加。 printf("%d\n\n",i);//结果为6 i=3; printf("%d\n\n",(++i,i++,i+10));//结果为15 i=3; printf("%d\n",((.原创 2021-10-30 11:50:24 · 96 阅读 · 0 评论 -
学习小技巧
各排序的复杂度简选方,堆并积,插冒 n n 方,快排对对方,快对基 r 并空 n,插冒归基稳,快排优,希坏方,基数O(d(n+r))。常见时间复杂度(升序)1 对 n 积 方 立 指 n阶 n次关键路径求法事件最早发生时间:加过来最大事件最晚发生时间:减回去最小活动最早发生时间:起点值最大活动最晚发生时间:终点最晚减自身最小生成树普点克边C语言运算符优先级圆方括箭头点>非反自负类指(址)长>乘除余>加减>移>关>等否>与>异原创 2021-10-29 10:55:18 · 119 阅读 · 0 评论 -
C:1094统计元音(函数专题)
题目描述输入一个字符串,统计其中元音字母的个数。要求使用函数vowel()用来判断是否为元音,其余功能在main()函数中实现。int vowel(char ch){//如果ch是元音,返回1,否则返回0}本题如果是C/C++代码提交,只需要提交vowel函数的定义部分,提交其它内容,编译出错。输入输入一个字符串,长度不超过1000,以回车符结束。输出输出一个整数,表示元音字母个数。输出单独占一行。样例输入Hello world!样例输出3代码:#includ...原创 2021-10-29 00:10:46 · 831 阅读 · 0 评论 -
C:1093验证哥德巴赫猜想(函数专题)
1093: 验证哥德巴赫猜想(函数专题)题目描述哥德巴赫猜想大家都知道一点吧。我们现在不是想证明这个结论,而是对于任给的一个不小于6的偶数,来寻找和等于该偶数的所有素数对。做好了这件实事,就能说明这个猜想是成立的。要求程序定义一个prime()函数和一个main()函数,prime()函数判断一个整数n是否是素数,其余功能在main()函数中实现。int prime(int n){ //判断n是否为素数, 若n为素数,本函数返回1,否则返回0}输入一个偶数M (M是6到1000000之间...原创 2021-10-28 23:44:36 · 694 阅读 · 0 评论 -
C:1096水仙花数(函数专题)
题目描述“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。现在要求输出所有在m和n范围内的水仙花数。要求程序定义一个narcissus()函数和一个main()函数,narcissus()函数判断一个整数n是否为水鲜花数,其余功能在main()函数中实现。int narcissus(int n){ //判断n是否为水仙花数, 若是函数返回1,否则返回0}输入输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n&l...原创 2021-10-29 23:29:01 · 375 阅读 · 0 评论 -
C:1083数值统计(多实例测试)
1083: 数值统计(多实例测试)题目描述统计给定的n个数中,负数、零和正数的个数输入输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。输出对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。样例输入6 0 1 2 3 -1 05 1 2 3 4 0.50样例输出1 2 30 0 5做法一:思路:一次性全部输入,处理完,一次性全部输出#in原创 2021-10-28 21:04:15 · 272 阅读 · 0 评论 -
C:1104求因子和(函数专题)
题目描述:输入正整数n(2<=n<=1000),计算并输出n的所有正因子(包括1,不包括自身)之和。要求程序定义一个FacSum ()函数和一个main()函数,FacSum ()函数计算并返回n的所有正因子之和,其余功能在main()函数中实现。int FacSum(int n){//计算n的所有正因子(包括1,不包括自身)之和sum,本函数返回sum}输入:输入正整数n(2<=n<=1000)。输出:输出n的所有正因子(不包括自身)之和。样例输入100...原创 2021-10-30 11:46:43 · 1102 阅读 · 0 评论 -
C:1106回文数(函数专题)
题目描述:一个正整数,如果从左向 右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数。输入两个整数m和n(m<n),输出区间[m,n]之间的回文数。输入:输入两个正整数m和n,输入保证m<n。输出:按从小到大的顺序,输出m到n之间的回文数,每个数后面有一个空格。样例输入100 200样例输出101 111 121 131 141 151 161 171 181 191思路:将n从低位到高位逐位拆解,并存放入数组中;在将数组中元素乘对应位权,求和;将和与作比较原创 2021-10-30 20:31:35 · 696 阅读 · 0 评论 -
C:1101逆序数字(函数专题)
题目描述:输入一个正整数n,计算n的逆序数m,输出m与n的和。要求程序定义一个inverse()函数和一个main()函数,inverse()函数接收一个整数值,返回这个数中数字逆序后的结果值。例如,给定数7631,函数返回1367 。int inverse(int n){ //计算并返回n的逆序数字}输入:一个正整数n,输入保证计算结果在int范围内。输出:输出一个整数,n与n的逆序数的和。输出占一行。样例输入1780样例输出2651思路:将n从低到高依次分解存放数组,再逐一取...原创 2021-10-30 11:23:32 · 430 阅读 · 0 评论 -
C:1107回文数猜想(函数专题)
题目描述:一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数。任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数,则重复上述步骤,一直到获得回文数为止。例如:68变成154(68+86),再变成605(154+451),最后变成1111(605+506),而1111是回文数。于是有数学家提出一个猜想:不论开始是什么正整数,在经过有限次正序数和倒序数相加的步骤后,都会得到一个回文数。至今为止还不知道这个猜想是对还是错。现在请你编程序验证之。原创 2021-10-30 21:21:41 · 306 阅读 · 0 评论 -
C:1109数根(函数专题)
题目描述:输入一个正整数,输出该数的数根。数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根。如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。比如,对于24来说,把2和4相加得到6,由于6是一位数,因此6是24的数根。再比如39,把3和9加起来得到12,由于12不是一位数,因此还得把1和2加起来,最后得到3,这是一个一位数,因此3是39的数根。要求使用函数,定义函数digitSum(int n)求n的各位数字和,其余功原创 2021-10-31 12:21:05 · 263 阅读 · 0 评论 -
C:1108打印数字图形(函数专题)
题目描述:从键盘输入一个整数n(1≤n≤9),打印出指定的数字图形。要求在程序中定义并调用如下函数:PrintSpace(m)用来输出m个空格;PrintDigit(m)来输出一行中的数字串"12...m...21"(该行中的最大数字是m)。函数原型如下:void PrintDigit(int m);void PrintSpace(int m);输入:正整数n(1≤n≤9)。输出:指定数字图形。样例输入5样例输出 1 121 12321 123432...原创 2021-10-31 12:54:02 · 721 阅读 · 0 评论 -
C:多个整数的逆序数的逆序输出(函数专题)
题目描述:输入n和n个整数,以与输入顺序相反的顺序输出这n个整数。要求不使用数组,而使用递归函数实现。递归函数实现过程如下:输入:输入有两行,第一行是一个正整数n,第二行有n个整数,整数之间由空格隔开。输出:输出n个整数,顺序与输入顺序相反,每个整数后有一个空格。样例输入511 22 33 44 55样例输出55 44 33 22 11代码:#include <stdio.h>#include <stdlib.h>#include <math.h>原创 2021-10-31 14:07:23 · 1115 阅读 · 0 评论 -
C:1111多个整数的逆序输出(函数专题)
题目描述:输入n和n个整数,以与输入顺序相反的顺序输出这n个整数。要求不使用数组,而使用递归函数实现。递归函数实现过程如下:void inverse(int n){if(n >1) { (1) 读入一个整数,存入num; (2) 将后面的n-1个数逆序输出: inverse(n-1); (3) 输出num;}if( n == 1) 直接输...原创 2021-10-31 19:12:59 · 292 阅读 · 0 评论 -
C:1114逆序
题目描述输入n(1<=n<=10)和n个整数,逆序输出这n个整数。输入输入n(1<=n<=10),然后输入n个整数。输出逆序输出这n个整数,每个整数占4列,右对齐。样例输入64 5 6 1 2 3 样例输出 3 2 1 6 5 4代码:#include<stdio.h>int inverse(int);int main(){ int n; scanf("%d",&n); i...原创 2021-10-31 22:03:44 · 212 阅读 · 0 评论 -
C:1112进制转换(函数专题)
题目描述:输入一个十进制整数n,输出对应的二进制整数。常用的转换方法为“除2取余,倒序排列”。将一个十进制数除以2,得到余数和商,将得到的商再除以2,依次类推,直到商等于0为止,倒取除得的余数,即为所求的二进制数。输入:输入一个正整数n。输出:输出n对应的二进制数。样例输入52样例输出110100代码:#include <stdio.h>int main(){ int printsec(int); int n; scanf("%d",&n); print原创 2021-10-31 21:37:18 · 379 阅读 · 0 评论 -
C:1077空心菱形
题目描述:输入一个整数n,(1<=n<=20),输出一个空心菱形,其中每个边由n个’*'组成。输入:输入包含一个整数,n(1<=n<=20)输出:输出一个空心菱形,每个边由n个*'组成样例输入5样例输出 * * * * ** ** ** * * * * * *思路:找规律,将图像分为上下两半部分输出;注意行数、每行字符个数、*的位置之间的关系类似:C:1108打印数字图形(函数专题)...原创 2021-11-01 14:09:31 · 179 阅读 · 0 评论 -
C:1120最值交换
题目描述:有一个长度为n的整数序列。请写一个程序,先把序列中的最小值与第一个数交换,再把最大值与最后一个数交换。输出转换好的序列。 分别编写两个函数MinIndex()和MaxIndex()来计算最小值下标和最大值下标。int MinIndex(int a[], int n); //函数返回数组a中最小元素的下标int MaxIndex(int a[], int n); //函数返回数组a中最大元素的下标数组元素的输出调用函数PrintArr()。输入:输入包括两行。第一行为正整数n(1≤n≤10..原创 2021-11-02 22:39:43 · 217 阅读 · 0 评论 -
C:判断回文数,内蒙古,892,1802,程序设计
问题描述:编程题:输入一组正整数,判断输入的数字是否为回文数,是则输出该数。输入-1时结束。提示:若一个正整数(首位不为0),从左向右读与从右向左读是一样的,则称作回文数,例如1,11,121,1221,12321 等都是回文数。例如:输入 121 1212 22 2,则输出结果为 121 22 2提示:不需要输入全部数据之后再统一处理,例如,输入1212时,121已输出。思路:将数字逐位拆分,首尾对照,全部相同输出。代码:#include <stdio.h>int main原创 2021-11-09 14:07:57 · 118 阅读 · 0 评论 -
C:输出素数,内蒙古,892,1801,程序设计
问题描述:输入a,b,输出a,b之间的所有素数。每五个素数换一行。代码:#include<stdio.h>int main(){ int a,b,i,j=0; scanf("%d %d",&a,&b); while(a<=b){ int flag=1;//每轮循环都要重置flag,要分清flag位置。 for(i=2;i<a/2;i++){ if(a%i==0){ flag=0; } } if(flag){原创 2021-11-09 13:35:36 · 104 阅读 · 0 评论 -
C:1067有问题的里程表
题目描述:某辆汽车有一个里程表,该里程表可以显示一个整数,为该车走过的公里数。然而这个里程表有个毛病:它总是从3变到5,而跳过数字4,里程表所有位(个位、 十位、百位等)上的数字都是如此。例如,如果里程表显示339,汽车走过1公里之后,该里程表显示350。输入:输入一个整数num,表示里程表显示的数值,1 < num < 1000,且一定不含整数4。输出:输出一个整数,为该汽车实际行驶的公里数。例如,如果该里程表显示55,则实际走过的公里 数是40。样例输入106样例输出86思路:原创 2021-11-07 13:34:08 · 318 阅读 · 0 评论 -
C:大数加法
问题描述:两个很大很大的数相加,例如:111111111111111111111111111111111111111111111111111111111111111111111111111111111111+1111111111111111111111111111111111111111111111111111111111111111111111111111111111110思路:输入俩数,逆置,逐位相加求和存到结果数组,逐位进位,逆序输出;代码:#include <stdi原创 2021-11-07 13:07:41 · 114 阅读 · 0 评论 -
C:1123zuijia校友
题目描述:北京校友会每年举办两次,所有校友都有校友编号,每次到会的校友都在签到簿上写下自己的编号和姓名,在校友会成立5周年的聚会上将颁发“最佳校友奖”,该奖项颁发给到会次数最多的校友。现在请你编写程序,找出这个奖项的得主。若有多个校友并列第一,则均可获奖。 输入:输入若干个整数,表示签到簿上的校友编号,所有编号均为0~99的整数,以一个负数作为输入结束的标志。输出:输出出现次数最多的编号。若获奖选手有多个,则按从小到大的顺序输出选手编号,用空格隔开。样例输入4 5 3 1 3 4 2 7 -1样.原创 2021-11-03 18:44:03 · 166 阅读 · 0 评论 -
C:1124个有序数组合并
题目描述:已知数组a中有m个按升序序排列的元素,数组b中有n个降序排列的元素,编程将a与b中的所有元素按降序存入数组c中。输入:输入有两行,第一行首先是一个正整数m,然后是m个整数;第二行首先是一个正整数n,然后是n个整数,m, n均小于等于1000000。输出:输出合并后的m+n个整数,数据之间用空格隔开。输出占一行。样例输入4 1 2 5 73 6 4 2样例输出7 6 5 4 2 2 1提示:试图排序的孩子们要小心了~~~~~~注意事项:(1)最重要:可以对输入型变量进行加减原创 2021-11-03 19:22:37 · 127 阅读 · 0 评论