- 求1!+2!+3!+……+20!
#include <stdio.h> int main() { double a=1; double sum=0; int i=0; for(i=1;i<=20;++i){ a *= i; //进行i的阶乘 sum += a; //将阶乘相加 } printf("sum=%.0f",sum); return 0; }
注意:定义累加结果sum和阶乘结果a要用double型,不能用int型,因为int型范围小不够用
-
通过for循环计算
的值
#include <stdio.h>
int main()
{
double sum=0;
int i=1;
int a=1;
int n=0;
printf("请输入n的值:\n");
scanf("%d",&n);
for (i=1;i<=n;++i){
sum=a*(1.0/i)+sum;
a=-a; //利用赋值转化正负
}
printf("sum=%0.2f",sum);
}
注意sum的类型,sum大概率是浮点,所以不能用int,还要注意使用浮点型时不能是整型与整型间相运算。
3. 编写求1+(1+2)+(1+2+3)+…+(1+2+3+…+100)的程序
#include <stdio.h>
int main()
{
int sum=0;
int a=0;
int i=1;
for(i=1;i<=100;++i)
{
a+=i; 先算出括号内
sum+=a; 再算总值
}
printf("sum=%d",sum);
return 0;
}
结果:
4. 解决百钱买百鸡问题:公鸡一只五块钱,母鸡一只三块钱,小鸡三只一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?输出所有可能情况。
#include <stdio.h>
int main()
{
int i=1;
int j=1;
int k=1;
int a=0,b=0,c=0;
for(i=0;i<300;++i){
for(j=0;j<33;++j){
for(k=0;k<20;++k){
if((100==3*j+5*k+i/3)&&(i+j+k==100))
printf("小鸡:%d 母鸡:%d 公鸡:%d\n",i,j,k);
}
}
}
return 0;
}
结果: