单元5 循环结构源代码
【例5-1】计算1到100的和。
#include \#define N 100 int Sum(void) { } int main() { }
【例5-2】计算给定数列前n项的和。
计算数列1/2,2/3,3/5,5/8,8/13,… 前n项的和,n由用户通过键盘输入。
#include \double SeqSum(int n) {
int i=1,s=0; //变量s为累加器 while(i<=N) { } return s;
s=s+i; i++;
int s=0; s= Sum ();
printf(\return 0;
double s=0,num=1,den=2,i=1; do {
s=s+num/den; den=den+num; num=den-num; i++;
}while(i<=n);
}
return s;
int main() { }
【例5-3】求整数的各位数码及位数。
键盘输入一个正整数,逆序输出各位数码,并输出该整数的位数。
#include \int Reverse (int n) { } int main() {
int n,sum;
printf(\请输入一个正整数:\scanf(\sum= Reverse (n);
printf(\整数%d是一个%d位数。\\n\return 0;
int m,sum=0;//m表示当前商n的个位,sum为计数器 printf(\逆序输出整数%d的各位数码为:\\n\for(;n!=0;n=n/10) { }
return sum;
m=n;//得到n的个位数 sum++; printf(\double sum; int n;
printf(\请输入项数:\scanf(\sum=SeqSum(n);
printf(\数列前%d的和为:%lf\\n\return 0;
}
【示例5-4】continue语句的使用
void test() { }
【例5-4】百马百担问题
有100匹马,驮100担货,大马驮三担,中马驮两担,两匹小马驮一担,问有大、中、小马各多少?共有多少种方案?
#include \#define H 100 #define N 29 #define M 46 int Horse(void) {
int dm,zm,xm,sum=0; for(dm=1;dm<=N;dm++) {
for(zm=1;zm<=M;zm++) {
xm=H-dm-zm; //计算小马的数量 if(xm%2==0&&dm*3+zm*2+xm/2==H) {//xm%2==0保证小马的数量是偶数
printf(\大马:=\\t中马:=\\t小
int a,b;
for(a=1,b=1;a<=10;a++,b++) { }
printf(\
{ } if(b>=10)
break; b+=3; continue; if(b%3==1)
马:=\\n\ } int main() { }
【例5-5】用递归法求n!
#include \double Factorial (double n) { } int main() { }
【例5-6】统计输出指定范围内的素数
输出指定范围内的所有素数,并统计输出此范围内素数的个数,要求指定范围由用户输入,每行输出5个素数。
double n,m;
printf(\请输入一个自然数:\scanf(\m=Factorial (n);
printf(\return 0;
if(n==1||n==0) //递归调用终止条件
return 1;
return n*Factorial (n-1); //利用递归关系进行递归调用 else int sum; sum=Horse();
printf(\共有%d种方案。\\n\return 0; }
return sum;
}
}
sum++;
#include \#include \int Prime(int n) { }
int Count(int a,int b) { } int main() {
int n,count=0;
printf(\之间的素数有:\for(n=a;n<=b;n++) { }
return count;
if(Prime(n)) { }
if(count%5==0)
printf(\printf(\count++;
int i,flag=1; if(n==1) { } return flag;
if(n%i==0) { }
flag=0; break; flag=0;
for(i=2;i<=sqrt(n);i++)
相关推荐: