9-循环

 循环

 

作业:

1,月的天数

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int n;
 6     scanf("%d", &n);
 7 
 8     switch (n)
 9     {
10         //1 3 5 7 8  10  12   31天
11         case 1:
12         case 3:
13         case 5:
14         case 7:
15         case 8:
16         case 10:
17         case 12:
18             printf("31天");
19         break;
20 
21         case 4:
22         case 6:
23         case 9:
24         case 11:
25             printf("30天");
26         break;
27 
28         case 2:
29             printf("29天");
30         break;     
31 
32         //case 这个分支不分先后顺序
33         //case 可以合并 注意:合并之后只有一个break
34         //三目运算符
35     }
36 
37     return 0;
38 }

 

2,求1+2+3+4+5。。。。。。。。。+100的总和

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int number = 1, sum = 0;
 6 
 7     while (number <= 100)
 8     {
 9         sum = sum + number;
10         number++;
11     }
12 
13     printf("%d", sum);
14     return 0;
15 }

 

循环:有些事情可以反复执行  算法里面三大结构之循环结构。For循环  while   do。。。While       goto

 

一、while循环

1、形式:

while (表达式)  //

{

//语句

}

表达式 每一次循环都要判定表达式的值 如果为真(表达式的值为1)执行循环 否则不再执行循环

为假的时候不循环(跳出循环),执行后面的代码。

 

执行流程:1)第一次进入while循环执行b前,先判断a

2)根据条件判断是否执行bc,如果条件判断a为真(true),继续执行循环主

          体;若条件判断值a为假(false),则跳出循环不再执行b 代码。继续执行循

          环后面的代码

     3)执行完b 后,继续判断a是否满足条件。由于while循环不会自行更改循环控 制变量的内容,所以while循环中为循环控制变量赋值的工作要由设计者自己来 做,完成后再回到步骤(2)重新判断是否继续执行循环。

二、Do.....while

do

{

语句;

} while (表达式);

先执行一次循环里面的代码,然后对表带是求值,值为真接着循环,值为假跳出循环。

 

语句先执行一次,在进行判断,while先判断后执行。(仅仅只有第一次循环是这样)

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int tarNumber = 88, inNumber=0; 
 6     printf("请输入一个数字:\n");
 7 
 8     do
 9     {
10         scanf("%d", &inNumber);
11 
12         if (inNumber > tarNumber)
13         {
14             printf("太大了,亲!\n");
15         }
16 
17         if (inNumber < tarNumber)
18         {
19             printf("太小了,亲!\n");
20         }
21 
22     } while (inNumber!=tarNumber); //注意:循环的条件表达式  
23 
24     printf("恭喜你猜对了,这个数字是:%d",inNumber );
25     return 0;
26 }

执行步骤:

     (1)执行语句a和跳出循环条件b,转(2

     (2)计算while后面括号里表达式的值,若其结果非0,则转入(1),否则转(3)

    3)退出循环,执行循环体下面的语句。

注意:do……while语句最后的分号(;)不可少,否则提示出错。循环体至少执行一次

 

三、For

for (表达式1; 表达式2; 表达式3)

{

语句;

}

for语句是循环控制结构中使用最广泛的一种循环控制语句,特别适合已知循环次数的情况。结构如下:

for ( [表达式 1]; [表达式 2 ]; [表达式3] ){语句4}

表达式1:一般为赋值表达式,给控制变量赋初值; 控制变量

表达式2:关系表达式或逻辑表达式,循环控制条件;控制条件

表达式3:一般为赋值表达式,给控制变量增量或减量;增量或减量

 

 

//======================【打印10次付出不亚于任何人的努力!】====================================

int i; //声明一个变量i

for (i = 0; i < 10; i++) //1、给i赋值为0  2、判断i<10 为真执行循环 为假不执行

{

  printf("付出不亚于任何人的努力!\n");

}

 

四、跳出循环用break(跳出) 或者continue(继续)

Break :不执行循环里面break后面的语句,直接跳出循环去执行后面语句。

Continue:不执行循环里面continue后面的语句,但是继续循环。

 

 

五、循环嵌套

一个循环体语句中又包含另一个循环语句,称为循环嵌套

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int i, j;
 6 
 7     for (i = 0; i < 9; i++)  //循环9次   第一次循环
 8     {
 9         for (j = 0; j < 9; j++)  //循环9次   循环9次
10         {
11             printf("*");
12         }
13     }
14     return 0;
15 }

 

 

打印三角形 就是在找外部循环i的值和内部循环次数的规律   杨辉三角形

 

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int i, j;
 6     for (i = 0; i < 5; i++) // 0 1 2 3 4
 7     {
 8         for (j = 0; j < 5 - (i + 1); j++) // 4 3 2 1 0
 9         {
10             printf(" ");            
11         }
12         for (j = 0; j < 2 * i + 1; j++) // 1 3 5 7 9
13         {
14 
15             printf("*");
16 
17         }
18         printf("\n");
19     }
20 
21     return 0;
22 }

 

转载于:https://www.cnblogs.com/tiantiancode/p/11126814.html

单片机实现1到9的循环显示通常需要借助数码管或者其他形式的LED数组,并配合计数器或者状态机的设计。以下是一个简单的步骤说明: 1. **硬件连接**:将数码管接到单片机的I/O口上,例如5段共阴极数码管,需要7个IO口控制每个数码管的一位。 2. **数据驱动**:编写程序来设置每个数码管对应的状态,从最低位(最右边)开始,0代表亮,1代表灭。从00000...到11111,依次表示数字0到9。 3. **计数逻辑**:可以使用一个定时器或者计数器,将其设定一个周期,比如1秒。每当计数器溢出时,就增加一个计数单位,使得数码管显示下一个数字。 4. **循环处理**:当达到9时,返回初始状态0,形成循环。可以用条件判断或取模运算(%10)来实现这个循环。 示例代码可能会涉及到中断服务函数(ISR),用于在计数器溢出时更新数码管的状态。这里假设我们使用C语言编写STM32单片机,你可以参考类似这样的伪代码: ```c void displayNumber(int num) { // 数码管显示对应字符映射表 static const uint8_t digitMap[] = {B0000, B0001, B0011, B0111, B1111, B1011, B1101, B1110}; for (int i = 0; i < sizeof(digitMap); ++i) { if (num & (1 << i)) { GPIOx->ODR = digitMap[i]; // 输出相应的高电平点亮对应的数码管位 } else { GPIOx->ODR &= ~digitMap[i]; // 输出低电平关闭位 } } } // 主循环或定时器中断服务函数 void main() { TIM_Init(); // 初始化定时器 while(1) { displayNumber(num % 10); num++; // 每次计数器溢出后加1 } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值