
C语言程序设计题
绝地反击T
世界那么大,我想去看看。
展开
-
自私的数
在1949年印度数学家D.R. Daprekar发现了一类称作Self-Numbers的数。对于每一个正整数n,我们定义d(n)为n加上它每一位数字的和。例如,d(75)=75+7+5=87。给定任意正整数n作为一个起点,都能构造出一个无限递增的序列:n,d(n), d(d(n)), d(d(d(n))), . . . 例如,如果你从33开始,下一个数是33+3+3=39,再下一个为39+3+9=原创 2015-04-10 11:53:54 · 1197 阅读 · 0 评论 -
在一个长度为n(n < 1000)的整数序列中,判断是否存在某两个元素之和为k。
在一个长度为n(n 输入第一行输入序列的长度n和k,用空格分开。第二行输入序列中的n个整数,用空格分开。输出如果存在某两个元素的和为k,则输出yes,否则输出no。样例输入9 101 2 3 4 5 6 7 8 9样例输出yes#includeint main(){ int n,k; int i,j; int a[100]; scanf("%d%d",&原创 2015-04-10 11:12:21 · 7617 阅读 · 2 评论 -
尊老爱幼
4号病房一共住着 n 位病人(n是正整数,且n 今天他们都要进行体检,但同时只能有一个病人接受检查??前一个病人全部检查完了,下一个病人才能开始体检。 这 n 位病人都特别尊崇老爱幼的传统美德,决定让最老的病人第一个检查,最年轻的病人第二个检查, 接着是第二老的病人 、第二年轻的病人,第三老的病人……以此类推。 病人们将排序的任务交给了你,他们会告诉你他们各自的年龄,原创 2015-04-10 10:40:27 · 907 阅读 · 1 评论 -
猴子选大王
方法一:#include int main(){ int a[15]={0};//初始化猴子全没出局 值为0 int count=0;//排除的猴子数量 int key=0;//剩下的数据索引,即最后要得到的是数组中第几只猴子是大王 int i=0,index=0;//i代表计数器1-7,index代表数组下标 while(count<14)//当猴子数量是14只得时候说明原创 2015-04-10 09:24:41 · 684 阅读 · 0 评论 -
啤酒和饮料之浮点数的大小比较不能用==号
二进制存储的原因,浮点数的大小比较不能用==号。简化的处理是用fabs(a-b) 标题:啤酒和饮料 啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。 我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。#include#includeint main(){ int x,y;//x代表瓶酒数,y代表饮料数原创 2015-04-09 21:36:24 · 1195 阅读 · 0 评论 -
第39级台阶以及腾讯面试题上50台阶的可能数
题目标题: 第39级台阶 小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚, 也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢? 请你利用计算机的优势,帮助小明寻找原创 2015-04-09 20:40:33 · 1217 阅读 · 0 评论 -
马虎的算式: ab * cde = adb * ce 这样的算式一共有多少种呢
标题: 马虎的算式. 小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。 有一次,老师出的题目是:36 x 495 = ? 他却给抄成了:396 x 45 = ? 但结果却很戏剧性,他的答案竟然是对的!! 因为 36 * 495 = 396 * 45 = 17820 类似这样的巧合情况可能还有很多,比如原创 2015-04-09 19:51:17 · 2750 阅读 · 0 评论 -
计算圆周率pai的公式:pai = 4*(1-1/3+1/5-1/7 ....)
历史上有许多计算圆周率pai的公式,其中,格雷戈里和莱布尼茨发现了下面的公式:pai = 4*(1-1/3+1/5-1/7 ....)这个公式简单而优美,但美中不足,它收敛的太慢了。如果我们四舍五入保留它的两位小数,那么:累积了1项和是:4.00累积了2项和是:2.67累积了3项和是:3.47。。。请你写出它累积了100项的和是多少(四舍五入到小原创 2015-04-09 18:17:43 · 29134 阅读 · 0 评论 -
转:最长公共子串和最长公共子序列的区别
一、什么是最长公共子序列 什么是最长公共子序列呢?举个简单的例子吧,一个数列S,若分别是两个或多个已知序列的子序列,且是所有符合条件序列中最长的,则S称为已知序列的最长公共子序列。 举例如下,如:有两个随机数列,1 2 3 4 5 6 和 3 4 5 8 9,则它们的最长公共子序列便是:3 4 5。 一直不明白:最长公共子串和最长公共子序列的区别。转载 2015-04-09 15:48:18 · 1107 阅读 · 0 评论 -
一个整数的每个数位都平方后求和,又得到一个整数,我们称这个整数为:位平方和。
把一个整数的每个数位都平方后求和,又得到一个整数,我们称这个整数为:位平方和。对新得到的整数仍然可以继续这一运算过程。比如,给定整数为4,则一系列的运算结果为:16,37,58,89,....本题的要求是,已知一个整数x,求第n步的运算结果。数据格式要求:输入,两个整数x n,中间以空格分开。表示求x的第n步位平方和。其中,x,n都大于0,且小于10原创 2015-04-09 15:02:24 · 6024 阅读 · 0 评论 -
蓝桥杯:求一个5位数的最大循环素数
1193是个素数,对它循环移位后发现:1931,9311,3119也都是素数,这样特征的数叫:循环素数。你能找出具有这样特征的5位数的循环素数吗?当然,这样的数字可能有很多,请写出其中最大的一个。注意:答案是个5位数,不要填写任何多余的内容。#include#include//判断是否是素数int isPrime(int n){ int flag=1; for(原创 2015-04-09 12:17:19 · 5091 阅读 · 0 评论 -
如下的加法算式:其中每个汉字代表一个数字,填写“让我怎能过大年” 所代表的整数。
有如下的加法算式。其中每个汉字代表一个数字。(如果存在对齐问题,可参见【图1.png】) 年 大年 过大年 能过大年 怎能过大年 我怎能过大年+让我怎能过大年--------------------原创 2015-04-09 11:18:43 · 7735 阅读 · 8 评论 -
兄弟俩今年的年龄和是35岁,当哥哥像弟弟现在这样大时,弟弟的年龄恰好是哥哥年龄的一半,哥哥今年几岁?
兄弟俩今年的年龄和是35岁,当哥哥像弟弟现在这样大时,弟弟的年龄恰好是哥哥年龄的一半,哥哥今年几岁?x+y==35;如今的年龄之差x-y哥哥像弟弟那样大时的年龄之差y-y/2n=那么两次的年龄之差是一样的x-y==y-y/2 源代码:#includeint main(){ int x,y; for(x=18;x<35;x++)//从18开始 {原创 2015-04-09 10:58:27 · 4184 阅读 · 0 评论 -
已知直角三角形的斜边是某个整数,求满足这个条件的不同直角三角形的个数。
勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形。 已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数。 求满足这个条件的不同直角三角形的个数。【数据格式】输入一个整数 n (0要求输出一个整数,表示满足条件的直角三角形个数。例如,输入:5程序应该输出:1再例如,输入:100程序应该输出:原创 2015-04-09 10:29:54 · 5533 阅读 · 3 评论 -
如果x的x次幂结果为10,你能计算出x的近似值吗?
如果x的x次幂结果为10,你能计算出x的近似值吗?显然,这个值是介于2和3之间的一个数字。请把x的值计算到小数后6位(四舍五入),并填写这个小数值。需要用到的函数fabs(double x),求x的绝对值;pow(x,y),求x^y的值#include#include//以下是while循环实现 int main(){ double x=2.0; wh原创 2015-04-09 08:41:28 · 7903 阅读 · 3 评论 -
1/1 + 1/2 + 1/3 + 1/4 + ... 在数学上称为调和级数,求前多少项的和才超过15.0?
1/1 + 1/2 + 1/3 + 1/4 + ... 在数学上称为调和级数。它是发散的,也就是说,只要加上足够多的项,就可以得到任意大的数字。但是,它发散的很慢:前1项和达到 1.0前4项和才超过 2.0前83项的和才超过 5.0那么,请你计算一下,要加多少项,才能使得和达到或超过 15.0 呢?请填写这个整数。注意:只需要填写一个整数,不原创 2015-04-08 21:34:33 · 10764 阅读 · 0 评论 -
递归和while循环实现十进制转八进制
代码一(运行正确)#include#include//递归实现10进制转2进制 void fun(int n){ int count=0; if(n==0) { return ; } else { fun(n/8); printf("%d",n%8); }}//非递归实现呢?while循环实现十进制转二进制void While(int n){ pri原创 2015-04-08 20:47:26 · 5911 阅读 · 0 评论 -
蓝桥杯:核桃的数量
问题描述:小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是:1. 各组的核桃数量必须相同2. 各组内必须能平分核桃(当然是不能打碎的)3. 尽量提供满足1,2条件的最小数量(节约闹革命嘛)输入格式输入包含三个正整数a, b, c,表示每个组正在加班的人数,用空格分开(a,b,c<30)原创 2015-04-08 18:44:51 · 2182 阅读 · 1 评论 -
利用头文件<string.h>求输入的字符串是否是回文字符串
#include#include//求字符串长度的头文件 #define MAX 100int func(char s[]){ int flag=1; int i,j,slen=strlen(s);//求出字符串长度 for(i=0,j=slen-1;i<j;i++,j--) { if(s[i]!=s[j])//前后对比字符 { flag=0;原创 2015-04-08 15:36:39 · 778 阅读 · 0 评论 -
求一个正整数的各位数字之和
/* 此为方法一!!!!!!#includeint main(){ int n,sum=0; printf("请输入一个正整数n:"); scanf("%d",&n); while(n) { sum=sum+n%10; n=n/10; } printf("n的各位数字之和为:%d\n",sum); } *///此为方法二!!!!!!!!原创 2015-04-08 15:27:30 · 20441 阅读 · 1 评论 -
蓝桥杯:算法训练 2的次幂表示
问题描述 任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。 将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0 现在约定幂次用括号来表示,即a^b表示为a(b) 此时,137可表示为:2(7)+2(3)+2(0) 进一步:7=2^2+2+2^0 (2^1用2表示) 3=2转载 2015-04-07 18:50:27 · 1516 阅读 · 3 评论 -
递归与while实现求十进制转二进制
#include#include//递归实现10进制转2进制 void fun(int n){ int count=0; if(n==0) { return ; } else { fun(n/2); printf("%d",n%2); }}//非递归实现呢?while循环实现十进制转二进制void While(int n){ printf("\nwhil原创 2015-04-07 18:43:37 · 2053 阅读 · 0 评论 -
输入一个整数矩阵,计算位于矩阵边缘的元素之和
输入一个整数矩阵,计算位于矩阵边缘的元素之和.所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。源代码:#include#includeint main(){ int m,n;//矩阵的长和宽 int sum = 0; printf("输入矩阵的长和宽\n"); scanf("%d%d",&m,&n); int a[m][n];//存储矩阵的值原创 2015-04-07 16:24:10 · 11346 阅读 · 5 评论 -
递归与while循环实现求n!
#include#include//递归实现 int diGui(int n){ if(n<=0) { return 1; } else { return n*diGui(n-1); }} int diGui2(int n){ return n>0?n*diGui(n-1):1;}//非递归,while循环实现 int While(int n){ i原创 2015-04-07 15:10:24 · 3487 阅读 · 0 评论 -
while、do-while、for、goto、递归五种方式求一个整数的位数
#include#include//whileint While(int n){ int wei = 0; while(n) { n/=10; wei++; } return wei; }//do-whileint doWhile(int n){ int wei = 0; do { n/=10; wei++; }while(n); return原创 2015-04-06 14:14:12 · 1535 阅读 · 0 评论 -
求n以内的所有素数并输出
#include#include#include//求n以内的所有素数 int prime(int n)//调用此方法的数n一定大于了2。所以要输出2这个特殊的素数 { int i; int flag = 1; for(i=2;i<=(int)sqrt(n);i++) { if(n%i==0) { flag = 0; break; } } retur原创 2015-04-05 16:00:20 · 9216 阅读 · 0 评论 -
数字逆转的几种方式,(略有区别)
第一种方式:int main(){ int n; int res = 0; scanf("%d",&n); while(n) { res = res*10+n%10; n/=10; } printf("逆转后的数字是%d\n",res); return 0;} 第二种方式:int main(){ int n; int res = 0; scanf原创 2015-04-05 15:13:15 · 3184 阅读 · 0 评论 -
两种方式求1--100以内所有相邻奇偶数之积的和
分析:求100以内所有相邻奇偶数之积的和1 2 3 4 5 6 7 8 9 10 11 ...100即如下: 1*2+3*4+5*6+... 方法一: (2*1-1) 2*1 + (2*2-1) 2*2 +(2*3-1) 2*3 得出结论:(2n-1)*2n(循环50次)方法二:原创 2015-04-05 12:18:50 · 5025 阅读 · 0 评论 -
腾讯面试题:走到50台阶的可能数(台阶可以一次走一阶或者二阶),三种方式实现
//腾讯面试题,有50个台阶,一次走一步或者两步,有多少种可能 //走到50阶的可能是走到49阶的可能加上走上走到48的可能 //分析/* 台阶数 可能数 1 1 直接走一个台阶就ok 2 2 走1 1或者直接走2个台阶 3 3原创 2015-04-04 11:36:25 · 3911 阅读 · 0 评论 -
哥德巴赫猜想
世界三大数学猜想编辑即费马猜想、四色猜想和哥德巴赫猜想。费马猜想的证明于1994年由英国数学家安德鲁·怀尔斯(Andrew Wiles)完成,遂称费马大定理;四色猜想的证明于1976年由美国数学家阿佩尔(Kenneth Appel)与哈肯(Wolfgang Haken)借助计算机完成,遂称四色定理;哥德巴赫猜想尚未解决,目前最好的成果(陈氏定理)乃于1966年由中国数学家陈景润取得。这三个原创 2015-04-03 09:26:35 · 1559 阅读 · 0 评论 -
利用while循环翻转数字之后,比较翻转后的数字是否与原来的数字相同的方法来判断是不是回文数字
下面几句代码是关键: while(m) { sum=sum*10+m%10;//逐步逆序数字 m=m/10; }完整代码如下:#includeint main(){ int val,m; int sum=0; printf("输入一个数字:val="); scanf("%d",&val); m=val; while(m) { sum原创 2015-04-02 21:31:23 · 1473 阅读 · 0 评论 -
双for、单for初始化二维数组
#include#include#define N 4//void fun2(){ printf("二维数组方式【双重for循环】初始化二维数组\n"); int a[N][N]; for(int i=0;i<N;i++) { for(int j=0;j<N;j++) { a[i][j] = i*N+原创 2015-04-02 10:58:36 · 1549 阅读 · 0 评论 -
用3个for和2个for位三位数组赋值
#include#include//三维数组在内存里面也是线性排列void fun3(int a[5][4][3]){ //三个for循环赋值 int num = 0; for(int i=0;i<5;i++) { for(int j=0;j<4;j++) { for(int k=0;k<3;k++) { a[i][j][k]=++num; p原创 2015-04-02 10:36:59 · 1112 阅读 · 0 评论 -
二维数组转置小记
#include#includeint main(){ int a[3][4]={1,2,3,4,5,6,7,8,0,1,2,3}; for(int i=0;i<3;i++) { for(int j=0;j<4;j++) { printf("%-5d",a[i][j]); }原创 2015-04-02 10:10:54 · 585 阅读 · 0 评论 -
生成一个n*n的方阵,然后输出此方阵对角线上元素之和
//输入一个正整数n(1//公式为a[i][j]=i*n+j+1 (0=源代码:#include#include#define N 10//输入一个正整数n(1<n<10),根据以下公式生成一个n*n的方阵,然后输出此方阵对角线上元素之和//公式为a[i][j]=i*n+j+1 (0=<i<n,0=<j<n)int main(){ int a[N][N]={0};原创 2015-04-02 10:01:59 · 18575 阅读 · 0 评论 -
最标准的杨辉三角和一般的杨辉三角
1、最标准的杨辉三角/*编写程序打印杨辉三角形 1 变形 1 0 0 0 1 1 1 1 0 01 2 1 1 2 1 0 。。。。。。 1 3 3 1 思路: 我们定义一个二维数组,所有元素先初始化为0 给数组的第1列和对角线元素赋值为1 其余元素a[i][j]=a[i-1][j-原创 2015-03-30 11:35:35 · 1160 阅读 · 0 评论 -
一维数组、二维数组用数学公式初始化以及二维数组的行坐标可省
#include#include//二维数组赋值void show2(){ int a[3][4]; int k=0; for(int i=0;i<3;i++) { for(int j=0;j<4;j++) { a[i][j]=i*4+(j+1);//数学公式 赋值 // a[i原创 2015-03-29 16:32:09 · 2903 阅读 · 0 评论 -
编程实现求1!+2!+…+10!(完全递归,while辅助递归,双for三种方式)
#include//递归实现:原理是f(n)=f(n-1)+n!=f(n-1)+n*(n-1)!=f(n-1)+n*(f(n-1)-f(n-2)) (最终把!去掉转换成函数fun(n...)) int fun(int n) { if(n<=0) { return 0 ; } else if(n==1)//n==1,2是递归的出口 { return 1;原创 2015-03-28 11:12:52 · 6536 阅读 · 0 评论 -
利用标志flag,设计一个函数,检测一个数是否为质数(素数)
#include#include//设计一个函数,检测一个数是否为质数(素数) //只能被1和自身整除的数才是质数 int zhishu(int data){ if(data<=1)//小于等于1都不是素数 { return 0; } else if(data==2 || data==3)//这2个可以直接判断是质数 { return 1; } else {原创 2015-03-27 17:52:43 · 3873 阅读 · 1 评论 -
C语言和java实现且面条(均用递归实现)
/* 一根高筋拉面,中间切一刀,可以得到2根面条。 如果先对折1次,中间切一刀,可以得到3根面条。 如果连续对折2次,中间切一刀,可以得到5根面条。 那么,连续对折10次,中间切一刀,会得到多少面条呢? -------------------------------------------对折0次,得到2根:1*2 = 2对折1次,得到2 * 2 - 1 = 3原创 2015-03-27 16:51:30 · 1027 阅读 · 0 评论