目录
前言
计算机高级语言提供了循环控制,用来处理需要进行的重复操作。
大多数的应用程序都会使用循环结构。熟练使用选择结构和循环结构是进行程序设计最基本的要求。
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语言中的循环结构时,可以总结出以下几点经验:
-
理解循环的基本概念:
- 循环结构用于重复执行一段代码,直到满足特定条件。
- C语言中主要有三种循环结构:
for
循环、while
循环和do while
循环。
-
for
循环:- 适用于已知循环次数的情况。
- 语法结构清晰,包含初始化、条件判断和迭代操作。
- 示例:
for (int i = 0; i < 10; i++) { printf("%d\n", i); }
-
while
循环:- 适用于循环次数不确定的情况,依赖于条件判断。
- 在进入循环之前先判断条件。
- 示例:
int i = 0; while (i < 10) { printf("%d\n", i); i++; }
-
do while
循环:- 与
while
循环类似,但至少执行一次循环体。 - 条件判断在循环体之后。
- 示例:
int i = 0; do { printf("%d\n", i); i++; } while (i < 10);
- 与
-
注意循环控制:
- 使用
break
语句可以提前终止循环。 - 使用
continue
语句可以跳过当前迭代,继续下一次循环。
- 使用
-
避免无限循环:
- 确保循环条件在某个时刻会变为
false
,以避免程序陷入无限循环。
- 确保循环条件在某个时刻会变为
-
调试技巧:
- 在循环中添加调试输出,帮助理解循环的执行过程。
- 使用调试工具逐步执行代码,观察变量变化。
-
实践与练习:
- 多做练习题,尝试不同类型的循环结构,巩固理解。
- 解决实际问题时,思考如何使用循环结构简化代码。
通过以上经验总结,可以更有效地掌握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项目,如果喜欢就点点关注吧!!!!大佬们-----------------------------