11.28
求最小公倍数
就是先算两个数的最大公因数,然后两个数分别除以最大公因数,两个数再相乘,再乘以最大公因数。
求汉字个数
由于汉字在内存中占两个字节,且汉字的机内码字节的最高位为1,所以汉字机内码的每个字节表示的十进制数都是负数。统计输入字符串含有几个汉字,只需求出字符串中小于0(a[i]<0)的字符有几个,将它除以2就得到答案。
进制转换跟二进制转换类似,主要原理为:tmp为要转换的数,用a数组来保存转换后每一位的进制数;while(tmp>0)
{d=tmp%r;
a[k++]=d;
tmp/=r;}
从最低数位开始得的,故最后要反向输出
for(int i=k-1;i>=1;--i)
{ if(a[i]>=10)
{ char c='A';
printf("%c",c+(a[i]-10)); }
else printf("%d",a[i]); }
杨辉三角1基本思想:开两个数组,然后b数组为a数组上一次的值,然后套用a[i]=b[i-1]+a[i]公式可得;
具体代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int a[100],b[100];
int main()
{int n;
while(cin >> n)
{b[0]=0,b[1]=1,a[0]=0,a[1]=1;
for(int i=1;i<=n;++i)
{if(i==1)
{cout << "1" << endl;}
else
{for(int j=1;j<=i;++j)
{if(j!=i)
a[j]=b[j-1]+a[j];
else
a[j]=1;
if(j!=i)
cout << a[j] << " ";
else
cout << a[j] << endl;}
}
for(int j=1;j<=i;++j)
{b[j]=a[j];
}
}
cout << endl;}
return 0;}