#include <math.h>
// 求圆台体积
double volume_tc(double r_lower,double r_upper,double h){
double s_lower=PI*r_lower*r_lower;
double s_upper=PI*r_upper*r_upper;
double result=h*(s_lower+s_upper+sqrt(s_lower*s_upper))/3.0;
return result;
}
// 返回:余弦函数的近似值
double funcos(double e,double x){
double frac[2]={1,1};
int flag=1;
int cnt=1;
double result=0;
// do-while等效写法
while(1){
result+=flag*frac[0]/frac[1];
if(frac[0]/frac[1]<e){
break;
}
frac[0]*=x*x;
frac[1]*=cnt++;
frac[1]*=cnt++;
flag*=-1;
}
return result;
}
// 返回:统计指定数字个数
int CountDigit(int number,int digit){
// 边界处理
if(number==0){
if(digit==0) return 1;
else return 0;
}
// 负数转正数
if(number<0){
number*=-1;
}
int cnt=0;
while(number>0){
if(number%10==digit){
++cnt;
}
number/=10;
}
return cnt;
}
// 输出:空心的数字金字塔
void hollowPyramid(int n){
// 边界处理
if(n==1){
printf("1");
return;
}else if(n==2){
printf(" 1\n");
printf("222");
return;
}
// 第1层
for(int i=1;i<=n-1;++i){
printf(" ");
}
printf("1\n");
// 第2-(n-1)层
for(int i=2;i<=n-1;++i){ // 第i层
for(int j=1;j<=n-i;++j){
printf(" ");
}
printf("%d",i);
for(int j=1;j<=2*i-3;++j){
printf(" ");
}
printf("%d\n",i);
}
// 第n层
for(int i=1;i<=2*n-1;++i){
printf("%d",n);
}
printf("\n");
// 返回
return;
}
// 返回:n个a组成的数字
int fn(int a, int n){
int result=0;
for(int i=0;i<n;++i){
result*=10;
result+=a;
}
return result;
}
// 返回:要求的和
int SumA( int a, int n ){
int result=0;
for(int i=1;i<=n;++i){
result+=fn(a,i);
}
return result;
}
// 返回:素数->1 否则->0
int prime(int p){
// 边界处理
if(p<=1) return 0;
else if(p==2) return 1;
// 检查是否有除1和自身外的其他因数
int upper=sqrt(p)+1;
for(int i=2;i<=upper;i++){
if(p%i==0){
return 0;
}
}
return 1;
}
// 输出:n的素数分解n=p+q(要求p最小)
void Goldbach(int n){
for(int i=2;i<=n/2;++i){
if(prime(i)==1 && prime(n-i)==1){
printf("%d=%d+%d",n,i,n-i);
break;
}
}
return;
}
// 输出 整数的逆序数
int reverse(int number){
// 边界处理
if(number==0) return 0;
int result=0;
int sign=1;
// 负数转正数,保留符号
if(number<0){
sign=-1;
number*=-1;
}
while(number>0){
result*=10;
result+=number%10;
number/=10;
}
result*=sign;
return result;
}
#include <stdbool.h>
// 输出:整数除自身外因子和
int factorsum(int number){
int result=0;
int limit=number/2;
for(int i=1;i<=limit;++i){
if(number%i==0){
result+=i;
}
}
return result;
}
// 输出:指定范围内的完数的因子累加形式的分解式
void PrintPN(int m,int n){
bool isFound=false;
for(int i=m;i<=n;++i){
if(factorsum(i)==i){
isFound=true;
printf("%d = 1",i);
int limit=i/2;
for(int j=2;j<=limit;++j){
if(i%j==0){
printf(" + %d",j);
}
}
printf("\n");
}
}
if(!isFound){
printf("No perfect number\n");
}
return;
}
// 返回:第n项fib数
int fib(int n){
// 边界处理
if(n<=0) return 0;
else if(n==1 || n==2) return 1;
// 滚动更新
int nums[3]={0,1,1};
for(int i=2;i<n;++i){
nums[0]=nums[1];
nums[1]=nums[2];
nums[2]=nums[0]+nums[1];
}
return nums[2];
}
// 输出:闭区间[m,n]内所有fib数
void PrintFN(int m, int n){
// 输出
int cnt=0;
for(int i=0;fib(i)<=n;++i){
int cur=fib(i);
if(cur>=m){
++cnt;
if(cnt>1){
printf(" ");
}
printf("%d",cur);
}
}
if(cnt==0){
printf("No Fibonacci number");
}
return;
}
#include <math.h>
// 返回:自幂数->1 否则->0
int narcissistic(int number){
if(number<100){
return 0;
}
int result=0;
int n=0;
int tmp=number;
while(tmp>0){
++n;
tmp/=10;
}
int sum=0;
tmp=number;
while(tmp>0){
sum+=pow(tmp%10,n);
tmp/=10;
}
if(sum==number){
result=1;
}
return result;
}
// 输出:开区间(m,n)内所有的水仙花数字
void PrintN(int m, int n){
for(int i=m+1;i<=n-1;++i){
if(narcissistic(i)){
printf("%d\n",i);
}
}
return;
}
哈哈哈;不小心访问到了,大学就开始建设自己的博客,总结自己的学习资料;前途不可量。哈哈;加油!!
感谢评论♥,也是心血来潮做的网站,
初心是做知识输出练习,并且在赛博空间留下自己的一些痕迹。
刚刚访问您做的博客,设计得太漂亮了,等我博客内容详实以后,也要向您学习!!!