选择机构补充与循环结构

选择结构的补充

if的特殊用法

判断时是需要==

if (a==5)--->if (5==a)

if (a=5)--->if (5=a) 这种会报错,赋值等号左边必须是变量

判断整数a的值为0

if (a==0)--->if (la)

判断整数a不会0

if (a!=0)--->if (a)

switch

switch的执行速度最快

格式:

switch(表达式)

{

case 常量表达式1:执行操作 break;

case 常量表达式2:执行操作 break;

case 常量表达式3:执行操作 break;

case 常量表达式4:执行操作 break;

case 常量表达式5:执行操作 break;

.......

case 常量表达式n:执行操作 break;

default:执行操作 break;

}

*解析

*表达式:可以是任意表达式,但是最终结果必须是整数或是单字符类型

*{}:可有可无,当c语句只有一句话时可以省略不写

*case:案例,case案例与常量表达式之间需要使用空格隔开

*常量表达式:是表达式的所有结果,只能是整数或是单字符常量

*break:退出switch

*default:执行除了以上case以外的所有情况

*多个case执行一个语句

*执行操作中如需要定义变量,用{}将整段执行操作框起来(限制作用区域)

例:输入一个天数,使用switch判断是星期几

输入一个表达式,使用switch实现加减乘除

循环结构

循环结构:while;do...while ;for(重复执行某一段代码)

while

格式:

表达式1;

while(表达式2)

{

循环体;

表达式3;

}

*解析

*表达式1:初始值

*表达式2:循环条件,如果条件成立则循环,条件为假则退出循环,可以是任意表达式,但是一般是算数,关系,逻辑组成

*{}:可有可无,当c语句只有一句话时可以省略不写

*表达式3:步长

*执行过程:如果表达式2条件为真则循环,若表达式2条件为假则退出循环

*死循环:

while(1)

{

}

练习:输出1-5

输入一个起始值,终止值,循环输出起始到终止,并起算之间的和

输入一个整数判断这是几位数

do... while

格式:

表达式1;

do

{

循环体;

表达式3;

}while(表达式2);

*解析

*表达式1:初始值

*表达式2:循环条件,如果条件成立则循环,条件为假则退出循环,可以是任意表达式,但是一般是算数,关系,逻辑组成

*{}:可有可无,当c语句只有一句话时可以省略不写

*表达式3:步长

*执行过程:先执行循环体,如果表达式2条件为真则继续循环,若表达式2条件为假则退出循环

*死循环:

do

{

}while(1)

练习:输出1-5

输入一个起始值,终止值,循环输出起始到终止,并起算奇数的和

循环输入数据,输入0结束,计算乘积

用do...while实现用户和密码的三次登录,用户名‘A',密码1234

如果用户密码正确则登录成功

如果登陆失败则提示

第一次登录失败还有两次机会

第二次登录失败还有一次机会

第三次登录失败账户被锁定

for 

格式:

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

{

循环体

}

*解析

*表达式1:初始值

*表达式2:循环条件,如果条件成立则循环,条件为假则退出循环,可以是任意表达式,但是一般是算数,关系,逻辑组成

*{}:可有可无,当c语句只有一句话时可以省略不写

*表达式3:步长

*执行过程:先执行循环体,如果表达式2条件为真则继续循环,若表达式2条件为假则退出循环

*不写表达式1表达式2表达式3则均默认为1(真)

*死循环:

for(1;1;1)--->for(;;)

{

}

练习:使用for循环,循环26个英文字母

输入一个数,判断是否为素数

goto

goto:在C语言中式有害的,不建议使用,太灵活

格式:

标识符:

goto 标识符;

标识符:类似于变量名(满足命名规范)

 

循环跳转语句 

break

功能:退出结束一层循环

使用场景:只能用于switch及(循环)while,do...while,for

*break不可以单独使用在if语句中,否则报错

continue

功能:结束本次循环,进入下次循环

使用场景:只能用于(循环)while,do...while,for

例:1-100逢7过(7的倍数/个位是7或十位是7的数均跳过)

return

功能:结束函数

goto

goto:无条件跳转语句

exit

功能:退出整个程序

循环嵌套

任意循环可任意嵌套

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

{

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

{

循环体;

}

}

外部循环控制行数,内部循环控制列数。for

练习:打印直角三角形

打印倒直接三角形

 

练习 

输入一个数判断是否为回文数(正序倒序结果一样)

#include <stdio.h>                            
#include <string.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, const char *argv[])
{
    int num,a,new=0;
    printf("输入一个数值\n");
    scanf("%d",&num);
    a=num;
    while(a)
    {
        new=new*10+a%10;
        a=a/10;
    }
    if(new==num)
    { 
        printf("%d是回文数\n",num);
    }
    else
    {   
        printf("%d不是回文数数\n",num);
    }
        
        return 0;
}

 输入一个起始值和终止值,输出起始值与终止值之间的素数

#include <stdio.h>                               
#include <string.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, const char *argv[])
{
    int start,end;
    printf("输入一个起始值\n");
    scanf("%d",&start);
    printf("输入一个终止值\n");
    scanf("%d",&end);
    while(start<=end)
    {
        int j=0;
        for(int i=2;i<=sqrt(start);i++)
        {
            if(start%i==0)
            {
                j++;
            }
        }
        if (j==0&&start!=1)
        {
            printf("%d ",start);
        }
        start++;

    }
    putchar(10);

    return 0;
}

 输入一个数,判断是否为完美数(除本身外的约数和等于本身)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, const char *argv[])
{
    int num,yue=0;
    printf("输入一个数值\n");
    scanf("%d",&num);
    int i=1;
    while(i<=num)
    {
        if(num%i==0&&num!=i)
        {
            yue+=i;
        }
        i++;
    }
    if(yue==num)
    {
        printf("是完美数\n");
    }
    else
    {
        printf("不是完美数\n");
    }
 
        return 0;
}               

打印图形:

 

4:

#include <stdio.h>                                
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
    int i,j;
    int m;
    printf("输入直角三角形直角边长度\n");
    scanf("%d",&m);
    for(i=1;i<=m;i++)
    {
        for(j=1;j<=i;j++)
        {
            printf(" ");
        }
        for(j=m;j>=i;j--)
        {
            printf("*");
        }
        putchar(10);
    }
    return 0;
}
                 




 5.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
    int i,j;
    int m;
    printf("输入直角三角形直角边长度\n");
    scanf("%d",&m);
    for(i=1;i<=m;i++)
    {
        for(j=m;j>=i;j--)
        {   
            printf(" ");
        }
        for(j=1;j<=i;j++)
        {   
            printf("*");                       
        }
        
        putchar(10);
    }
    return 0;
}

6. 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
    int i,j;
    int m;
    printf("输入金字塔端层数\n");
    scanf("%d",&m);
    for(i=1;i<=m;i++)
    {
        int n=2*m-1;
        for(j=(n/2);j>=i;j--)                              
        {
            printf(" ");
        }
        for(j=1;j<=(2*i-1);j++)
        {   
            printf("*");
        }
        
        putchar(10);
    }
    return 0;
}
          

 

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值