4. 30 C语言 程序结构-高级

来源:互联网 发布:学java去哪儿好 编辑:程序博客网 时间:2024/05/01 12:33

流程控制 

条件执行语句 

根据给定的表达式的值执行不同的代码路径 

  • if按条件执行代码 

  • switch根据整型参数的值执行代码 

 

循环语句 

多次执行相同的代码 

  • for执行循环 

  • while执行循环,在每次循环之前检查条件 

  • do-while执行循环,在每次循环之后检查条件 

 

跳转语句 

在不同的位置继续执行代码 

  • continue跳过外层循环体剩余的部分 

  • break终止外层循环 

  • goto在另一处位置继续执行 

  • return终止外层函数的执行 


    #pragma mark - mian function    

     

    熟悉X- Code快捷键


    作业: 

    1. 输入车牌尾号,以及星期几,空格隔开,用switch语句展示在当天是否限行; 

    注: 

    车牌尾号:0 1 2 3 4 5 6 7 8 9 

     星期:1 2 3 4 5 6 7 

         

    要求: 7尾号在星期1限行 

           3  8尾号在星期2限行 

           4  9尾号在星期3限行 

           5  0尾号在星期4限行 

           6  1尾号在星期5限行 

     

    #include <stdio.h> 

     

    int main(int argc, const char * argv[]) { 

         

        int day, number; 

         

        printf("Input day of the week and your car's last number: "); 

         

        scanf("%d %d",&day, &number); 

         

        switch (day) { 

            case 1: 

                if (number == 2 || number == 7) { 

                    printf("You can't drive your car today!\n"); 

                } else { 

                    printf("You can drive!\n"); 

                } 

                break; 

            case 2: 

                if (number == 3 || number == 8) { 

                    printf("You can't drive your car today!\n"); 

                } else { 

                    printf("You can drive!\n"); 

                } 

                break; 

            case 3: 

                if (number == 4 || number == 9) { 

                    printf("You can't drive your car today!\n"); 

                } else { 

                    printf("You can drive!\n"); 

                } 

                break; 

            case 4: 

                if (number == 5 || number == 0) { 

                    printf("You can't drive your car today!\n"); 

                } else { 

                    printf("You can drive!\n"); 

                } 

                break; 

            case 5: 

                if (number == 6 || number == 1) { 

                    printf("You can't drive your car today!\n"); 

                } else { 

                    printf("You can drive!\n"); 

                } 

                break; 

                 

            default: 

                printf("It's weekend! You can drive.\n"); 

                break; 

        } 

        return 0; 

    } 

     

     

    2. 已知abc + cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有的组合; 

     

    #include <stdio.h> 

     

    int main() { 

         

        int i, n = 0; 

         

        for (i = 100; i < 1000; i++) { 

             

            n = i / 100 + i % 100 / 10 * 10 + i % 100 % 10 * 100; 

             

            if (i + n == 1333) { 

                 

                printf("%d\n", i); 

            } 

        } 

        return 0; 

    } 

     

     

     

    3. 打印出如下图形 

    ***** 

     **** 

      *** 

       ** 

        * 

     

    #include <stdio.h> 

     

    int main() { 

         

        for (int i = 0; i < 5; i++) { 

            for (int j = 0; j < i; j++) { 

                printf(" "); 

            } 

            for (int j = 0; j < 5 - i; j++) { 

                printf("*"); 

            } 

            printf("\n"); 

        } 

        return 0; 

    } 

     

     

     

    4. 水仙花问题 

    水仙花数:水仙花数是指一个 n 位数 ( n 大于等于 3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:13次方 + 5的三次方 + 3三次方 = 153)。根据这个要求,打印所有三位数的水仙花数。 

     

    #include <stdio.h> 

     

    int main() { 

         

        int i = 100; 

         

        int a, b, c; 

        int n = 0; 

         

        for ( ; i < 1000; i++) { 

             

            a = i / 100; 

            b = i % 100 / 10; 

            c = i % 10; 

            n = a * a * a + b * b * b + c * c * c; 

             

            if (i == n) { 

                

                printf("%d\n", i); 

            } 

        } 

    return 0; 

    } 

     

     

    5. 打印输出如下图形 

    ******* 

     ***** 

      *** 

       * 

      *** 

     ***** 

    ******* 

    方法一: 分段打印 

    #include <stdio.h> 

     

    int main() { 

         

        int i, j, k; 

         

        for (i = 0; i < 4; i++) { 

            for (j = 0; j < i; j++) { 

                printf(" "); 

            } 

            for (k = 0; k < 7 - 2 * i; k++) { 

                printf("*"); 

            } 

            printf("\n"); 

        } 

         

        for (i = 0; i < 3; i++) { 

            for (j = 0; j < 2 - i; j++) { 

                printf(" "); 

            } 

            for (k = 0; k < i * 2 + 3; k++) { 

                printf("*"); 

            } 

            printf("\n"); 

        } 

         

        return 0; 

         

    } 

    方法二:使用abs()取绝对值 

     

    #include <stdio.h> 

    #include <math.h> 

    #include <stdlib.h> 

     

    int main() { 

         

        int i, j, k; 

         

        for (i = -3; i < 4; i++) { 

            for (j = 0; j < 3 - abs(i); j++) { 

                printf(" "); 

            } 

            for (k = 0; k < abs(i) * 2 + 1; k++) { 

                printf("*"); 

            } 

            printf("\n"); 

        } 

         

        return 0; 

         

    } 

     

     


0 0
原创粉丝点击