(遍历)一些基本的求和,求积,求阶乘,计数问题(流程控制语句的使用)
来源:互联网 发布:金本位 知乎 编辑:程序博客网 时间:2024/06/03 15:03
知识点
1,选择语句
单分支选择:if......else
多分枝选择结构
if
else if
....
else
switch ( controllingExpression ) 注意有break和没有break的区别
循环结构
do{
}while(条件表达式)
while(条件表达式)
{
}
for( ; ;)语句
注意:break和continue的区别,break结束整个循环,用于switch语句和循环语句中,continue结束本次循环,循环体不执行,进行下一次循环
goto--转向语句,不建议使用
求和问题的思路比较简单,无非是将所有的项累加起来
1.求s=1!+2!+3!+…+n!
#include<stdio.h>#define N 3void main(){int i;long sum=0,n=1;for(i=1;i<=N;i++){n=n*i;sum=sum+n;}printf("1!+2!=%d",sum);}
2,求, 圆周率的近似值,直到余项的首项绝对值小于10 -6次方为止
#include<math.h>#include<stdio.h>void main(){float PI=0,m=1,i=1;//int j=-1;int j=1; do { PI=PI+j/i; i=i+2; j= -j; } while (1/i>= 0.000001);PI=4*PI;printf("PI=%f",PI);}3.判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes;否则输出no.
#include <stdio.h>void main(){ int a; printf("请输入要验证的数:\n"); scanf("%d",&a); if(a%5==0&&a%7==0) printf("Yes\n"); else printf("No\n");}4.编程实现:计算1到100之间的奇数之和及偶数之和
#include <stdio.h>void main (){ int n,even=0,odd=0; for(n=1;n<=50;n++) { even+=2*n; odd+=2*n-1; } printf("1到100间的偶数的和为%d:\n",even); printf("1到100间的奇数的和为%d:\n",odd);}5.求Sn=a+aa+aaa+…+aa…a之值,n,a由键盘输入。
#include<stdio.h>void main(){ int a,n,i=1,sn=0,tn=0; printf("a,n=:"); scanf("%d,%d",&a,&n); while(i<=n) { tn=tn+a; sn=sn+tn; a=a*10; ++i; } printf("a+aa+aaa+…+aa…a=%d\n",sn);}6.“百钱百鸡”问题。
我国古代数学家张丘建在《算经》中出了一道题 “鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”。意思是:公鸡5文钱1只,母鸡3文钱1只,小鸡1文钱3只。用100文钱买100只鸡,问公鸡、母鸡、小鸡能各买多少只?
分析:设买 x只公鸡,y只母鸡,z只小鸡,则有:
x+y+z=100
5x+3y+z/3=100
隐含条件: x、y、z都是整数;x≤20;y≤33。
用穷举法(枚举法),即把x, y, x所有可能的各种组合都一一判断是否符合上述不定方程组,具体是:
把x可能值0~20和y可能值0~33用二重循环来组合,每个x和y组合都可得到z值,即z=100-x-y,若x、y、z值使5x+3y+z/3=100成立,则该组x、y、z即为一组所求值。
#include<stdio.h>void main(){int x,y,z,j=1;printf("Possible solutions to buy 100 fowls whith 100 wen:\n");for(x=0;x<=20;x++)for(y=0;y<=33;y++){z=100-x-y;if(z%3==0 && 5*x+3*y+z/3==100){printf("%2d:cock=%-2d hen=%-2d chicken=%-2d\n",j,x,y,z);j++;}}}
7.
打印出所有的“水仙花数”。所谓“水仙花 数”是指一个三位正整数,其各位数字的立方和等于该数本身,例如:153=13+53+33。
分析:
可用穷举法,即把所有的三位正整数100~999按题意一一进行判断,如果一个三位正整数n的百位、十位、个位上的数字分别为i、j、k,则判断式为:
n= i3+ j3+k3
如何分解三位数n的百位、十位、个位:
百位:i = n/100;
十位:j= ( n/10 )%10;
个位:k= n%10;#include<stdio.h>void main(){int n,i,j,k;for(n=100;n<=999;n++){i=n/100;j=(n/10)%10;k=n%10;if ( n== i*i*i + j*j*j + k*k*k ) printf("%d = %d^3 + %d^3 + %d^3\n", n, i, j, k);}}
//判断某一年是否是闰年#include<stdio.h>void main(){int year,leap;scanf("%d",&year);if((year%4==0 && year%100!=0) || year%400==0)leap=1;else leap=0;if(leap)printf("%d is a leap year!\n",year);elseprintf("%d is not a leap year\n",year);}
//求方程的解#include<stdio.h>#include<math.h>void main(){float a,b,c,disc,x1,x2,realpart,imagpart;scanf("%f %f %f",&a,&b,&c);printf("The equation");if(fabs(a)<=1e-6)printf(" is not a quadratic\n");else{disc=b*b-4*a*c;if(fabs(disc)<=1e-6)printf(" has two equal roots:%8.4f\n",-b/(2*a));elseif(disc>1e-6){x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);printf(" has distinct real roots:%8.4f and %8.4f\n",x1,x2);}else{realpart=(-b)/(a*2);imagpart=sqrt(-disc)/(2*a);printf(" has complex root:\n");printf("%8.4f+%8.4fi\n",realpart,imagpart);printf("%8.4f-%8.4fi\n",realpart,imagpart);}}}
- (遍历)一些基本的求和,求积,求阶乘,计数问题(流程控制语句的使用)
- 【C语言】 计数、求和、求阶乘等简单算法
- n的阶乘分之一求和;求更简单的方法。
- 求N的阶乘(求1000的阶乘)--大数问题
- 流程控制练习*找奇数-求和-求积
- 大数问题:求N的阶乘
- 大数问题:求n的阶乘
- 关于求阶乘和的问题
- 求20的阶乘
- 求n的阶乘
- 求5的阶乘
- 求阶乘的模板
- 求1000的阶乘
- 求n的阶乘
- 求奇数的阶乘
- 求n的阶乘
- 求阶乘的和
- 求阶乘的函数
- Android SDK弱爆了---在64位Linux机器上使用的同学注意了
- Ubuntu安装Qt开发环境
- 设计模式实例与代码:Prototype模式
- 标准库中的map和set
- 如何在php中使用Libchart绘制中文的图表
- (遍历)一些基本的求和,求积,求阶乘,计数问题(流程控制语句的使用)
- 编译器参数:keep-generated-actionscript 作用于MXML文件
- c++第八周【任务1-3】实现复数类中的运算符重载
- PHP内核每天挖一点-数组的底层结构
- 无题
- JCo/JBOSS/JCA Adaptor集成笔记
- 红黑树实现——STL中的MAP
- 十大国内外免费网站监测服务综合介绍
- 爱的邮箱(@love.com)申请方法!