C语言的几个基本结构

一 布尔类型

(1) C89,没有布尔类型,C99有布尔类型. C工程支持C89,OC支持C99
(2)  两种数值
      bool true (真)  不是0就为真  flase(假)  为0 就是假 c语言
      BOOL YES(真)  = 1            NO(假)  = 0 oc 语言
      BOOL的值 的转化符为 %d

(3) 作用于分支结构和循环结构的判断

(4) 关系运算符

一共六个 大于: >, 小于: <, 大于等于: >=,小于等于: <=,等于: ==,不等于: !=

关系运算的结果有两种真假 用BOOL类型的变量来接受结果
  a   关系表达式: 由 常量 ,变量和运算符组成的
      举例  BOOL a1 = 50 > 30 结果为真 YES
        printf 输出 a1 = 1
      BOOL a2 = 50 < 30  结果为假 NO
      printf 输出 a2 = 0;
  b求两个数的最大值的运算:

int a = 3 int b = 4   a > b ? a : b  输出最大值

c求两个数的最小值的运算:

int a = 4 int b = 5   a < b ? a : b  输出最小值

(5)逻辑运算符

1 逻辑与 逻辑或 逻辑非
     2 逻辑运算的结果有两种,真 假,用BOOL类型变量来接收
     3 逻辑表达式: 常量,变量和逻辑运算符组成的

逻辑与 &&
     1 逻辑与的表达式:  表达式1 && 表达式2
     2 运算规则:
           (1) 先执行表达式1,在执行表达式2
           (2) 表达式1和表达式2结果同时为真,才为真,一假即假
           (3) 短路现象: 表达式1的结果为假,就不在执行表达式2.

逻辑或 ||
     1  逻辑或表达式: || 表达式1 || 表达式2
     2  运算规则
          (1)  先执行表达式1,在执行表达式2.
          (2)  表达式1和表达式2的结果同时为假,才为假,一真即真.
     3  短路现象

逻辑非 !
     1  逻辑非: 取反运算
     2  运算规则: 对真假取反

二 if语句
   if(YES){
      printf("执行语句:");
        }

if :如果
        condition: 条件表达式,通常是关系表达式和逻辑表达式,判断真假
        statement: 执行的语

如果 括号()里的条件表达式为真,就运算花括号里的语句,如果为假,就跳过花括号里的语句,执行下面语句.

举例: 控制台输入一个字符,如果输入的是m,则输出男性,否则输出女性

char a = 0;
      printf("请输入一个字符:");
      scanf("%c",&a);

判断语句
      if(a == ‘m‘){
        printf("输出为男性"); 如果条件成立执行语句1
       }else {

printf("女性")} 如果条件不成立执行语句2
  if语句还有if{}else if{}else if{}else if{}.....形式

三 swich...case...语句

多分支语句
     作用: 提供多个分支,功能类似于if--else联式(多个if--else),代码可读性更好.
      语法:
         1 switch 后面是整型或者字符型的表达式
         2 case 后面是整型或者字符型常量
         3 break 用于结果当前case
     运行逻辑
         1 如果表达式和某个case常量相等,执行这个case后面的语句.
         2 如果没有和表达式相等的case,那么执行default后面的语句

举例:  如果从控制台 输入一个字符,如果 输入的是m ,则输出男性, 输入的是f,则输出女性,否则输出春哥
    
    char gender = 0;
    printf("请输入一个字符:");
    scanf("%c",&gender);
              
    switch (gender) {
        case ‘m‘:
            printf("男的");
            break;
            
        case ‘f‘:
            printf("女的");
            break;
            
        default:
            printf("春哥");
            break;
    }

注意事项:

1. default可以省略    2. break不要写在执行语句之间,否则break后的执行语句不被执行
四 while语句
    while (<#condition#>) {
        <#statements#>
    }
     当....的时候
     condition: 条件表达式,有两个值: 真 假
     {} 花括号里面是循环体(循环语句)
     当条件表达式为真,那么执行循环体中的语句,否则跳过循环体.
  举例:  int count = 0;

printf("做一个俯卧撑");
    while (YES) {
       printf("做一个俯卧撑"); // 循环语句

count++;
    }
    当条件表达式一直为真的时候,就会形成死循序.
  正确的表达方式:

如:   使用while循环打印1~10 之间的数
    int count = 1;
    while (count <= 10) {
       printf("%d\n",count); // 循环语句
        count++; // 循环量
     }
while语句中也可嵌套if等语句

举例:用while循环打印1~100之间不是7的倍数,并且不包含7的数
        int count = 1;   
      while (count <= 100) {
        BOOL r1 = count % 7 != 0;
        BOOL r2 = count % 10 != 7;
        BOOL r3 = count / 10 != 7;
        if (r1 && r2 && r3) {
            printf("%d\n",count);
        }
       count++;

}

五 随机数

int num = arc4random()
   随机数: arc4random() 取随机数时必须有变量接收随机数
   取值范围: [20,40] arc4random() % (40 -20 +1) + 20
六 beake 和 continue

(1) break 结束整个循环 break后不再执行

举例: 1 ~ 50 之间的数,当输入45之后,停止输出
       int count = 1;   
   while (count <= 50) {
        if (count == 45) {
            break;
        }
        printf("%d ",count);
        count++;
    }   
    printf("我在while循环后"); 输出到45后就不在输出数字

(2) continue 结束本次循环,continue后不再执行,回到条件判断处

举例:  输出 1 ~ 50 之间的数,当遇到10的倍数时,不输出
        (提示: 排除10的倍数用n % 10 == 0)
       int count = 1;   
   while (count <= 50) {       
        count++; // 循环增量
        if (count % 10 == 10) {
            continue; // 结束本次循环,下面的代码不执行,回到条件判断处.

}       
        printf("%d",count);
    }   输出的结果没有10以及10的倍数,即当遇到10或10的倍数时由于continue的原因本次循环结束,进入下次循环
七 for循环

a.  1~4 代表的是执行顺序
  for (<#initialization#>1; <#condition#>2; increment4) {
        <#statements#>3
    }
for: 自带装备
     initiaization: 初始化,在一个循环内只初始化一次.
     condition: 循环条件
     increment: 循环增量
     statements: 循环体(语句)

举例 用for打印出 1 ~ 100之间不是7的倍数,并且不包含7的数
    for (int i = 1; i < 100; i++)

进行判断
        if (i % 7 !=0 && i / 10 != 7 && i % 10 != 7) {
            printf("%d ",i);
        }
    }

b. 循环嵌套

练习 1 打印出乘法口诀表
    for (int i = 1; i <= 9; i++) {
       for (int j = 1; j <= i; j++) {
            printf("%d × %d = %-2d ",j,i,i * j);
        }
        printf("\n");
    }
2  循环打印十进制所有的可能的三位数
    (提示: 从100 ~999所有数
    分析: 百位 十位 个位
    控制百位
    for (int i = 1; i <=9; i++) {
       //控制十位
        for (int j = 0; j <= 9; j++) {
            //控制个位
           for (int k = 0; k <= 9; k++) {
                printf("%d\n",i*100 + j*10 + k);
            }
        }
    }
c for循环 和 while循环的区别
  
     while循环可以用不知道循环次数的循环,除此外,与for循环的格式不用,其他都一样
举例    循环打印输入的字符,如果输入的字符为0,不打印.
        char a = 0;   
        while (a != ‘0‘) {
        printf("请输入一个字符:");
        scanf("%c",&a);
        getchar();
        printf("打印%c\n",a);
    }
    printf("打印结束");

时间: 2024-07-31 12:47:42

C语言的几个基本结构的相关文章

C语言中的系统时间结构体类型

在C语言涉及中经常需要定时触发事件,涉及到获取系统时间,其结构体类型有多种.Unix/Linux系统下有以下几种时间结构: 1.time_t 类型:长整型,一般用来表示从1970-01-01 00:00:00时以来的秒数,精确度:秒:由函数time()获取: 该类型定义在头文件 /usr/include/sys/time.h 中: #define _TIME_T       typedef   long   time_t;             #endif 函数定义:time_t   tim

c语言学习之 程序基本结构

一个最基本的C程序由五个部分组成: 头文件 (Preprocessor commands) 函数 (function) 变量 (variable) 语句块 (statement 和 expression) 注释 (comments) 例如: #include <stdio.h> int main(){ /*my first c programming*/ printf("hello,world\n"); return 0; } c语言学习之 程序基本结构,码迷,mamico

C语言--&gt;(十四)结构体、宏、编译

知识点: 1.结构体 struct 2.typedef关键字 3.宏的定义 4.宏与函数的区别 5.文件包含和多文件编译 6.条件编译 ===========================结构体 思考:如果现在希望保存一个学生的信息,姓名,身高,年龄,地址,该如何保存 char name[64]; float height; int age; char addr[64]; 1.什么是结构体 struct 结构体指的是一种数据结构,是c语言中复合数据类型的一 种多种不同数据类型的集合 2.结构体

C语言实现贪吃蛇之结构链表篇

之前的两篇博客将运用的C语言知识限定在了一般的数组上,但如果已经完整地了解过C语言的话,运用结构和链表会让程序的结构更明了,逻辑更清晰.这篇博客就将介绍如何用结构和链表改善之前的程序. 首先,我们为蛇的节点定义一个结构: typedef struct node{ COORD cor; struct node *next; }node; COORD结构我在上一篇已经介绍过,这里就直接借用了. COORD food = { 3,5 }; node *head; food也相应地由COORD来定义,并

「C语言」「例题」结构体与共用体

本篇收集<C语言程序设计教程>第九章“结构体与共用体”的所有例题. 1 #include <stdio.h> 2 3 /*输入一个学生的基本信息, 4 包括学号.姓名.性别.年龄.出生日期.三门成绩, 5 输出该学生的基本信息和平均成绩*/ 6 7 struct date 8 { 9 int year;/* 年份 */ 10 int month;/* 月份 */ 11 int day; /* 日期 */ 12 }; 13 14 struct student 15 { 16 char

160809209_李梦鑫_C语言程序设计实验3 循环结构程序设计

<C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学    期 2016-2017 第1学期 指导教师 黄俊莲 吉吉老师 实验地点 C05 机 器 号 时    间 2016年 10 月   13 日    6   周 周四  1.2 节 截至日期 2016.10.13 11:50 实验任务清单 实验3-1 分别使用while循环.do while循环.for循环求                                         

菜鸟学习-C语言函数参数传递详解-结构体与数组

C语言中结构体作为函数参数,有两种方式:传值和传址. 1.传值时结构体参数会被拷贝一份,在函数体内修改结构体参数成员的值实际上是修改调用参数的一个临时拷贝的成员的值,这不会影响到调用参数.在这种情况下,涉及到结构体参数的拷贝,程序空间及时间效率都会受到影响. 例子: typedef struct tagSTUDENT{ char name[20]; int age; }STUDENT; void fun(STUDENT stu) { printf("stu.name=%s,stu.age=%d/

C++ c++与C语言的区别(空结构体)

//区别⑨:空结构体声明(C++版本) #include<iostream> using namespace std; struct A{}; class B{}; void main(){ printf("C++中空结构体内存大小是%d\n", sizeof(A));//打印 1 printf("C++中空类内存大小是%d\n", sizeof(B)); //打印1 //在C++中,空结构体,空类都在内存中占一个字节大小的内存空间 system(&qu

go 语言学习笔计之结构体

go 语言中的结构体方法 结构体名称的大小写有着不同的意义: 小写表示不能被别的包访问 package main import "fmt" type Rect struct { width,height int } func (r *Rect) area() int { return r.width*r.height; } func main() { r:=Rect{width:10,height:10} fmt.Println(r.area()); rp:=&r; fmt.P