初始C语言02-分支与循环(上)

简介: 初始C语言02-分支与循环(上)

1.C语言是结构化的程序设计语言


c语言中有3中结构:顺序结构,选择结构,循环结构


空语句:  ;     //只有一个分号
复制代码


2.C语言中非0表示真,0表示假


判断:C语言中,1表示真,0表示假
错: 非0表示真
复制代码

3.else和if的匹配


就近原则:else与最近的if匹配

#include<stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
    if(b == 2)
            printf("hehe\n");
    else
        printf("haha\n");
    return 0;
}
//什么也不打印
//因为if和最近的else匹配,因为不满足 a == 0所以不进入第一个if循环,所以不打印
//相当于   //增加了程序的可读性
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
    {
    if(b == 2)
         printf("hehe\n");
       else
        printf("haha\n");
    }
    return 0;
}   
复制代码


程序题:打印1-100的奇数并计算个数


//方法1:故意营造奇数出来打印,效率更高
int main()
{
    int count = 0;
    int i = 1;
    //while循环的写法
    /*
    while(i < 100)
    {
       printf("%d ",i);
        i += 2;
        count++;
    }
    */
    //for循环写法
    for(i = 1; i < 100; i+=2)
    {
        printf("%d ",i);
        i += 2;
        count++;
    }
    printf("1-100的奇数个数为:%d\n",count);
}
复制代码
//写法2:产生1-100的数,奇数:除2余数为1
int main()
{
     int count = 0;
     int i = 1;
    while(i  < 100)
    {
        if(i % 2 == 1)
        {
          printf("%d ",i);
        }
          i++;
    }
  return 0;
}
复制代码


4.EOF-end of file 文件结束标志


EOF->  代表的值为-1


getchar()   :  读取失败的时候返回EOF


  1. 返回的字符,本质是字符也是ASCII码值,是整数
  2. getchar 函数不仅仅是返回正常字符,还会返回EOF 是-1,所以放到整形变量中
    遇到ctrl+z时结束循环输入


循环输入的方法

//写法1
while( (c = getchar()) !=EOF)   //用括号括起来
while( scanf("%d",&a) != EOF)
//写法2
 while( ~(c = getchar()) )
  while( ~(scanf("%d",&a)) )
复制代码
-1:
原码:10000000 00000000 00000000 00000001
反码:11111111 11111111 11111111 11111110
补码:11111111 11111111 11111111 11111111  
   内存中存放的是补码
    EOF为-1  
    按位取反-1的补码 ->全0序列  即为0
复制代码


程序题:密码确认题  (缓冲区)


输入缓冲区:内存空间


scanf ,getchar:从键盘上输入东西到输入缓冲区, 从输入缓冲区拿东西

//err程序
int main()
{
    int ch = 0;
    char password[20] = {0};
    printf("请输入密码>:");
    scanf("%S",password);//数组名是首元素地址,不用加取地址
    printf("请确认密码(Y/N)>:");
    ch = getchar();
    if(ch == 'Y')
    {
        printf("确认成功\n");
    }
    else
    {
         printf("确认失败\n");
    }
    return 0;
}
复制代码


image.png


从键盘中输入字符到缓冲区,然后scanf,getchar拿东西,getchar一次只能读取一个字符,%s只能读到空白字符前的字符
    空白字符:空格,换行)
    因为最后一个是换行符(\n),所以我们要把缓冲区的字符清理干净,当getchar读取到\n使,说明缓冲区已经清理干净了
复制代码
//正解
int main()
{
  int ch = 0;
  char password[20] = { 0 };
  printf("请输入密码>:");
  scanf("%s", password);//数组名是首元素地址,不用加取地址
  printf("请确认密码(Y/N)>:");
    //清理缓冲区字符
  while (getchar() != '\n')
  {
    ;   //空语句,不处理
  }
  ch = getchar();
  if (ch == 'Y')
  {
    printf("确认成功\n");
  }
  else
  {
    printf("确认失败\n");
  }
  return 0;
}
复制代码


若想要读取有空格的作为密码:使用gets()函数


使用gets()则不用考虑缓冲区的问题


int main()
{
  int ch = 0;
  char password[20] = { 0 };
  printf("请输入密码>:");
  gets(password);     
  printf("请确认密码(Y/N)>:");
  ch = getchar();
  if (ch == 'Y')
  {
    printf("确认成功\n");
  }
  else
  {
    printf("确认失败\n");
  }
  return 0;
}


相关文章
|
1月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
65 5
|
17天前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
26 8
|
17天前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
30 6
|
1月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
1月前
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
|
27天前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
14 0
|
28天前
|
小程序 C语言
初识C语言:走近循环
初识C语言:走近循环
|
27天前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
31 3
|
IDE 定位技术 开发工具
C语言 第四章 关系、逻辑运算与分支流程控制
一、关系运算 若干表达式用关系运算符连接而成,就构成关系表达式。 关系表达式中,表达式成立,其值为1(真);表达式不成立,其值为0(假)。其他表达式中,其结果如果是非0则为真,结果为0则为假。 关系运算符的优先级低于算术运算符,高于赋值运算符。
1041 0
|
17天前
|
存储 缓存 C语言
【c语言】简单的算术操作符、输入输出函数
本文介绍了C语言中的算术操作符、赋值操作符、单目操作符以及输入输出函数 `printf` 和 `scanf` 的基本用法。算术操作符包括加、减、乘、除和求余,其中除法和求余运算有特殊规则。赋值操作符用于给变量赋值,并支持复合赋值。单目操作符包括自增自减、正负号和强制类型转换。输入输出函数 `printf` 和 `scanf` 用于格式化输入和输出,支持多种占位符和格式控制。通过示例代码详细解释了这些操作符和函数的使用方法。
31 10