C的控制语句:循环
C的控制语句:循环
1、三种循环方式--->
for
、while
、do while
2、函数
fabs()
3、编写有返回值的函数
三种循环方式
while
示例代码:
# include<stdio.h>
int main(void)
{
long num; long sum = 0L; int status;
printf("请输入一个整型整数进行求和");
printf("(q 或者 quit 退出):");
status = scanf("%ld", &num); // scanf()函数特性,如果scanf()函数接收到一个整数,会把该整数存入num当中,并且返回一个1赋值给status
while (status == 1)
{
sum = sum + num;
printf("请输入一个整型整数进行求和 (q 或者 quit 退出):");
status = scanf("%ld", &num); // 如果用户输入的不是数字,scanf()函数读取失败,返回0,程序退出--->利用的scanf()的双重特性避免了循环过程中的程序交互输入问题
}
printf("这些整型整数的和是:%ld\n", sum);
getchar();
return 0;
}
变式:
# include<stdio.h>
int main(void)
{
long num; long sum = 0L; int status;
printf("请输入一个整型整数进行求和");
printf("(q 或者 quit 退出):");
while ((scanf("%ld", &num)) == 1)
{
sum = sum + num;
printf("请输入一个整型整数进行求和 (q 或者 quit 退出):");
}
getchar();
return 0;
}
注意:
每次循环都被称为一次迭代
循环终止条件:
# include<stdio.h>
int main(void)
{
int n = 0;
while (n < 7) // n < 7就是循环终止条件
{
printf("n = %d\n", n);
n++;
printf("Now n = %d\n", n);
}
printf("结束循环!");
getchar();
return 0;
}
注意:
# include<stdio.h>
int main(void)
{
int n = 0;
while (n < 3)
printf("Now n = %d", n);
n++; // 只有跟在循环条件后面的一条语句是循环语句,第二句开始就不是,所以n不会递增,while的循环条件一直为true
printf("Down!");
return 0;
}
_Bool类型
注意:
bool 不是 c语言的关键字, 但是c99标准和c++把bool当作关键字
# include<stdio.h>
# include<stdbool.h> // 定义了Bool类型
int main(void)
{
long num; long sum = 0L; _Bool input_is_good;
printf("输入一个数");
printf("q 或者 quit 退出:");
input_is_good = (scanf("%ld", &num) == 1);
while (input_is_good)
{
sum = sum + num;
printf("输入一个数");
printf("q 或者 quit 退出:");
input_is_good = (scanf("%ld", &num) == 1);
}
printf("Down!");
getchar();
return 0;
}
For
/**
* @Author: Lucifer
* @Date: 4/16/2023, 4:40:59 PM
* @LastEditors: Lucifer
* @LastEditTime: 4/16/2023, 4:40:59 PM
* Description: A case about for
* Copyright: Copyright (©)}) 2023 Your Name. All rights reserved.
*/
# include<stdio.h>
int main(void)
{
const int NUMBER = 22;
int count;
for (count = 1; count <= NUMBER; count++)
{
printf("Hello World!");
}
getchar();
return 0;
}
字符代替数字作为测试条件和初始值:
# include<stdio.h>
int main(void)
{
char ch;
for (ch = 'a'; ch < 'z'; ch++) {
printf("字符!!!");
}
getchar();
return 0;
}
省略循环表达式写法:
/**
* @Author: Lucifer
* @Date: 4/16/2023, 5:26:45 PM
* @LastEditors: Lucifer
* @LastEditTime: 4/16/2023, 5:26:45 PM
* Description: for循环当中省略表达式的写法
* Copyright: Copyright (©)}) 2023 Your Name. All rights reserved.
*/
# include<stdio.h>
int main(void)
{
int n, ans, time;
ans = 2;
time = 1;
for (n = 3; ans <= 25;)
{
ans = ans * n;
printf("循环次数: %d \n", time);
time++;
}
printf("n = %d, ans = %d\n", n, ans * n);
getchar();
return 0;
}
逗号运算符运用在for
循环中表达多种用法:
/**
* @Author: Lucifer
* @Date: 4/16/2023, 5:37:23 PM
* @LastEditors: Lucifer
* @LastEditTime: 4/16/2023, 5:37:23 PM
* Description: ,运算符,在一个for循环中,每个条件表达式可以用,来表达多种条件
* Copyright: Copyright (©)}) 2023 Your Name. All rights reserved.
*/
# include<stdio.h>
int main(void)
{
const int FIRST_OZ = 46;
const int NEXT_OZ = 20;
int ounces, cost;
printf(" ounces cost\n");
for (ounces = 1, cost = FIRST_OZ; ounces <= 16; ounces++, cost += NEXT_OZ)
{
printf("%5d $%4.2f\n", ounces, cost / 100.0);
}
getchar();
return 0;
}
示例代码2:
/**
* @Author: Lucifer
* @Date: 4/16/2023, 7:41:35 PM
* @LastEditors: Lucifer
* @LastEditTime: 4/16/2023, 7:41:35 PM
* Description: ZenO悖论
* Copyright: Copyright (©)}) 2023 Your Name. All rights reserved.
*/
# include<stdio.h>
int main(void)
{
int t_ct; // 项计数
double time, power_of_2;
int limit;
printf("输入你想射几米:");
scanf("%d", &limit);
// 箭永远只会行进一半的路程
for (time = 0, power_of_2 = 1, t_ct = 1; t_ct <= limit; t_ct++, power_of_2 *= 2.0)
{
time += 1.0 / power_of_2;
printf("time = %f, 当terms = %d \n", time, t_ct);
}
getchar();
getchar();
return 0;
}
do...while
示例代码:
/**
* @Author: Lucifer
* @Date: 4/16/2023, 7:47:13 PM
* @LastEditors: Lucifer
* @LastEditTime: 4/16/2023, 7:47:13 PM
* Description: 猜数字游戏
* Copyright: Copyright (©)}) 2023 Your Name. All rights reserved.
*/
# include<stdio.h>
int main(void)
{
const int secret_code = 13;
int code_entered;
do
{
printf("有一个内置的数,在10到20之间,猜猜是几?:\n");
printf("请输入你猜的数:\n");
scanf("%d", &code_entered);
getchar();
} while (code_entered != secret_code);
printf("猜对了,游戏结束!");
getchar();
return 0;
}
特点:
do...while
循环至少执行一次
嵌套循环
/**
* @Author: Lucifer
* @Date: 4/17/2023, 11:02:58 PM
* @LastEditors: Lucifer
* @LastEditTime: 4/17/2023, 11:02:58 PM
* Description: c之嵌套循环
* Copyright: Copyright (©)}) 2023 Your Name. All rights reserved.
*/
# include<stdio.h>
# define ROWS 6
# define CHARS 10
int main(void)
{
int row;
char ch;
// 嵌套循环
for (row = 0; row < ROWS; row++) // 外循环,执行五次
{
for (ch = 'A'; ch < ('A' + CHARS); ch++) // 内循环,执行10次,打印字符
{
printf("%c", ch);
}
printf("\n");
}
getchar();
return 0;
}
嵌套循环变式:由外层循环的次数控制内层循环
/**
* @Author: Lucifer
* @Date: 4/17/2023, 11:06:44 PM
* @LastEditors: Lucifer
* @LastEditTime: 4/17/2023, 11:06:44 PM
* Description: 嵌套训话之外层循环控制内层循环
* Copyright: Copyright (©)}) 2023 Your Name. All rights reserved.
*/
# include<stdio.h>
int main(void)
{
const int ROWS = 6;
const int CHARS = 6;
int row;
char ch;
for (row = 0; row < ROWS; row++)
{
for (ch = ('A' + row); ch < ('A' + CHARS); ch++)
{
printf("%c", ch);
}
printf("\n");
}
getchar();
return 0;
}
For
循环中使用数组:
/**
* @Author: Lucifer
* @Date: 4/17/2023, 11:19:54 PM
* @LastEditors: Lucifer
* @LastEditTime: 4/17/2023, 11:19:54 PM
* Description: 循环在数组当中的使用
* Copyright: Copyright (©)}) 2023 Your Name. All rights reserved.
*/
# include<stdio.h>
# define SIZE 10
# define PAR 72
int main(void)
{
int index, score[SIZE];
int sum = 0;
float average;
// 输入十个数
printf("请输入%d个数:\n", SIZE);
for (index = 0; index < SIZE; index++)
scanf("%d", &score[index]);
printf("输入的十个数是:\n");
for (index = 0; index < SIZE; index++)
printf("%5d", score[index]);
printf("\n");
// 总数
for (index = 0; index < SIZE; index++)
sum += score[index];
// 平均数
average = (float)sum / SIZE;
printf("总数%d, 平均数%.2f", sum, average);
// 得分
printf("%.0f\n", average - PAR);
return 0;
}
It's a lonely road!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2021-04-16 4.16Java接口的作用
2021-04-16 4.16Java抽象方法和抽象类
2021-04-16 4.16Java游戏小项目之记时功能
2021-04-16 4.16Java游戏小项目之爆炸的实现
2021-04-16 完整的WSDL语法
2021-04-16 WSDL UDDI
2021-04-16 WSDL绑定