新手c语言讲解及题目分享(十一)——循环结构专项练习

目录

一、while循环

二、do-while循环

三.for循环

四.经验总结和习题分享

习题分享:

找出质数

反向打印数字

计算1到N的和

字符统计

九九乘法表

反转数字

打印星号三角形

计算数字的位数

打印菱形

计算数字的和

前言

计算机高级语言提供了循环控制,用来处理需要进行的重复操作。

大多数的应用程序都会使用循环结构。熟练使用选择结构和循环结构是进行程序设计最基本的要求。

C语言中,实现循环结构有3种方式:while循环(当型),do-while循环(直到型),for循环(计数),接下来我将会一一讲解这3种循环,顺便分享一下我在学习过程中遇到的问题和经验总结

一、while循环

1.while循环语句的一般表达式:

while(表达式){

          循环体

}

注:表达式可以是任意合法的语句,一般为关系表达式和逻辑表达式。

2.执行原理:若表达式的值为非0,则执行循环体内容;若表达式的值为0.则跳出循环体;

3.while语句的特点:先判断表达式后执行循环体。

注:while语句后{}里的内容称为循环体,若循环体内容为空也是正确的。

二、do-while循环

1.do-while语句的一般形式:

do{

循环体

}while(表达式);

2.执行原理:同while一样若表达式的值为非0,则执行循环体内容;若表达式的值为0.则跳出循环体。

注:do-while语句至少都得执行一次;是因为它是先执行后判断。

表达式后“;”不能省略


三.for循环

1.for循环语句的一般形式:
for(表达式1;表达式2;表达式3)

{

循环体

}

注:表达式1一般给循环变量赋初始值;表达式2一般说明循环条件;表达式3一般用于修正某些变量的值

2.执行原理:计算表达式1>>>计算表达式2,若值为非0,则执行循环体;否则跳出循环>>>计算表达式3,继续回到表达式2上,直到跳出循环为止。

3.语句特点:

先判断表达式后执行循环内容

注:表达式1,表达式2,表达式3中可以任意去掉一个,根据具体题目判断。若循环体内语句只有一条,则可以省略“   { }    ”。

四.经验总结和习题分享

在学习C语言中的循环结构时,可以总结出以下几点经验:

  1. 理解循环的基本概念

    • 循环结构用于重复执行一段代码,直到满足特定条件。
    • C语言中主要有三种循环结构:for循环、while循环和do while循环。
  2. for循环

    • 适用于已知循环次数的情况。
    • 语法结构清晰,包含初始化、条件判断和迭代操作。
    • 示例:
      for (int i = 0; i < 10; i++) { printf("%d\n", i); }
  3. while循环

    • 适用于循环次数不确定的情况,依赖于条件判断。
    • 在进入循环之前先判断条件。
    • 示例:
      int i = 0; while (i < 10) { printf("%d\n", i); i++; } 
  4. do while循环

    • while循环类似,但至少执行一次循环体。
    • 条件判断在循环体之后。
    • 示例:
      int i = 0; do { printf("%d\n", i); i++; } while (i < 10);

  5. 注意循环控制

    • 使用break语句可以提前终止循环。
    • 使用continue语句可以跳过当前迭代,继续下一次循环。
  6. 避免无限循环

    • 确保循环条件在某个时刻会变为false,以避免程序陷入无限循环。
  7. 调试技巧

    • 在循环中添加调试输出,帮助理解循环的执行过程。
    • 使用调试工具逐步执行代码,观察变量变化。
  8. 实践与练习

    • 多做练习题,尝试不同类型的循环结构,巩固理解。
    • 解决实际问题时,思考如何使用循环结构简化代码。

通过以上经验总结,可以更有效地掌握C语言中的循环结构,提高编程能力。

习题分享:

1.

找出质数

描述:使用嵌套循环找出1到100之间的所有质数。

#include <stdio.h>  

int main() {  
    int num, i, isPrime;  

    printf("1到100之间的质数有:\n");  
    for (num = 2; num <= 100; num++) {  
        isPrime = 1; // 假设是质数  
        for (i = 2; i <= num / 2; i++) {  
            if (num % i == 0) {  
                isPrime = 0; // 不是质数  
                break;  
            }  
        }  
        if (isPrime) {  
            printf("%d\n", num);  
        }  
    }  
    return 0;  
}

2.

反向打印数字

描述:使用do while循环从N反向打印到1,N由用户输入。

#include <stdio.h>  

int main() {  
    int N;  
    printf("请输入一个正整数N: ");  
    scanf("%d", &N);  
    
    do {  
        printf("%d\n", N);  
        N--;  
    } while (N > 0);  
    
    return 0;  
}

3.

计算1到N的和

描述:使用while循环计算从1到N的和,N由用户输入。

#include <stdio.h>  

int main() {  
    int N, sum = 0, i = 1;  
    printf("请输入一个正整数N: ");  
    scanf("%d", &N);  
    
    while (i <= N) {  
        sum += i;  
        i++;  
    }  
    
    printf("从1到%d的和是: %d\n", N, sum);  
    return 0;  
}

4.

字符统计

描述:使用do while循环统计输入字符串中的字符数,输入以#结束。

#include <stdio.h>  

int main() {  
    char ch;  
    int count = 0;  
    
    printf("请输入字符串(输入#结束):\n");  
    
    do {  
        ch = getchar(); // 读取字符  
        if (ch != '#' && ch != '\n') {  
            count++;  
        }  
    } while (ch != '#');  
    
    printf("字符总数是: %d\n", count);  
    return 0;  
}

5.

九九乘法表

描述:使用嵌套循环打印九九乘法表。

#include <stdio.h>  

int main() {  
    for (int i = 1; i <= 9; i++) {  
        for (int j = 1; j <= i; j++) {  
            printf("%d * %d = %2d ", j, i, j * i);  
        }  
        printf("\n");  
    }  
    return 0;  
}

6.

反转数字

描述:使用循环反转一个正整数的数字。

#include <stdio.h>  

int main() {  
    int num, reversed = 0;  
    printf("请输入一个正整数: ");  
    scanf("%d", &num);  
    
    while (num != 0) {  
        reversed = reversed * 10 + num % 10; // 取最后一位并构建反转数  
        num /= 10; // 去掉最后一位  
    }  
    
    printf("反转后的数字是: %d\n", reversed);  
    return 0;  
}
7.

打印星号三角形

描述:使用嵌套循环打印一个高度为N的星号三角形,N由用户输入

#include <stdio.h>  

int main() {  
    int N;  
    printf("请输入三角形的高度N: ");  
    scanf("%d", &N);  
    
    for (int i = 1; i <= N; i++) {  
        // 打印空格  
        for (int j = i; j < N; j++) {  
            printf(" ");  
        }  
        // 打印星号  
        for (int k = 1; k <= (2 * i - 1); k++) {  
            printf("*");  
        }  
        printf("\n");  
    }  
    return 0;  
}

8.

计算数字的位数

描述:使用循环计算一个正整数的位数,N由用户输入。

#include <stdio.h>  

int main() {  
    int N, count = 0;  
    printf("请输入一个正整数N: ");  
    scanf("%d", &N);  
    
    do {  
        count++;  
        N /= 10; // 每次除以10,去掉最后一位  
    } while (N > 0);  
    
    printf("数字的位数是: %d\n", count);  
    return 0;  
}

9.

打印菱形

描述:使用嵌套循环打印一个高度为N的菱形,N由用户输入

#include <stdio.h>  

int main() {  
    int N;  
    printf("请输入菱形的高度N: ");  
    scanf("%d", &N);  
    
    // 打印上半部分  
    for (int i = 1; i <= N; i++) {  
        for (int j = i; j < N; j++) {  
            printf(" ");  
        }  
        for (int k = 1; k <= (2 * i - 1); k++) {  
            printf("*");  
        }  
        printf("\n");  
    }  
    
    // 打印下半部分  
    for (int i = N - 1; i >= 1; i--) {  
        for (int j = N; j > i; j--) {  
            printf(" ");  
        }  
        for (int k = 1; k <= (2 * i - 1); k++) {  
            printf("*");  
        }  
        printf("\n");  
    }  
    
    return 0;  
}

10.

计算数字的和

描述:使用循环计算用户输入的多个数字的和,输入以-1结束。

#include <stdio.h>  

int main() {  
    int num, sum = 0;  
    printf("请输入多个数字(输入-1结束):\n");  
    
    while (1) {  
        scanf("%d", &num);  
        if (num == -1) {  
            break; // 结束输入  
        }  
        sum += num; // 累加和  
    }  
    
    printf("输入数字的总和是: %d\n", sum);  
    return 0;  
}

-------------------------------每天不定时分享一些c语言题目和32项目,如果喜欢就点点关注吧!!!!大佬们-----------------------------

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樱娆π

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值