(1)例:试输出一个任意10进制整数对应的二进制系数。
1.分析:
2.代码:
#include <stdio.h>
int main(){
int m,a[100],n=0;
printf("请输入整数m:");
scanf("%d",&m);
while(m!=0){
a[n]=m%2;
n++;
m=m/2;
}
for(int i=n-1;i>=0;i--){
printf("%d",a[i]);
}
}
(2)例:试求数列1/2、2/3、3/5、5/8……,前100项之和。
1.分析:参考斐波那契数列1,1,2,3,5,8.......
2.代码:
#include <stdio.h>
int main(){
double s=0,a=2,b=1,t;
for(int i=0;i<100;i++){
s=s+b/a;
t=a;
a=a+b;
b=t;
}
printf("%lf",s);
}
(3)例:编写函数int sum(int a,int n),完成以下计算
sum=a+aa+aaa+……+aa…….a
n 个a
1.分析:ai=ai-1*10+a
2.代码:
#include <stdio.h>
int sum(int a,int n);
int main(){
int a,n;
printf("请输入a和n:");
scanf("%d %d",&a,&n);
sum(a,n);
}
int sum(int a,int n){
int s=0,t=a;
for(int i=0;i<n;i++){
s=s+t;
t=t*10+a;
}
printf("%d",s);
}
(4)例:不用标准函数,利用微积分的泰勒展开公式,计算任意弧度的正弦值。
1.分析:sin x=x-x3/3!+x5/5!……+(-1)ix2i+1/(2i+1)!+(-1)iξ2i+3/(2i+3)!
当| x|≤2π时,此时取i=50,误差部分(-1)iξ2i+3/(2i+3)! 极小
故sin x ≈ x-x3/3!+x5/5!……+(- 1)ix2i+1/(2i+1)!+ ……x101/101!
2.代码:
#include <stdio.h>
#define pi 3.1415926
int main(){
double s,a,x;
printf("请输入弧度:");
scanf("%lf",&x);
while(x>2*pi) x=x-2*pi;
while(x<-2*pi) x=x+2*pi;
s=x,a=x;
for(int i=1;i<=50;i++){
a=-x*x/(2*i*(2*i+1))*a;
s=s+a;
}
printf("%lf",s);
}
5.例:有一个字符数组如下:char a[]=″3215125″,试在a的数字之间插入3个乘号,使得乘积最大。
#include <stdio.h>
int m(char *s,int a,int b);
int main(void){
char s[]="3215125";
int i,j,k;
int max=1,p;
int a,b,c,d;
for(i=0;i<=3;i++){
for(j=1;j<=4;j++){
for(k=2;k<=5;k++){
if(i<j && j<k){
a=m(s,0,i);
b=m(s,i+1,j);
c=m(s,j+1,k);
d=m(s,k+1,6);
p=a*b*c*d;
if(max<p)max=p;
}
}
}
}
printf("%d",max);
return 0;
}
int m(char *s,int a,int b){
int sum=0,i;
for(i=a;i<=b;i++){
sum=sum*10+s[i]-'0';
}
return sum;
}