1,对于分式的操作,一定先通分,因为double计算时会产生误差,先通分减少误差.
2.判断几位数
一、count=1; while(n>=10) {count++; n=n/10;}
二、itoa(n,sp,10); printf("%d\n",strlen(sp));
三、double sum=0.0;
for(i=1;i<=n;i++)
sum+=log10(i);
printf("%d\n",(int)sum+1);
3.%s输入时,不加地址符号。
4.求n的因子之和,即被n整除的数
sum=1;for(i=2;i<=sqrt(n);i++)
if(n%i==0) sum+=i;
if(n/i!=i) sum+=n/i; 此处求sqrt(n)另一边的数据,减少运算,否则超时
5、素数的打表
a[3000]={1,1,0};
for(i=2;i*i<3000;i++)
{
if(!a[i]) {
for(j=2*i;j<3000;j+=i)
a[j]=1;
}
}
标记为1的全不是素数,为0的才是素数
6、最大公约数,最小公倍数
int gcd(int a,int b)//最大公约数
{
return !b? a:gcd(b,a%b);
}
最小公倍数a*b/gcd(a,b);
7、英文单词首字母变大写
j=0;
for(i=0;i<strlen(a);i++)
if(j) {if (a[i]==' ') mj=0;}
else {if(a[i]!=' ' ) {j=1;a[i]=a[i]-32;}}
printf("%s",a);