Lawliet|C语言学习笔记5——循环结构

    科技2025-06-08  8

    C语言学习笔记——循环结构

    1.求1+2+3+…+100

    #include<stdio.h> int main() { int i=1,sum=0; //定义变量i的初值为1,sum的初值为0 while(i<=100) //当i>100,条件表达式i<=100的值为假,不执行循环体 { //循环体开始 sum=sum+i; //第1次累加后,sum的值为1 i++; //加完后,i的值加1,为下次累加做准备 } //循环体结束 printf("sum=%d\n",sum); //输出1+2+3…+100的累加和 return 0; }

    1.1 while语句:只要当循环条件表达式为真(即给定的条件成立),就执行循环体语句。 (1) 循环体如果包含一个以上的语句,应该用花括号括起来,作为复合语句出现。 (2) 不要忽略给i和sum赋初值,否则它们的值是不可预测的,结果显然不正确。 (3) 在循环体中应有使循环趋向于结束的语句。如本例中的“i++;”语句。如果无此语句,则i的值始终不改变,循环永远不结束。

    #include <stdio.h> int main() { int i=1,sum=0; do { sum=sum+i; i++; }while(i<=100); printf("sum=%d\n",sum); return 0; }

    1.2 do while语句:do…while语句的特点是,先无条件地执行循环体,然后判断循环条件是否成立。 在一般情况下,用while语句和用do…while语句处理同一问题时,若二者的循环体部分是一样的,那么结果也一样。 但是如果while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。当条件一开始为假时,while语句一次也不执行,do while语句至少执行一次

    #include <stdio.h> int main() { int i,sum=0; for(i=1;i<=100;i++) { sum=sum+i; } printf("%d",sum); }

    1.3 for语句—— 格式:for(表达式1;表达式2;表达式3) 其中,三个表达式皆可省略,但分号不可省略,表达式1用于对循环变量赋初值,表达式1只执行一次;表达式2为循环条件表达式;表达式3一般用于使循环正常结束,也可以存放循环中所有的操作。

    1.4 循环的嵌套

    计算 1+1/2-1/3+1/4-1/5+1/6-……+1/n #include <stdio.h> main() { double i,n; scanf("%lf",&n); double sum=1; int flag=1; for(i=2;i<=n;i++) { sum=sum+1/i*flag; flag=-flag; } printf("%.3lf",sum);//保留三位小数输出 } 奇偶归一猜想 ——对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1。 如n = 11,得序列:11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1。(步骤中最大数是52)

    题目:输入正整数n,求这个n归一过程中的最大值。

    #include <stdio.h> main() { int i,n,max=1; scanf("%d",&n); for(i=n;i>1;) { if(i%2==0) i=i/2; else if(i%2!=0) i=i*3+1; if(i>max) {max=i;} } printf("%d",max); } 有一分数序列:2/1, 3/2, 5/3, 8/5, 13/8, 21/13 … 求出这个数列的前n项之和,保留两位小数。 #include <stdio.h> main() { int n,i; double a=1,b=2,c,sum=0; scanf("%d",&n); for(i=1;i<=n;i++) { sum=sum+b/a; c=b; b=a+b; a=c; } printf("%.2f",sum); }
    Processed: 0.010, SQL: 8