文章目录
- 2.用PI/4=1-1/3+1/5-1/7+···公式求PI的近似值,直到发现某一项的绝对值小于1e-6为止(该项不累加)。分别统计当"fabs(t)>=1e-6"和"fabs(t)>=1e-8"执行循环体的次数
- 3. 输入两个正整数m和n,求其最大公约数和最小公倍数。
- 4. 输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。
- 5. 求Sn=a+aa+aaa+...+aa..a(n个a)其中a是一个数字,n表示a的位数。例如2+22+222+2222+22222(此时n=5),n由键盘输入。
- 6. 求1!+2!+3!+4!...+20!.
- 7. 求1+2+3+...+100+1+4+9+...+50*50+1+1/2+1/3+...+1/10;
- 8. 输出所有水仙花数,所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
- 9. 一个数恰好等于它的因子之和,这个数就称为完数。编程序找出1000之内所有的完数。
- 10. 有一个分数序列:2/1,3/2,5/3,8/5,13/8... 求出这个序列的前20项的和
- 11. 一个球从高度100米自由落下,每次落地就反弹跳回原高度的一半,再落下,再反弹。求它在第十次落地时共经过多少米,第十次反弹多高。
- 12. 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃掉了一般,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一般,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个。到第十天早上再想吃的时候,就只剩下一个桃子了。求第一天共摘下了多少个桃子。
- 13. 用迭代法求x=sqrt(a)。求平方根的迭代公式为 Xn+1 = 1/2*(Xn+a/Xn) 要求前后;两次求出的x的差的绝对值小于1e-5。
- 14. 用牛顿迭代法求下面方程在1.5附近的根:2*X*X*X -4*X*X+3*X - 6 = 0
- 15. 用二分法求下面公式在(-10,10)之间的根:2*X*X*X -4*X*X+3*X - 6 = 0
- 16. 输出下面的图案
- 17. 两个乒乓球队进行比赛,各出三r。甲队为A,B,C,乙队为X,Y,Z。已知抽签决定比赛名单。有人向队员打听情报,A说他不和X比,C说他不和X和Z比。请编程序找出三对赛手的名单。
1.略
2.用PI/4=1-1/3+1/5-1/7+···公式求PI的近似值,直到发现某一项的绝对值小于1e-6为止(该项不累加)。分别统计当"fabs(t)>=1e-6"和"fabs(t)>=1e-8"执行循环体的次数
#include
#include
int main()
{
double PI = 0.0,t = 1.0,i = 1.0;
int sign = 1,count=0;
int tag = 1;
while(fabs(t)>=1e-8)
{
count++;
sign = - sign;
i = i + 2;
PI += t;
t = sign /i;
if(fabs(t)<1e-6 && tag == 1)
{
printf("fabs(t)>=1e-6时,执行%d次\n",count);
tag = -1;
}
}
printf("fabs(t)>=1e-8时,执行%d次\n",count);
PI = 4* PI;
printf("PI = %lf\n",PI);
return 0;
}
3. 输入两个正整数m和n,求其最大公约数和最小公倍数。
#include
#include
int main()
{
int i,m,n,min1,max1,min2,max2;
printf("请输入m和n的值\n");
scanf("%d%d",&m,&n);
max1 = m>n?m:n;
min1 = m<n?m:n;
max2 = max1;
min2 = min1;
for(i = 2; i <= min1/2;i++)
{
if(m%i == 0 & n%i == 0)
max2 = i;
}
for(i = max1;i <= m*n;i++)
{
if(i%m==0&&i%n==0)
{
min2 = i;
break;
}
}
printf("两数的最大公约数为%d,最小公倍数为%d\n",max2,min2);
return 0;
}
4. 输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。
#include
int main()
{
char c;
int letters = 0,space = 0,digit = 0,other = 0;
printf("请输入一行字符:\n");
while((c = getchar())!='\n')
{
if(c>='a' && c<='z' || c >= 'A' && c <= 'Z')
letters++;
else if(c == ' ')
space++;
else if(c >= '0' && c <= '9')
digit++;
else
other++;
}
printf("字母数:%d,空格数:%d,数字数:%d,其它字符数:%d\n",letters,space,digit,other);
return 0;
}
5. 求Sn=a+aa+aaa+…+aa…a(n个a)其中a是一个数字,n表示a的位数。例如2+22+222+2222+22222(此时n=5),n由键盘输入。
#include
#include
int main()
{
int i,n, temp = 0,count = 0,sum = 0;
printf("请输入n的值\n");
scanf("%d",&n);
for(i = 0;i<n;i++)
{
temp = 2 * pow(10,i);
count += temp;
sum += count;
}
printf("sum = %d\n",sum);
return 0;
}
6. 求1!+2!+3!+4!..+20!.
#include
int main()
{
int n,sum = 0,temp = 1;
for(n = 1; n <= 20;n++)
{
temp *= n;
sum += temp;
}
printf("sum = %d\n",sum);
return 0;
}
7. 求1+2+3+…+100+1+4+9+…+50*50+1+1/2+1/3+…+1/10;
#include
int main(){
double i,sum1 =0.0,sum2 = 0.0, sum3 = 0.0,sum = 0.0;
for(i = 1.0;i <= 100;i++)
{
sum1 += i;
if(i <= 50)
{
sum2 +=i*i;
if(i <= 10)
sum3 +=1/i;
}
}
sum = sum1 +sum2 + sum3;
printf("sum = %15.6f\n",sum);
return 0;
}
8. 输出所有水仙花数,所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
#include
int main()
{
int i,n,m,l;
for(i=100;i<=999;i++)
{
n = i%10;
m = i/10 %10;
l = i/100%10;
if(i == n*n*n+m*m*m + l*l*l)
printf("水仙花数:%d\n",i);
}
return 0;
}
9. 一个数恰好等于它的因子之和,这个数就称为完数。编程序找出1000之内所有的完数。
#include
int main()
{
int i,j,sum;
for(i = 2;i <= 1000;i++)
{
sum = 0;
for(j = 1; j<= i/2; j++)
{
if((i%j)== 0)
sum += j;
}
if(sum == i)
printf("完数:%d\n",i);
}
return 0;
}
10. 有一个分数序列:2/1,3/2,5/3,8/5,13/8… 求出这个序列的前20项的和
#include
int main()
{
double a = 1.0, b = 2.0,sum = 0.0,temp;
int i,n = 20;
for(i = 0 ; i < n;i++)
{
temp = b/a;
b += a;
a = b - a;
sum =sum + temp;
}
printf("sum = %lf\n",sum);
return 0;
}
11. 一个球从高度100米自由落下,每次落地就反弹跳回原高度的一半,再落下,再反弹。求它在第十次落地时共经过多少米,第十次反弹多高。
#include
int main()
{
double height = 100,sum = 100;
int i;
for(i = 1;i<10;i++)
{
height = height/2;
sum = sum + 2*height;
}
printf("sum = %lf, 10th height =%lf\n",sum,height/2);
return 0;
}
12. 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃掉了一般,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一般,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个。到第十天早上再想吃的时候,就只剩下一个桃子了。求第一天共摘下了多少个桃子。
#include
int main()
{
int i,sum = 1;
for(i = 0; i < 9; i++)
{
sum = (sum + 1)*2;
}
printf("sum = %d\n",sum);
return 0;
}
13. 用迭代法求x=sqrt(a)。求平方根的迭代公式为 Xn+1 = 1/2*(Xn+a/Xn) 要求前后;两次求出的x的差的绝对值小于1e-5。
#include
#include
int main()
{
double n1,n2,a;
printf("请输入a的值");
scanf("%lf",&a);
n1 = a/2;
n2= 0.5*(n1 + a/n1);
do{
n1 = n2;
n2= 0.5*(n1 + a/n1);
}while(fabs(n2-n1)>1e-5);
printf("The square root of %lf is %lf\n",a,n2);
return 0;
}
14. 用牛顿迭代法求下面方程在1.5附近的根:2XXX -4XX+3X - 6 = 0
#include
#include
int main(){
double x1,x,f,f1;
x1 = 1.5;
do{
x = x1;
f = ((2 *x-4)*x+3)*x -6;
f1=(6*x-8)*x +3;
x1 = x-f/f1;
}while(fabs(x-x1)>=1e-5);
printf("The root of equation is %lf\n", x1);
return 0;
}
15. 用二分法求下面公式在(-10,10)之间的根:2XXX -4XX+3X - 6 = 0
#include
#include
int main(){
double x1,x2,mid,f2,f1,fm;
do{
printf("请输入查找的范围x1,x2\n");
scanf("%lf%lf",&x1,&x2);
f1 = x1*((2*x1-4)*x1+3)-6;
f2 = x2*((2*x2-4)*x2+3)-6;
if(f1*f2>0)
printf("请输入合理的区间!\n");
}while(f1*f2>0);
do{
mid = (x1 + x2)/2;
fm = mid*((2*mid-4)*mid+3)-6;
if(fm*f1 <0)
{
x2 = mid;
f2= fm;
}
else
{
x1 = mid;
f1 = fm;
}
}while(fabs(fm)>1e-5);
printf("The root of equation is %lf\n", mid);
return 0;
}
16. 输出下面的图案
*
***
*****
*******
*****
***
*
#include
int main(){
int i,j,k;
for(i = 1; i <= 7;i++)
{
if(i <= 4)
{
for(j=4-i; j>0;j--)
{
printf(" ");
}
for(k = 2 *i -1;k > 0; k--)
{
printf("*");
}
}
if(i >4)
{
for(j=i%4; j>0;j--)
{
printf(" ");
}
for(k = 7-2*(i%4);k > 0; k--)
{
printf("*");
}
}
printf("\n");
}
return 0;
}
17. 两个乒乓球队进行比赛,各出三r。甲队为A,B,C,乙队为X,Y,Z。已知抽签决定比赛名单。有人向队员打听情报,A说他不和X比,C说他不和X和Z比。请编程序找出三对赛手的名单。
#include
int main(){
char i,j,k;
for(i = 'X';i <= 'Z';i++)
for(j = 'X';j <= 'Z';j++)
if(i!=j)
for(k = 'X';k<='Z';k++)
if(i!=k && j!= k)
if(i !='X' && k!= 'X' && k!= 'Z')
printf("A--%c\nB--%c\nC--%c\n",i,j,k);
return 0;
}