第五章总结(循环结构程序设计)

5.1,使用while循环语句写代码:while后括号中的表达式成为循环条件循环开始时保证循环条件为真,需要重复的语句组成了循环体,

5.2,for语句的基本语法,形式为for(表达式1;表达式2;表达式3)for语言的执行过程首先计算表达式1,再判断表达式2,若其值为真(非0),则执行循环体语句,然后执行第3步,若值为假(0)结束循环 ,转到第五步执行;再计算表达式3;返回第二步继续执行;在结束循环,继续执行for语句的下一条语句{for(循环变量赋初值;循环条件;循环变量增量)循环变量赋初值是一个赋值语句,用于给循环变量赋初值,循环条件是一个关系表达式,决定何时终止循环(即确定循环的终值);循环变量增量决定循环变量在完成一次循环后如何变化,三个部分之间用“;”隔开。

for语句有以下几种格式,1for(;表达式2;表达式3)循环体语句;省略表达式1时,可以将循环变量赋初值放在for之前,注意此时不能省略第一个“;”。2.for(表达式1;;表达式3;)循环体语句;省略表达式2时,表示不对循环进行控制,这时如果没有其他处理的话,会形成死循环,应避免这样使用for结构。3.for(表达式1;表达式2;)循环体语句;省略表达式3时,可以在循环体语句中加入修改循环变量的值的语句。

5.3while语句的基本语法

while语句在使用时总要先判断一个条件,所以可以使用while语句实现“当型”循环,while语句的一般形式while(表达式)循环体;步骤1:计算表达式的值若表达式的值为真,则执行第二步若为假,转到第四步,2.执行循环体语句3.返回第一步4.结束循环,执行while语句的下一条语句注意,while语句的特点是先判断循环条件,后执行循环体。

5.4do-while语句的基本语法

do-while语句在使用时,首先执行循环体语句,然后在判断条件,所以可以用do-while语句实现“直到型”循环,do-while语句的一般形式

do

循环体

while(表达式)

步骤1.执行循环体语句2.计算表达式的值若表达式的值为真(非0),返回第一步,若表达式的值为假(0)则执行第三步,3.结束循环执行do-while语句的下一条语句,注意do-while语句的特点时先执行循环体,后判断循环条件,因此,do-while至少要执行一次循环体。

5.5改变循环结构的跳转语句

1.break语句,break语句用在循环语句和switch语句中,一般形式为

break;      当break语句用于循环体语句时可使程序终止循环而去执行循环语句的后缀语句,通常break语句总是与if语句一起配合使用,即满足条件时便跳出循环。

2.continue语句,continue语句的作用是跳过循环体中continue后面的语句,继续下一次循环。continue语句只能用在循环语句中,常与if语句一起使用一般形式为  continue;

3.goto语句一般形式为

goto 语句标号;说明(语句标号是一个有效的标识符,使用时在语句标号的后面跟一个:出现在某语句的前面。程序执行到goto语句时,会控制跳转到该语句标号处达到控制循环的目的。

循环嵌套

for语句中嵌套for语句,for语句中嵌套while语句,do-while语句中嵌套do-while语句,while语句中嵌套do-while语句。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/*【例5.1】*/

//int main()
//{
//    int n = 13, year;
//    double nu, r = 0.02;
//    for (year = 1; year <= 10; year++)
//    {
//        nu = n * pow((1 + r), year);
//        printf("%2d年后,人数为:%.2f亿\n", year, nu);
//    }return 0;
//}

//int main()
//{
//    int b , c;
//    for (b = 1; b <= 9; b++)
//    {
//        for (c = 1; c <= b; c++)
//            printf("%d*%d==%d\t", c, b, c * b);
//        printf("\n");
//    
//    }return 0;
//}
            /*【例5.2】*/
//int main()
//{
//    double sum, item, flag, denominator;
//    sum = 0; item = 1; flag = 1; denominator = 1;
//    while (fabs(item) >= 1e-6)
//    {
//        sum = sum + item;
//        flag = -flag;
//        denominator = denominator + 3;
//        item = flag / denominator;
//    }printf("sum=%f\n", sum);
//    return 0;
//}
        /*【例5.3】*/
//int main()
//{
//    int i, n, sum;
//    scanf_s("%d", &n);
//    sum = 0;
//    for (i = 1; i <= n; i++)
//        sum = sum + i;
//    printf("由1到%d的和是:%d\n", n, sum);
//    return 0;
//}

//int main()
//{
//    int a, b, c, max;
//    scanf_s("%d%d%d", &a, &b, &c);
//    if (a > b)
//        if (a > c)
//            max = a;
//        else max = c;
//    else
//        if (b > c)
//            max = b;
//        else
//            max = c;
//    printf("max=%d\n", max);
//    return 0;
//}
//int main()
//{
//    int x, y;
//    printf("x=");
//    scanf_s("%d", &x);
//    if (x)
//        y = 1;
//    else
//        y = -1;
//    printf("y=%d", y);
//    return 0;
//}
//int main()
//{
//    int a, b, c;
//    float area;
//    double s;
//    printf("请输入三角形的三条边:");
//    scanf_s("%d,%d,%d", &a, &b, &c);
//    s = (a + b + c) / 2.0;
//    if (a + b <= c || b + c <= a || a + c <= b)
//        printf("不构成三角形\n");
//    else {
//        area = sqrt(s * (s - a) * (s - b) * (s - c));
//        printf("三角形的面积是:%f\n", area);
//    }return 0;
//}
//int main()
//{
//    int x; float y;
//    printf("请输入x的值");
//    scanf_s("%d", &x);
//    if (x != 0)
//        y = 1.0 / x;
//    else
//        y = 0;
//    printf("%d,%f", x, y);
//    return 0;
//}
//int main()
//{
//    char c = 'm';
//    int i = 10, j = 20, k = 30;
//    float x = 13e+5, y = 10.85;
//    printf("%d,%d,", 'a' + 5 < c, -i - 2 * j >= k + 1);
//    printf("%d,%d,", 1 < j < 5, x - 5.25 <= x + y);
//    printf("%d,%d\n", i + j + k == -1 * j, k == j == i + 5);
//    return 0;
//}
//int main()
//{
//    int a = 3, b = 3, c = 2, d;
//    printf("%d,",!a && !b && c);
//    printf("%d,", !a || !b || c);
//    printf("%d\n", a >= b && b > c);
//    d = c-- || (b = 6) && a++;
//    printf("a=%d,b=%d,c=%d,d=%d\n", a, b, c, d);
//    return 0;
//}
//int main()
//{
//    int x, y;
//    printf("请输入两个整数:");
//    scanf_s("%d,%d", &x, &y);
//    printf("两个整数中最大数为:%d\n", x > y ? x : y);
//    return 0;
//}
            /*【例5.4】*/
//int main()
//{
//    int i, n;
//    double f;
//    printf("输入n的值:");
//    scanf_s("%d", &n);
//    f = 1;
//    for (i = 1; i <= n; i++)
//        f = f * i;
//    printf("%d=%.0f\n", n, f);
//    return 0;
//}
        /*【例5.5】*/
//int main()
//{
//    int n, i, denominator, flag;
//    float sum, item;
//    printf("输入n的值:");
//    scanf_s("%d", &n);
//    flag = 1;
//    denominator = 1;
//    sum = 0;
//    for(i=1;i<=n;i++)
//    {
//        item = flag * 1.0 / denominator;
//        sum = sum + item;
//        flag = -flag;
//        denominator = denominator + 3;
//    }printf("Sum=%.2f\n", sum);
//    return 0;
//}
        /*【例5.6】*/
//int main()
//{
//    int i;
//    float x, max;
//    printf("请输入第1个数:");
//    scanf_s("%f", &x);
//    max = x;
//    for(i=1;i<=9;i++)
//    {
//        printf("请输入第%d个数:", i + 1);
//        scanf_s("%f", &x);
//        if (x > max)
//            max = x;
//    }printf("10个数的最大数是:%0.f",max);
//    return 0;
//    
//}
        /*【例5.7】*/
//int main()
//{
//    int n, a, b, c;
//    for (n = 100; n <= 999; n++)
//    {
//        a = n / 100;
//        b = n % 100 / 10;
//        c = n % 10;
//        if (n == a * a * a + b * b * b + c * c * c)
//            printf("%5d", n);
//    }return 0;
//}
        /*【例5.8】*/
//int main()
//{
//    int n, sum, i;
//    printf("请输入一个正整数:");
//    scanf_s("%d", &n);
//    sum = 0;
//    for (i = 1; i <= n - 1; i++)
//        if (n % i == 0)
//            sum = sum + i;
//    if (n == sum)
//        printf("%d是完数\n", n);
//    else
//        printf("%d不是完数\n", n);
//    return 0;
//}
        /*【例5.9】*/
//int main()
//{
//    int u, l, d, i, o;
//    char ch;
//    u = l = d = o = 0;
//    printf("输入10个字符:");
//    for (i = 1; i <= 10; i++)
//    {
//        ch = getchar();
//        if (ch >= 'a' && ch <= 'z')
//            l++;
//        else if (ch >= 'A' && ch <= 'Z')
//            u++;
//        else if (ch >= '0' && ch <= '9')
//            d++;
//        else
//            o++;
//    }printf("小写字母%d个,大写字母%d个,数字%d个,其他字符%d个\n", l, u, d, o);
//    return 0;
//}
        /*【例5.10】*/
//int main()
//{
//    int i;
//    char ch;
//    for (i = 1; (ch = getchar()) != '\n'; i++)
//        putchar(ch - 32);
//    return 0;
//}
        /*【例5.11】*/
//int main()
//{
//    int n = 0, i;
//    char ch;
//    printf("输入3个数字:");
//    for(i=1;i<=3;i++)
//    {
//        scanf_s("%c", &ch);
//        n = n * 10 + ch - '0';
//    }printf("%d\n", n);
//    return 0;
//}
        /*【例5.12】*/
//int main()
//{
//    int i, f, n;
//    printf("请输入一个正整数:");
//    scanf_s("%d", &n);
//    f = 1;
//    for (i = 2; i <= n - 1 && f; i++)
//        if (n % i == 0)
//            f = 0;
//    if (f)
//        printf("%d是素数\n", n);
//    else
//        printf("%d不是素数\n", n);
//    return 0;
//}
        /*【例5.13】*/
//int main()
//{
//    int i, sum;
//    i = 1; sum = 0;
//    while(i<=100)
//    {
//        sum = sum + i;
//        i = i + 1;
//    }printf("sum=%d\n", sum);
//        return 0;
//}
        /*【例5.14】*/
//int main()
//{
//    int i; long n, fact;
//    i = 2; fact = 1;
//    printf("请输入n的值:");
//    scanf_s("%ld", &n);
//    while(i<=n)
//    {
//        fact = fact * i;
//        i = i + 1;
//    }printf("%ld!=%ld\n", n, fact);
//    return 0;
//}
        /*【例5.16】*/
//int main()
//{
//    int i, sum;
//    i = 1, sum = 0;
//    do
//    {
//        sum = sum + i;
//        i = i + 1;
//    } while (i <= 100);
//        printf("sum=%d", sum);
//    return 0;
//}
        /*【例5.17】*/
//int main()
//{
//    int a, b, r, n, m;
//    printf("请输入两个整数:");
//    scanf_s("%d%d", &a, &b);
//    m = a, n = b;
//    do
//    {
//        r = a % b;
//        a = b;
//        b = r;
//    } while (r != 0);
//    printf("%d和%d的最大公约数是:%d\n", m, n, a);
//    printf("最大公倍数是:%d", m * n / a);
//    return 0;
//}
        /*【例5.18】*/
//int main()
//{
//    int count = 0;
//    long n, m;
//    printf("请输入一个整数:");
//    scanf_s("%ld", &n);
//    m = n;
//    if (n < 0)n = -n;
//    do
//    {
//        n = n / 10;
//        count++;
//    } while (n != 0);
//    printf("整数%d有%d位数\n", m, count);
//    return 0;
//}
        /*【例5.19】*/
//int main()
//{
//    int i = 5;
//    do
//    {
//        if (i % 3 == 1)
//            if (i % 5 == 2)
//            {
//                printf("%d", i);
//                break;
//            }i++;
//    } while (i != 0);
//    return 0;
//}
        /*【例5.20】*/
//int main()
//{
//    int n, m, i;
//    printf("请输入一个正整数:");
//    scanf_s("%d",&n);
//    m = sqrt(n);
//    for (i = 2; i <= m; i++)
//        if (n % i == 0)
//            break;
//    if (i > m)
//        
//        printf("%d是素数!\n", n);
//    else
//    printf("%d是素数!\n", n);
//    return 0;
//}
        /*【例5.22】*/
//int main()
//{
//    int i, n = 1;
//    for (i = 1; i <= 100; i++)
//    {
//        if (i % 7 != 0)
//            continue;
//        printf("%4d", i);
//        if (n++ % 5 == 0)printf("\n");
//    }return 0;
//}
        /*【例5.23】*/
//int main()
//{
//    int n, s = 0;
//    n = 1;
//    while(n<10)
//    {
//        s = s + n;
//        if (s > 5)
//            break;
//        if (n % 2 == 1)
//            continue;
//        n++;
//    }printf("s=%d,n%d\n", s, n);
//    return 0;
//}
        /*【例5.24】*/
//int main()
//{
//    int i, sum;
//    i = 1; sum = 0;
//lopp: if(i<=100)
//{
//    sum = sum + i;
//    i = i + 1;
//    goto lopp;
//}printf("sum=%d\n", sum);
//return 0;
//}
        /*【例5.25】*/
//int main()
//{
//    int i, j;
//    double fa, s = 0;
//    for(i=1;i<=10;i++)
//    {
//        fa = 1;
//        for (j = 1; j <= i; j++)
//            fa = fa * j;
//        s = s + fa;
//    }printf("1!+2!+3!+...=10!=%.0f\n", s);
//    return 0;
//}
         /*【例5.26】*/
//int main()
//{
//    int i, j;
//    for (i = 1; i <= 9; i++)
//    {
//        for (j = 1; j <= i; j++)
//            printf("%d*%d=%d\t", j, i, j * i);
//        printf("\n");
//    }return 0;
//}
        /*【例5.27】*/
//int main()
//{
//    int i, n, k, count = 0;
//    n = 2;
//    while(n<=100)
//    {
//        k = sqrt(n);
//        for (i = 2; i <= k; i++)
//            if (n % i == 0)break; if(i > k)
//            {
//                printf("%4d", n);
//                if (++count % 10 == 0)printf("\n");
//            }n++;
//    }
//    return 0;
//}
        /*【例5.28】*/
//int main()
//{
//    int i, n, m;
//    for (m = 10; m <= 20; m++)
//    {
//        n = m, i = 2;
//        printf("%d=", n);
//        do
//        {
//            if (n % i == 0)
//            {
//                printf("%d*", i);
//                n = n / i;
//            }
//            else
//                i++;
//        } while (n != i);
//        printf("%d\n", n);
//    }return 0;
//}
        /*【例5.34】*/
//int main()
//{
//    int i, j;
//    for (i = 1; i <= 5;i++)
//    {
//        for (j = 1; j <= 20 - i; j++)
//            printf("");
//        for (j = 1; j <= 2 * i - 1; j++)
//            printf("*");
//        printf("\n");
//    }return 0;
//}
        /*【例5.29】*/
//int main()
//{
//    int day, d1, d2;
//    day = 9;
//    d2 = 1;
//    do
//    {
//        d1 = (d2 + 1) *2;
//        d2 = d1;
//        --day;
//    } while (day > 0);
//        printf("第一天摘了%d\n", d1);
//        return 0;
//}
        /*【例5.30】*/
//#define eps 1e-6
//int main()
//{
//    int n = 1 ; float x;
//    double fz, fm = 1, sinx;
//    printf("输入x的值:");
//    scanf_s("%f", &x);
//    fz = x; sinx = x;
//    do
//    {
//        n = n + 1;
//        fz = -fz * x * x;
//        fm = fm * (2 * n - 2) * (2 * n - 1);
//        sinx = sinx + fz / fm;
//    } while (fabs(fz / fm) > eps);
//    printf("sin(%f=%0.6f\n", x, sinx);
//    printf("sin(%f=%0.6f\n", x, sin(x));
//    return 0;
//}
        /*【例5.31】*/
//#define eps 1e-6
//int main()
//{
//    float x1, x0, f, f1;
//    x1 = 1.0;
//    do {
//        x0 = x1;
//        f = ((2 * x0 - 4) * x0 + 3) * x0 - 6;
//        f1 = (6 * x0 - 8) * x0 + 3;
//        x1 = x0 - f / f1;
//    } while (fabs(x1 - x0) > eps);
//    printf("%6.2f", x1);
//    return 0;
//}
        /*【例5.32】*/
//int main()
//{
//    int men, women, child;
//    for (men = 0; men <= 9; men++)
//        for (women = 0; women <= 12; women++)
//        {
//            child = 36 - men - women;
//            if (men * 4 + women * 3 + child*0.5 == 36)
//                printf("男:%d,女:%d,小孩:%d\n", men, women, child);
//        }return 0;
//}
        /*【例5.33】*/
//int main()
//{
//    int i, j, k, n = 0;
//    for(i=1;i<5;i++)
//        for(j=1;j<5;j++)
//        for(k=1;k<5;k++)
//            if(i!=k&&i!=j&&j!=k)
//            {
//                printf("%d%d%d\t", i, j, k);
//                if (++n % 5 == 0)printf("\n");
//            }printf("\n共有:%d\n", n);
//            return 0;
//}
        /*【例5.35】*/
//int main()
//{
//    int m, n, count = 0;
//    m = rand() % (80 - 10 + 1) + 10;
//    printf("请输入一个19-80之间的整数:");
//    while (1)
//    {
//        scanf_s("%d", &n);
//        count++;
//        if (m == n)
//        {
//            printf("恭喜!你猜对了,你真棒!\n");
//            break;
//        }
//        else if (m > n && count < 5)
//            printf("对不起!你猜小了!再来一次!");
//        else if (m < n && count < 5)
//            printf("对不起!你猜大了!再来一次!");
//        if (count == 5)
//        {
//            printf("对不起!你没有机会了!\n这个数是:%d,游戏结束!\n", m);
//            break;
//        }
//    }return 0;
//}
        /*【例5.36】*/
//int main()
//{
//    int x, i, j = 0, n, k = 0;
//    for (x = 100; x < 1000; x++)
//    {
//        k = sqrt(x);
//        for (i = 2; i <= k; i++)
//            if (x % i == 0)
//                break;
//        if (i > k)
//        {
//            k = x;
//            n = 0;
//            while (k > 0)
//            {
//                n = n * 10 + k % 10;
//                k /= 10;
//            }if (x == n)
//            {
//                printf("%d\t", x);
//                if (++j % 5 == 0)printf("\n");
//            }
//        }
//    }return 0;
//}
        /*【例5.37】*/
//int main()
//{
//    int x, t;
//    printf("i\tpower\n");
//    for (x = 100; x < 1000; x++)
//    {
//        t = x * x;
//        while (t != 0)
//        {
//            if (x == t % 1000)
//            {
//                printf("%d\t%d\n", x, x * x);
//                break;
//            }
//            else
//                t = t / 10;
//        }
//    }return 0;
//}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值