精华内容
下载资源
问答
  • C语言程序基本结构

    千次阅读 2018-12-30 22:46:05
    /* C程序基本结构 */ #include <stdio.h> int main() {  printf("I'm going to Tianjin Agricultural University!\n");  return 0; }  // 1.一个函数的构成,一个主函数,任意位置,从...

    /* C程序基本结构 */
    #include <stdio.h>
    int main()
    {
        printf("I'm going to Tianjin Agricultural University!\n");
        return 0;

    // 1.一个函数的构成,一个主函数,任意位置,从主函数开始执行
    // 2.函数首部,函数体
    /* 3.void        F         (int x)函数头
          类型    函数名     形参
        函数体:printf("I'm going to Tianjin Agricultural University!\n");|| 注意:每条语句以 ' ; ' 结束
    */  
    //分为声明部分执行部分 


     

    展开全文
  • C语言程序基本结构的简单分析与解释 在C语言的补习课程中,有些学生对于C语言的结构不是很了解,为此为了让学生对于C语言有多的认识,有利于促进C语言的学习,本文对C语言的程序结构进行了简单的分析与解释。 程序...

    C语言程序基本结构的简单分析与解释
    在C语言的补习课程中,有些学生对于C语言的结构不是很了解,为此为了让学生对于C语言有多的认识,有利于促进C语言的学习,本文对C语言的程序结构进行了简单的分析与解释。

    程序结构:在C语言程序中,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构;另外会介绍一个重要的结构,函数的介绍。

    一、流程控制
    1.顺序结构

    默认的流程结构,按照书写顺序执行每一条语句

    我们最开始接触的就是顺序结构:

    #include

    int main(int argc, const char *argv[])

    {

         printf("Hello World!\n");
    
         return 0;
    

    }

    如上面的例子,就是最简单的顺序结构。

    程序讲解:

    #include:标准I/O头文件,下文中的printf需要使用这个文件

    int main():主函数,一个程序的入口。一个程序有且只有一个main()函数

    int:代表主函数的返回值类型是int型

    printf():格式化输出,将括号内的内容打印到显示器上,打印字符串需要用双引号""引上

    return 0;:配合主函数类型使用,一般来说返回0的程序表示程序运行成功

    打印的结果为:Hello World!

    2.选择结构

    对给定的条件进行判断,再根据判断结果来决定执行那一段代码

    3.循环结构

    *在给定条件成立的情况下,反复执行某一段代码

    二、选择结构–if
    1.使用方式

    1> if(表达式) 语句1;

    • if(i>1) 恭喜你被黑马录取;

    2> if(表达式) 语句1;else 语句2;

    • if(i>1) 恭喜你被黑马录取;else 希望你再接再厉;

    3> if(表达式){}

    if(表达式){}

    else{}

    4> if (){}

    else if(){}

    else{}

    选择结构:C语言中常用的选择结构主要有以下两种:

    我们引入了一个bool类型的值(也叫boolean类型,布尔类型),只有两个值,即真和假。C语言的判断表达式最终的值就是一个bool类型,这个判断表达式的bool值就决定了选择结构如何选择,循环结构如何循环;

    if else:引入关键字:if  else  else if

    if (bool值)     // 如果bool值为真,则执行代码段1,否则执行代码段2

    {

    代码段1

    }

    else

    {

    代码段2

    }

    if (bool值1)    // 如果bool值1为真,则执行代码段1,否则判断bool值2是否为真

    {

    代码段1

    }

    else if (bool值2)  // 若bool值2为真则执行代码段2,否则直接执行代码段3

    {          // 开头的if和结尾的else都只能有一个,但是中间的else if可以有好多个

    代码段2

    }

    else

    {

    代码段3

    }

    这段代码里,就有了选择结构,可以根据不同的判断,选择相应的执行代码 。

    C 语言的编程中 ‘//’ 的含义是注释的意思。

    三、选择结构–switch
    1.使用格式

    • switch(表达式) { case 数值1: break; … default: break;}

    • 举例

    switch case:引入关键字:switch  case  break  default

    switch (变量)       // 执行到这一句时,变量的值是已知的

    {           // switch case语句执行时,会用该变量的值依次与各个case后的常数去对比,试图找到第一个匹配项,找到匹配的项目后,

    case 常数1:    // 就去执行该case对应的代码段,如果没找到则继续下一个case,直到default

    代码段1;   // 如果前面的case都未匹配,则default匹配。

    break;

    case 常数2:

    代码段2;

    break;

    ……

    default:

    代码段n;

    break;

    }

    *break作用:跳出整个循环;如果不写break,语句会一直向下执行,直到遇到break。

    这个就是switch case语句的选择语句。

    注意:

    第一, case中必须是常数,而且必须是整形;

    第二, 一般来说,每个case中代码段后都必须有一个break;

    第三,case之后一般都会有default,虽然语法上允许没有default,但是建议写代码时一定要写。

    关于两种的比较:if else和switch case的区别:if else适合对比条件较复杂,但是分支比较少的情况,switch case适合那种对比条件简单,但是分支较多的情况。通常的做法是:在适合使用switch case的情况下会优先使用switch case,如果不适合则使用if else。这一点根据自身情况,选择合适的方法使用。

    2.if和switch的比较

    • 很多情况下可以互换

    • if使用方式较为灵活,使用的较多;switch适合有某个值

    四、循环结构

    1. 循环机构–for

    (1) for:

    for (循环控制变量初始化; 循环终止条件; 循环控制变量增量)

    {

    循环体

    }

    #include

    int main(int argc, const char *argv[])

    {

         int i, sum = 0;
    
         for(i = 0; i<= 100; i++)
    
         {
    
                   sum = sum + i;
    
         }
    
         printf("%d\n", sum);
    
         return 0;
    

    }

    循环执行步骤:

    第一, 先进行循环控制变量初始化;

    第二, 执行循环终止条件,如果判断结果为真,则进入第三步;如果为假则循环终止并退出;

    第三,执行循环体;

    第四,执行循环控制变量增量,转入第二步;记住他的循环步骤,编写程序的时候就会很简单。上面的事例程序就是从从1 加到100的运算。

    注意:for循环()中的三部分除了循环终止条件外,其他两部分都可以省略,但标准的for循环中,应该把循环控制变量的初始化,增量都放在()当中,并且在循环体中绝对不应该更改循环控制变量,这个在编程中要注意。

    2)循环结构–while

    特点

    *只有满足条件是才会执行循环体

    *特别注意是否进入了死循环

    (2) while:

    循环控制变量初始化

    while(循环终止条件)

    {

    循环体

    循环控制变量增量

    }

    #include

    int main(int argc, const char *argv[])

    {

         int i = 0, sum = 0;
    
         while(i <= 100)
    
         {
    
                   sum = sum + i;
    
                   i++;
    
         }
    
         printf("%d\n", sum);
    
         return 0;
    

    }

    循环执行步骤:第一,先进行循环控制变量初始化(在while之前);第二,判断循环终止条件,如果判断结果为真,则进入第三步;如果为假则不执行循环体;第三,执行循环体;第

    特点

    *只有满足条件是才会执行循环体

    *特别注意是否进入了死循环

    1. 循环结构–do while

    1.特点

    • 一定会执行一次循环体

    2.使用

    *对比while的使用

    (3) do while:

    循环控制变量初始化

    do

    {

    循环体

    循环控制变量增量

    }while (循环终止条件);

    #include

    int main(int argc, const char *argv[])

    {

         int i = 0, sum = 0;
    
         do
    
         {
    
                   sum = sum + i;
    
                   i++;
    
         }while(i <= 100);
    
         printf("%d\n", sum);
    
         return 0;
    

    }

    循环执行步骤:第一,先进行循环控制变量初始化(在do while之前);第二,执行循环体;第三,执行循环控制变量增量;第四,判断循环终止条件,如果判断结果为真,则返回第二步;如果为假则直接退出循环;

    上面关于循环的例子都是一样的,但需要学会比较内部的区别。不管哪种循环结构,都不能缺少循环控制条件初始化,终止条件,循环控制变量增量,循环体这四部分;while循环是先判断后执行,do while循环是先执行后判断,等循环一次之后,其实都是一样的。

    补充:

    1> 死循环 for(;😉; 有时候我们会在子线程中使用无限循环,以达到不让县城退出的目的。

    2> 注意:for循环体内变量的作用域

    3> while循环和for循环的比较

    • 可以互换

    • for循环的变量可以及时回收

    展开全文
  • 一、C语言程序开发的流程现阶段,我们编写的C程序比较简单,程序开发的流程如下:二、安装C语言的编译器Linux下C语言的编译器是gcc,以root用户登录,执行以下命令安装它:yum-yinstallgcc注意,如果您的服务器没有...

    一、C语言程序开发的流程

    现阶段,我们编写的C程序比较简单,程序开发的流程如下:

    71e9be546bcce9b092cac925c40b1da1.png

    二、安装C语言的编译器

    Linux下C语言的编译器是gcc,以root用户登录,执行以下命令安装它:yum -y install gcc

    注意,如果您的服务器没有安装gcc,以上命令就会安装最新版本的gcc,如果已经安装了gcc,就会更新到最新版本,所以,以上命令不管执行多少次都没有问题。

    安装gcc编译器的前提条件是你的服务器必须可以访问互联网。

    三、C程序的基本结构

    C程序主要包括以下部分:

    1)注释(说明文字)

    2)预处理指令

    3)主函数入口

    4)主函数体

    示例(book1.c)/*

    *  程序名:book1.c,此程序用于演示C程序的基本结构。

    *  作者:C语言技术网(www.freecplus.net) 日期:20190525

    */

    // 预处理指令,把头文件stdio.h包含进来。

    #include      // standard input output

    // 主函数main,这里是程序执行的起点。

    int main()

    {

    // 调用printf函数在屏幕上输出文字。

    printf("我心匪石,不可转也。我心匪席,不可卷也。威仪棣棣,不可选也。\n");

    return 0; // main函数返回

    }

    接下来我们讲解一下上面这段程序。

    1、程序的注释/*

    *  程序名:book1.c,此程序用于演示C程序的基本结构。

    *  作者:C语言技术网(www.freecplus.net) 日期:20190525

    */

    // 预处理指令,把头文件stdio.h包含进来。

    // standard input output

    // 主函数main,这里是程序执行的起点。

    // 调用printf函数在屏幕上输出文字。

    // main函数返回

    以上是C程序的注释(说明文字),注释的目的是为了提高程序的可读性,是给程序员看的,不是给计算机看的,编译器编译程序时将忽略它。

    /* */用于注释多行文字,/*是开始,*/是结束。

    //用于注释一行文字,可以独占一行,也可以放在代码的后面。

    2、预处理指令

    #include      // standard input output

    这一行是(编译)预处理指令,告诉 C 语言编译器在编译之前要包含stdio.h文件,程序中使用了printf函数,如果不包含它的头文件,编译时会出现警告或报错。

    3、主函数的入口int main()

    main是主函数,程序从这里开始执行。在同一程序中,main函数只能有一个。

    4、主函数体printf("我心匪石,不可转也。我心匪席,不可卷也。威仪棣棣,不可选也。\n");

    return 0; // main函数返回

    主函数体的代码在一对花括号,本程序的主函数体有两行代码。

    第一行代码调用了printf函数,printf函数的功能是把内容输出到屏幕,这里是输出一行文字,文字结尾的\n表示换行,多个\n就可以输出多个换行。

    第二行代码return 0;表示主函数返回,程序退出。

    注意,main函数体中的空行和每行代码前面的空格是为了提高程序的可读性,对程序的功能没有任何影响。

    四、编译并执行C程序

    在Linux的命令行下用gcc命令编译源程序book1.c。gcc -o book1 book1.c

    编译完成后,将生成目标程序book1(可执行程序名由-o参数指定),加./执行它。./book1

    执行的结果是在屏幕上输出一行文字。我心匪石,不可转也。我心匪席,不可卷也。威仪棣棣,不可选也。

    运行效果

    f3e72692009e9519f2471c611f99d58f.png

    五、知识总结

    /**/多行注释。

    //单行注释。

    #include包含其它文件的预处理指令。

    main程序执行的起点。

    {}函数体、语句块的开始和结束。

    ()函数的参数放在括号中。

    ""字符串放在双引号中。

    \n换行符。

    ;分号,一行代码的结束。

    1)以上都是C语言的语法约定,是规则,不可改变,不能质疑,必须遵守;

    2)C语言严格区分大小写;

    3)中文的全角标点符号C语言无法识别,编译时会报错;

    4)C程序以分号“; ”表示一条语言的结束,多条语句可以书写在一行。

    5)如果某行代码只有分号“; ”,表示一条空语句,什么也不做。

    六、课后作业

    1)请写一个最简单的C程序,实现什么功能无所谓,代码越少越好。

    2)有一个坑,中国程序经常掉进去,但美国程序却不会,请问这是个什么坑?

    3)编写一个C程序,在屏幕中输出《我是一只傻傻鸟》。执行的效果如下:

    29d2046eedc2e14aa572a36ce6cd1719.png

    4)编写一个C程序,在屏幕中间用符号“*”拼出一个大大的字母H,执行的效果如下:

    01a65e1f8030efe7eaea637dccf646e8.png

    七、版权声明

    C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。

    作者:码农有道

    如果文章有错别字,或者内容有错误,或其他的建议和意见,请您联系我们指正,非常感谢!!!

    展开全文
  • C语言程序基本结构

    2013-08-11 01:41:54
    第2讲 C语言程序基本结构、数据类型.ppt
  • C语言程序结构基本认识

    千次阅读 2018-12-27 13:45:45
    C语言程序结构认识 用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使小伙伴对c语言有个初步认识。 例1:计算两个整数之和的c程序: #include main() { int a,b,sum; /定义变量a,b,sum...

    C语言程序的结构认识
    用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使小伙伴对c语言有个初步认识。

    例1:计算两个整数之和的c程序:
    #include main() { int a,b,sum; /定义变量a,b,sum为整型变量/ a=20; /把整数20赋值给整型变量a/ b=15; /把整数15赋值给整型变量b/ sum=a+b; /把两个数之和赋值给整型变量sum/ printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); /把计算结果输出到显示屏上/ }
    重点说明:
    1、任何一个c语言程序都必须包括以下格式:
    main() { }
    这是c语言的基本结构,任何一个程序都必须包含这个结构。括号内可以不写任何内容,那么该程序将不执行任何结果。
    2、main()----在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。
    3、被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。
    4、在{ }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。
    5、printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); ----通过执行这条c语言系统提供给我们直接使用的屏幕输出函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果:a=20,b=15,sum=35
    6、#include
    注意:(1)以#号开头 (2)不以分号结尾 这一行没有分号,所以不是语句,在c语言中称之为命令行,或者叫做“预编译处理命令”。
    7、程序中以 /开头并且以/结尾的部分表示程序的注释部分,注释可以添加在程序的任何位置,为了提高程序的可读性而添加,但计算机在执行主函数内容时完全忽略注释部分,换而言之就是计算机当做注释部分不存在于主函数中。
    C程序的生成过程
    C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件。
    源程序的扩展名为 .c ,目标程序的扩展名为 .obj , 可执行程序的扩展名为 .exe 。
    标识符
    在编写程序时,必须为函数、变量等命名,这个名字称为标识符。C语言中标识符的命名规则如下:
    标识符只能由字母、数字、下划线组成;
    标识符的第一个字母必须是字母和下划线;
    标识符区分大小写字母,如If和if是两个完全不同的标识符。
    合法标识符如下: A6, b_3 , _mn 非法的标识符如下: ab#12 , 8m , tr3:4 , yes no
    标识符不能与程序中具有特殊意义的关键字相同,不能与用户编制的函数名、C语言库函数相同,在程序中各种标识符尽量不要重复,以便区分。选择变量名和其他标识符时,应注意做到 “见名知义”。
    标识符分为如下三类:

    1、关键字
    关键字是具有特定含义的,专门用来说明c语言特定成分的一类标识符,不能用作用户的标识符。
    auto break case char union do double else enum extern goto if int long short signed static sizof struct switch unsigned void for while typedef continue float return typedef default
    2、预定义标识符
    预定义标识符在c语言中也有特定的含义,但可以用作用户标识符,预定义标识符分为两类:
    (1)、库函数名字,比如(printf,scanf,sin,isdigit等) (2)、编译处理命令名,比如(define,include)
    3、用户标识符
    用户根据需要自己定义的标识符称为用户标识符。无论如何自定义标识符,都必须符合标识符的三条命名规则。
    常量
    在程序运行中,其值不能被改变的量称为常量。常量有5种类型:整型常量、实型常量、字符常量、字符串常量和符号常量。
    (一)数值转换
    数字的四种表现形式
    ①:二进制:所有数字由0,1构成,逢二进一,二进制数中不会出现2.。 例: ②:八进制:以数字0(注意不是以字母O,o)开头,所有数字由0~7构成,逢八进一,八进制数中不会出现8。 例:0112,0123,077等 ③:十进制:所有数字由0~9构成,逢十进一,十进制数中不会出现10。 例:0,12,-15等 ④:十六进制:以0x或者0X(数字0加字母x)开头,所有数字由09,AF(或者a~f)构成,逢十六进一(其中A、B、C、D、E、F分别代表10、11、12、13、14、15) 例:0x4A、0X14c7等
    在计算机内部,数字均以二进制形式表示和存放,用户输入的普通十进制数字都要被计算机转换成二进制才能在计算机内部存储,同样计算机的运算结果也为二进制,一般要将其转换成十进制数再输出给用户阅读,这种转换通常由计算机自动实现。
    (1)将十进制转换二进制、八进制和十六进制
    除法:将十进制数除以2,记录余数,得到的商继续除以2,直到商为0,然后将各次相处所得的余数从后往前逆序排列,所得余数数字序列就是该十进制数对应的二进制数。八进制和十六进制转换方法同上。
    例:十进制数13转换成二进制数的值为1101,转换八进制为015,转换成十六进制为D.
    (2)将二进制、八进制和十六进制转换成十进制
    乘积求和:将二进制的每一位从低位到高位(右边为低位,左边为高位)分别乘以20,21,22。。。。,然后将这些积求和。
    例如:=(13)10 (317)8= (23E)16=
    (3)二进制与八进制、十六进制数之间的相互转换
    ①:二进制转八进制:从右往左每三位一组转换成十进制数,将所得数据组合就是对应的八进制数(注意:高位不足三位补零)。 例:(010 110 111)2=(267)8 ②:二进制转十六进制:从右往左每四位一组转换成十进制数,将所得数据组合就是对应的十六进制数(注意:高位不足四位补零)。 例:(0101 1011)2=(5B)16 ③:八进制转化二进制:每一位数字转换为三位二进制数字 例:(13)8=(001 011)2= (注意:去掉前面的两个00,因为0在高位没有意义) ④:十六进制转化二进制:每一位数字转换为四位二进制数字 例:(E3)16=(1110 0011)2

    (二)整型常量

    整型常量有3种形式:十进制整型常量、八进制整型常量和十六进制整型常量。
    (注意:c语言中没有直接表示二进制的整型常量,在c语言源程序中不会出现二进制。)
    书写方式如下:
    十进制整型常量:123 , 0 ,-24 , 85L(长整型常量) 等 八进制整型常量:051 ,-026 ,0773 等 十六进制整型常量:0x55 , 0x1101 , 0x , 0x5AC0 , -0xFF。 其中L为长整型。
    (三)实型常量
    实型常量有两种表示形式:小数形式和指数形式。
    小数形式:5.4 0.074 -23.0 指数形式:5.4e0 4.3e-3 -3.3e4
    (1)小数部分为0的实型常量,可以写为453.0 或453。 (2)用小数表示时,小数点的两边必须有数,不能写成“ .453“和“453.“,而应该写成“0.453“和“453.0“。 (3)用指数写法时,e前必须有数字,e后面的指数必须为整数(注意:整数阶码可以是正数,负数,也可以是八进制数、十六进制数,但必须为整数)。

    (四)字符常量

    字符常量的标志是一对单引号‘ ’,c语言中的字符常量有两类:
    (1)由一对单引号括起来的一个字符,如‘a ’, ‘r’ ,‘#’。注意: ′a′ 和 ′A′ 是两个不同的字符常量。
    (2)由一对单引号括起来,以反斜杠\开头,后跟若干数字或者字母,比如‘\n’,其中“\“是转义的意思,后面跟不同的字符表示不同的意思,这类字符常量叫转义字符。具体如图所示 。
    转义字符 转义字符的意义 ASCII码
    \n 回车换行 10 \t 横向跳到下一制表位置 9 \b 退格 8 \r 回车 13 \f 走纸换页 12 \ 反斜线符"" 92 ’ 单引号符 39 \” 双引号符 34 \a 鸣铃 7 \ddd 1~3位八进制数所代表的字符 \xhh 1~2位十六进制数所代表的字符
    (五)字符串常量
    C语言中,以双引号括起来的,由若干个字符组成的序列即为字符串常量。
    例:“ni hao” “happy”等等。

    (六)符号常量
    符号常量是由宏定义“#define“定义的常量,在C程序中可用标识符代表一个常量。
    例:计算圆的面积的c程序。
    #include #define PI 3. main() { float r,s; r=12.5; S=PI rr; printf(“s= %f ”,s); }
    说明:
    #define 是宏定义,此程序中所有出现PI的地方都代表3.,同时PI称为符号常量。习惯上我们用大写字母来表示符号常量,小写字母表示变量,这样比较容易区别。
    变量
    变量就是其值可以改变的量。变量要有变量名,在内存中占据一定的存储单元,存储单元里存放的是该变量的值。不同类型的变量其存储单元的大小不同,变量在使用前必须定义。
    (一)整型变量

    整型变量分为4种:基本型(int)、短整型(short int 或short)、长整型(long int 或 long)和无符号型(unsigned int ,unsigned short,unsigned long)。

    不同的编译系统对上述四种整型数据所占用的位数和数值范围有不同的规定。

    类型说明符

    单词signed来说明“有符号”(即有正负数之分),不写signed也隐含说明为有符号,unsigned用来说明“无符号”(只表示正数)。

    (二)实型变量

    C语言中,实型变量分为单精度类型( float )和双精度类型( double )两种。如:

    float a , b ; double m ;

    在vc中,float 型数据在内存中占4个字节(32位),double型数据占8个字节。单精度实数提供7位有效数字,双精度实数提供15~16位有效数字。实型常量不分float型和double型,一个实型常量可以赋给一个float 型或double型变量,但变量根据其类型截取实型常量中相应的有效数字。

    注意:实型变量只能存放实型值,不能用整型变量存放实型值,也不能用实型变量存放整型值。

    (三)字符变量

    字符变量用来存放字符常量,定义形式:

    char 变量名;

    其中关键字char定义字符型数据类型,占用一个字节的存储单元。

    例:char cr1,cr2; cr1= ‘A’ , cr2=‘B’ ;

    将一个字符赋给一个字符变量时,并不是将该字符本身存储到内存中,而是将该字符对应的ASCII码存储到内存单元中。例如,字符 ′A′ 的ASCII码为65,在内存中的存放形式如下:0

    由于在内存中字符以ASCII码存放,它的存储形式和整数的存储形式类似,所以C语言中字符型数据与整型数据之间可以通用,一个字符能用字符的形式输出,也能用整数的形式输出,字符数据也能进行算术运算,此时相当于对它们的ASCII码进行运算。

    类型的自动转换和强制转换

    当同一表达式中各数据的类型不同时,编译程序会自动把它们转变成同一类型后再进行计算。转换优先级为:

    char < int < float < double

    即左边级别“低“的类型向右边转换。具体地说,若在表达式中优先级最高的数据是double型,则此表达式中的其他数据均被转换成double型,且计算结果也是double型;若在表达式中优先级最高的数据是float型,则此表达式中的其他数据均被转换成float型,且计算结果也是float型。

    在做赋值运算时,若赋值号左右两边的类型不同,则赋值号右边的类型向左边的类型转换;当右边的类型高于左边的类型时,则在转换时对右边的数据进行截取。

    除自动转换外,还有强制转换,表示形式是:

    ( 类型 )(表达式); 例:(int)(a+b)

    讨论:当a值赋值为3.4,b值赋值为2.7,(int)(a+b)和(int)a+b的值分别为多少?

    C运算符认识

    C语言的运算符范围很广,可分为以下几类:

    、算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(%)、自增(++)、自减(–)共七种。

    、赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。 <="" span="">

    、逗号运算符:用于把若干表达式组合成一个表达式(,)。

    、关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(="">=)、小于等于(<=)和不等于(!=)六种。 <="" span="">

    、逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。

    、条件运算符:这是一个三目运算符,用于条件求值(??。

    、位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。

    8、指针运算符:用于取内容(*)和取地址(&)二种运算。

    9、求字节数运算符:用于计算数据类型所占的字节数(sizeof)。

    10、特殊运算符:有括号(),下标[],成员(→,.)等几种。

    另外,按参与运算的对象个数,C语言运算符可分为:单目运算符 (如 !)、双目运算符 (如+,- )和三目运算符 (如 ? : )。

    算术运算符和算术表达式

    一、 基本的算术运算符

    (1)+(加法运算符或正值运算符,如2+5)。

    (2)-(减法运算符或负值运算符,如4-2)。

    (3)(乘法运算符,如38)。

    (4)/(除法运算符,如11/5)。

    /的运算分为两种情况:

    a、“除”的左右两边都为整数时,所得结果必然是整数(注意:仅取整数部分,不是四舍五入)

    比如:5/2的值为2,不是2.5,1/2的值为0。

    b、“除”的左右两边至少有一个是实型数据(即小数)时,所得结果为实型数据。

    比如:5/2.0的值为2.5,7.0/2.0的值为3.5.

    (5)%(模运算符或称求余运算符,%两侧均应为整型数据,如9%7的值为2)。

    需要说明的是:当运算对象为负数时,所得结果随编译器不同而不同,在vc中,结果的符号与被除数相同,比如:13%-2值为1,而-15%2值为-1。

    二、 算术表达式和运算符的优先级与结合性

    算术表达式是用算术运算符和括号将运算量(也称操作数)连接起来的、符合C语言语法规则的表达式。运算对象包括函数、常量和变量等。

    在计算机语言中,算术表达式的求值规律与数学中的四则运算的规律类似,其运算规则和要求如下。

    (1)在算术表达式中,可使用多层圆括号,但括号必须配对。运算时从内层圆括号开始,由内向外依次计算各表达式的值。

    (2)在算术表达式中,对于不同优先级的运算符,可按运算符的优先级由高到低进行运算,若表达式中运算符的优先级相同,则按运算符的结合方向进行运算。

    (3)如果一个运算符两侧的操作数类型不同,则先利用自动转换或强制类型转换,使两者具有相同类型,然后进行运算。

    三、 自增自减运算符

    作用:使变量的值增1或减1。

    如:++i,–i (在使用i之前,先使i的值加1、减1)。 i++,i-- (在使用i之后,使i的值加1、减1)。

    (1)只有变量才能用自增运算符 (++)和自减运算符(–),而常量或表达式不能用,如10++或(x+y)++都是不合法的。

    (2)++和–的结合方向是“自右向左“,如 -i++ ,i的左边是负号运算符,右边是自增运算符,负号运算和自增运算都是 “自右向左“结合的,相当于 -(i++)。

    在循环语句中常用到自增(减)运算符,在指针中也常用到该运算符,考生要弄清楚“i++”和“++i”及“i–”和“–i”的区别,特别弄清楚表达式的值和变量的值。

    赋值运算符与赋值表达式

    一、赋值运算符与赋值表达式

    赋值符号 “=“就是赋值运算符,作用是将一个数据赋给一个变量或将一个变量的值赋给另一个变量,由赋值运算符组成的表达式称为赋值表达式。一般形式为:

    变量名 = 表达式

    在程序中可以多次给一个变量赋值,每赋一次值,与它相应的存储单元中的数据就被更新一次,内存中当前的数据就是最后一次所赋值的那个数据。

    例:a=12; 此表达式读作“将10的值赋值给变量a”。

    a、如果赋值号两边的运算对象类型不一致,系统会自动进行类型转换,转换的规则:将赋值号右边表达式的值的类型转换成赋值号左边变量的类型,

    例:int y=3.5; 在变量y中最终存储的是整数3。

    b、 可以将复制表达式的值再赋值给变量,形成连续赋值。

    例如:x=y=25 是一个连续赋值表达式,x=y=25 等价于x=(y=25),所以表达式x=y=25 最终的值为25 。

    二、复合的赋值运算符

    在赋值运算符之前加上其他运算符可以构成复合赋值运算符。其中与算术运算有关的复合运算符是:+=,-=,*=,/=,%= 。

    两个符号之间不可以有空格,复合赋值运算符的优先级与赋值运算符的相同。表达式n+=1等价于n=n+1,作用是取变量n中的值增1再赋给变量n,其他复合的赋值运算符的运算规则依次类推。

    如求表达a+=a-=a*a 的值,其中a的初值为12 。

    步骤:

    (1)先进行“a-=aa“运算,相当于a=a-aa=12-144=-132 。 (2)再进行“a+=-132“运算,相当于 a=a+(-132)==-264 。

    逗号运算符和逗号表达式

    在c语言中,逗号除了作为分隔符,还可以用作一种运算符----逗号运算符,用逗号运算符将几个表达式连接起来,例如a=b+c,a=b*c等称为逗号表达式。

    一般形式为:

    表达式1 ,表达式2 ,表达式3 , …,表达式n

    例:x=2,y=3,z=4

    逗号表达式具有从左至右的结合性,即先求解表达式1,然后依次求解表达式2,直到表达式n的值。表达式n的值就是整个逗号表达式的值。上述的逗号表达式的值就是表达式z=4的值4.需要注意的是,逗号运算符是所有运算符中级别最低的。

    例:有如下程序段:

    main() { int a=2,b=4,c=6,x,y; y=(x=a+b),(b+c); printf(“y=%d,x=%d”,y,x); }

    程序显示结果为:y=6,x=6

    讨论:将y=(x=a+b),(b+c);改为y=((x=a+b),b+c) 的程序结果?

    关系运算符和关系表达式

    一、 C语言中的逻辑值

    C语言中的逻辑值只有两个:真(true)和假(flase)。用非零代表真,用零代表假。因此,对于任意一个表达式,如果它的值为零,就代表一个假值,如果它的值为非零,就代表一个真值。只要值不是零,不管是正数,负数,整数,实数,都代表一个真值。例如-5的逻辑值为真。

    二、 逻辑表达式

    “&&”和“||”的运算对象有两个,故它们都是双目运算符,而!的运算对象只有一个,因此它是单目运算符。逻辑运算举例如下:

    (1)a&&b: 当&&两边都为“真”时,表达式a&&b的值才是真。

    值得注意的是:在数学中,关系式0

    (2)a||b: 当||两边有一个为“真”时,表达式a||b的值就是真。

    (3)!a: 表示取反,如果a为真,则!A为假,反之亦然。例如!-5的值就为0.

    在C语言中,由&&或||组成的逻辑表达式,在某些特定情况下会产生“短路“现象。

    (1)x && y && z ,只有当x为真(非0)时,才需要判别y的值;只有x和y都为真时,才需要去判别z的值;只要x为假就不必判别y和z,整个表达式的值为0。口诀:“一假必假”。

    例:(!51)&&(++i0) (!51)表达式的值为0,所以计算机运行中就跳过(++i0)此表达式,(!51)&&(++i0)表达式的值为0.

    (2)x||y||z ,只要x的值为真(非零),就不必判别y和z的值 ,整个表达式的值为1,只有x的值为假,才需要判别y的值,只有x和y的值同时为假才需要判别z的值,口诀:“一真必真”。

    位运算

    一、 位运算符

    在计算机中,数据都是以二进制数形式存放的,位运算就是指对存储单元中二进制位的运算。C语言提供6种位运算符。

    二、位运算

    位运算符 & |~<< >> ∧ 按优先级从高到低排列的顺序是:

    位运算符中求反运算“~“优先级最高,而左移和右移相同,居于第二,接下来的顺序是按位与 “&“、按位异或 “∧“和按位或 “|“。顺序为~ << >> & ∧ | 。

    例1:左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。="" <="" span="">

    例如: a<<4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00(十进制48)。

    例2:右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。

    例如: 设 a=15, a>>2 表示把右移为十进制3)。

    应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。

    例3:设二进制数a是00 ,若通过异或运算a∧b 使a的高4位取反,低4位不变,则二进制数b是。

    解析:异或运算常用来使特定位翻转,只要使需翻转的位与1进行异或操作就可以了,因为原数中值为1的位与1进行异或运算得0 ,原数中值为0的位与1进行异或运算结果得1。而与0进行异或的位将保持原值。异或运算还可用来交换两个值,不用临时变量。

    如 int a=3 , b=4;,想将a与b的值互换,可用如下语句实现: a=a∧b;

    b=b∧a;

    a=a∧b;

    所以本题的答案为: 。

    展开全文
  • 一、C语言基础知识的学习方法 二、C语言程序开发的流程 三、安装C语言的编译器 四、C程序的基本结构 五、编译并执行 C 程序 六、知识总结 七、课后作业 八、版权声明
  • 第二章 C程序基本结构2.1 分支结构2.2 关系运算和逻辑运算2.3 循环结构2.4 break和continue语句2.5 goto语句2.6 经典算法举例-1 x<00 x=01 x>0y = 请编程求解分段函数:2.1 分支结构为什么需要分支结构 顺序结构...
  • C语言程序三种基本结构

    万次阅读 2018-01-03 19:27:19
    文章中介绍C语言程序执行过程中最基本的三种结构,包括有:顺序结构、分支结构、循环结构。理解和学习程序的执行过程,对于以后学习其他的编程语言,或者程序的调试,程序调Bug都有很好的帮助。 程序是什么? ...
  • C语言程序基本内容

    2020-11-18 20:45:16
    经典案例代码Hello World! 学习一门编程语言,可能...C语言程序基本结构 头文件(预处理) C程序代码中,要想用一件东西,必须要提前说明,头文件也是如此。 上面Hello World!案例中#include <stdio.h>为包含头
  • C语言基本结构

    2020-11-03 19:46:20
    C语言基本结构 C程序主要包括以下内容: 预处理指令 主函数 主函数体 注释(说明文字) 示例: //预处理指令(包含头文字“<stdio.h>”) /*预处理指令告诉编译器要包含头文件<stdio.h>,程序使用了...
  • 文章目录一、C语言基础知识的学习方法二、C语言程序开发的流程三、安装C语言的编译器四、C程序的基本结构1、程序的注释2、预处理指令3、主函数的入口4、主函数体五、编译并执行 C 程序六、知识总结七、课后作业八、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,547
精华内容 2,218
关键字:

c语言程序基本结构

c语言 订阅