c

Tocker:) 2019-03-10 08:40:20
素数 只有1和他本身两个因数的数 判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整 除,则表明此数不是素数,反之是素数。 兔子问题斐波那契数列 : fn = f(n-1) + f(n-2) (递归解决问题) 中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱买百鸡问题”,鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何? #include <stdio.h> int main () { int male,fmale,child; for (male=0;male<=20;male++). for (fmale=0;fmale<=33;fmale++) for (child=0;child<=99;child++) if (male+fmale+child==100 ) if (male*5+fmale*3+child/3==100) if (child%3==0) printf ("male :%d,fmale :%d,child :%d\n",male,fmale,child); return 0; } 注意:male<=20,fmale <=33,child <=99 闰年的判断方式:a%4==0&&a%100!=0||a%400==0。(366) 三天打鱼两天晒网 if((n%5)<4&&(n%5)>0) /*余数是1或2或3时说明在打渔,否则在晒网*/ n代表过了多少年 希尔排序算法: //用希尔排序法对一组数据由小到大进行排序,数据分别为 69、56、12、136、3、55、46、 99、88、25。 (n从排序数个数的一半开始) #include <stdio.h> int main () { int n,i,t; int a[10] = {69,56,12,136,3,55,46,99,88,25}; for (n=5;n>0;n--) for (i=0;i<(10-n);i++) //i < (10-n) if (a[i]>a[i+n]) { t=a[i]; a[i] = a[i+n]; a[i+n] = t; } for (i=0;i<10;i++) printf ("%d ",a[i]); return 0; 冒泡排序: 冒泡排序算法的原理如下: 1:比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2:对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3:针对所有的元素重复以上的步骤,除了最后一个。 4:持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 重点: for (j=0;j<9;j++) // 控制排序的趟数,一次排序最大值在上 for (i=0;i<10-j;i++) // 两两比较 三角形面积公式: 1 s=(a+b+c)/2; 2 area=(float)sqrt(s*(s-a)*(s-b)*(s-c)); a==b || a == c || b==c (等腰) a*a+b*b==c*c || b*b+c*c==a*a || c*c+a*a==b*b (直角三角形) a==b==c (等边) 阿姆斯特朗数也就是俗称的水仙花数,是指一个三位数,其各位数字的立方和等于该数本身。例如:153=13+53+33,所以 153 就是一个水仙花数。求出所有的水仙花数 辗转相除法来求最大公约数。在求最小公倍数时要清楚最大公约数和最小公倍数的关系,(即两数相乘的积除以这两个数的最大公约数就是最小公倍数。) 辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。 #include <stdio.h> int zhanchu (int x,int y); int main () { int a,b,max; scanf ("%d%d",&a,&b); max = (a>b)?zhanchu (a,b):zhanchu(b,a); printf ("最大公约数是:%d",max); printf ("最小公倍数是:%d",a*b/max); return 0; } int zhanchu (int x,int y) // 假设x>y { int n; if (x%y==0) return y; else { while (x%y != 0) { n = x; x = y; y = n%y; } return y; } } 自然底数 e=2.718281828…,e 的计算公式如下: e=1+1/1!+1/2!+1/3!+… 要求当最后一项的值小于 10-10 时结束。 任意的整数,当从左向右读与从右向左读是相同的,且为素数时,称为回文素数。 判断位数的方法: while (n>0) { n=n/10; k+=1; } 判断是否为素数: int sushu (int n) { int i; for (i=2;i<n;i++) { if (n%i==0) break; } if (i==n) return 1; // n是素数 return 0; } 矩阵转制: 设有一矩阵为 m×n 阶(即 m 行 n 列),第 i 行 j 列的元素是 a(i,j),需要将该矩阵转置为 n×m 阶的矩阵,使其中元素满足 b(j,i)=a(i,j)。 由数学知识可知,将第一个矩阵的所有元素绕着一条从第一行第一列出发的右下角 45度 的射线做镜面反转,即可得到该矩阵的转置。 for (i=0;i<n;i++) for (j=0;j<m;j++) { printf ("%d ",a[i][j]); if (j==m-1) printf ("\n"); } for (i=0;i<m;i++) for (j=0;j<n;j++) { b[i][j] = a[j][i]; printf ("%d ",b[i][j]); if (j==n-1) printf ("\n"); } 狼找兔子问题: 可以推导出狼去的洞的代码是: pos(i+1)=pos(i)+i+1。 随机数: #include <stdlib.h> #include <time.h> srand (unsigned int )time (NULL) 输入一串字符:while((ch=getchar())!='\n')
...全文
210 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
刘什么同学 2019-03-13
  • 打赏
  • 举报
回复
楼主真棒(/≧ω\)
Tocker:) 2019-03-13
  • 打赏
  • 举报
回复
引用 1 楼 司马中达的回复:
这帖子让我梦回大学时代
哈哈哈,我大一,有个小比赛整理了一下
司马中达 2019-03-11
  • 打赏
  • 举报
回复
这帖子让我梦回大学时代

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧