C语言自学课程

电脑杂谈  发布时间:2020-07-21 04:08:43  来源:网络整理

递归 2次调用_递归函数与递归调用_c递归调用

在C语言中,数据类型可以分为:

四种基本数据类型,结构数据类型,指针类型,空类型

数据类型分类

最常用的整数,实数和字符类型(char,int,float,double):

整型,实型,字符型

整数数据是指不带小数的数字(int,short int,long int,unsigned int,unsigned short int,unsigned long int):

整型

注意:

浮点数据是指带小数的数字.

生活中有很多信息适合浮点数据使用,例如: 体重(单位: 千克),商品价格,价格指数等.

由于精度上的差异,它分为3种类型(浮动,双精度,长双精度):

浮点型

注意: C语言中没有字符串变量,并且该字符串只能存储在字符数组中. 稍后将对此进行讨论.

格式化的输出语句也可以称为占位符输出,它根据格式化的类型和指定的位置显示来自计算机的各种类型的数据.

格式为: printf(“输出格式字符”,输出项目);

c语言常用格式化符

当输出语句包含普通字符时,可以使用以下格式:

printf("普通字符输出格式符", 输出项);

mark

注意: 格式字符的数量应与变量,常量或表达式对应.

在程序执行期间,其值不变的数量称为常量.

mtianyan: C语言常量可以分为直接常量和符号常量.

mark

在C语言中,标识符可用于表示常量,称为符号常量. 符号常量必须在使用前定义,其一般形式为:

#define 标识符 常量值 

#include <stdio.h>
#define POCKETMONEY 10    //定义常量及常量值
int main()
{
    // POCKETMONEY = 12;  //小明私自增加零花钱对吗?
    printf("小明今天又得到%d元零花钱\n", POCKETMONEY);
    return 0;  
}

符号常量不能更改.

可以自动转换数据类型.

自动转换在不同数据类型的操作期间发生,并在编译期间自动完成.

自动转换

Char类型数据根据ASCII代码中的相应值转换为int类型数据.

注意:

小字节可以自动转换为大字节,但是大字节不能自动转换为小字节

char可以转换为int,int可以转换为double,char可以转换为double. 但这不能逆转.

通过定义类型转换操作来实现强制类型转换. 其一般形式为:

(数据类型) (表达式)

其功能是将表达式的结果强制转换为类型说明符所表示的类型

使用强制转换时,请注意以下问题:

两个数据类型和表达式都必须加括号. 例如,如果将(int)(x / 2 + y)编写为(int)x / 2 + y,它将转换为int,然后除以2,然后与y相加. 转换后,原始数据的类型和变量值将不会更改,只能在此操作中临时转换. 强制转换的结果不符合四舍五入原则.

使用C语言的操作员:

※ 算术运算符
※ 赋值运算符
※ 关系运算符
※ 逻辑运算符
※ 三目运算符

C语言的基本运算符:

基本算术运算符

除法操作中的注意事项:

递归函数与递归调用_递归 2次调用_c递归调用

如果要除的两个数字均为整数,则结果也是整数,并且省略小数部分,例如8/3 = 2;

如果两个数字之一为小数,则结果为小数,例如: 9.0 / 2 = 4.500000.

mtianyan: 在余下的操作中注意:

此运算仅适用于两个整数的余数运算,例如: 10%3 = 1;

mtianyan: 注意: 10.0%3是错误的;运算后的符号取决于模数的符号,例如(-10)%3 = -1;并且10%(-3)= 1; <

mtianyan: %%表示这是一个%符号.

注意: C语言中没有幂运算符,并且不能使用×和÷等算术符号.

它们通常在循环中使用. 递增和递减运算符具有以下形式:

自增自减

C语言中的赋值运算符分为简单赋值运算符和复合赋值运算符

简单赋值运算符=符号,让我们谈谈复合赋值运算符:

复合赋值运算符是通过在简单赋值运算符=之前添加其他运算符而形成的.

例如+ =,-=,* =,/ =,%=

分析: 定义整数变量a并将其分配给3,a == 5;该公式等于a = a + 5;添加变量a和5并将其分配给a

注意: 运算符和复合运算符中的等号之间没有空格.

C语言中的关系运算符:

关系运算符

关系表达式的值是true和false,在C程序中用整数1和0表示.

注意: > =,

C语言中的逻辑运算符:

逻辑运算符

还有两种逻辑运算值,即true和false. 在C语言中,它们用整数1和0表示. 评估规则如下:

当该操作涉及的两个变量都为true时,结果为true,否则为false. 例如: 5> = 5 && 7> 5,运算结果为true;

只要该操作涉及的两个变量之一为true,则结果为true. 当两个数量均为假时,结果为假. 例如: 5> = 5 || 5> 8,运算结果为true;

当操作中涉及的变量为true时,结果为false;当操作涉及的金额为假时,结果为真. 例如: ! (5> 8),运算结果为true.

C语言三元运算符: ?: ,其格式为:

表达式1 ? 表达式2 : 表达式3; 

执行过程为:

首先判断表达式1的值是否为真,如果为真,则执行表达式2;如果为假,则执行表达式3.

#include <stdio.h>
int main()
{
    //定义小编兜里的钱
    double money =12.0      ; 
    //定义打车回家的费用
    double cost =11.5       ;  
    printf("小编能不能打车回家呢:"); 
    //输出y小编就打车回家了,输出n小编就不能打车回家
    printf("%c\n",money>=cost?'y':'n'                        );
    return 0;
}

各种操作符号的顺序:

运算符的优先级

优先级1的优先级最高,优先级10的优先级最低.

如果条件语句是C语言的分支结构语句.

简单的if语句的基本结构如下:

if(表达式)
{
执行代码块;
}

语义是: 如果表达式的值为true,则将执行以下语句,否则将不执行该语句.

注意: if()之后没有分号,只需写{}

简单的if-else语句的基本结构:

if-else

语义是: 如果表达式的值为true,则执行代码块1,否则执行代码块2.

注意:

if()之后没有分号,只写{},其他之后没有分号,只写{}

用C语言编写的多个if-else语句的结构如下:

递归 2次调用_递归函数与递归调用_c递归调用

if-else多重

语义是: 依次确定表达式的值,当某个值为true时,执行相应的代码块,否则执行代码块n.

注意: 当某个条件为true时,分支结构中的其他语句将不会向下执行.

以C语言嵌套的if-else语句. 嵌套的if-else语句的含义是在if-else语句中写入if-else语句. 其一般形式为:

嵌套if-else

重复执行某种动作是嘎嘎声的循环.

C语言中有三种循环结构,让我们看一下循环优先时C语言的结构

while

表达式代表循环条件,执行代码块是循环体.

while语句的语义是: 计算表达式的值,当该值为true(非0)时,将执行循环体代码块.

while语句中的表达式通常是关系表达式或逻辑表达式. 如果表达式的值为false,则不执行循环主体,否则,始终执行循环主体.

请务必记住要在循环主体中更改循环变量的值,否则将出现无限循环(无限执行).

如果循环主体包含多个语句,则必须将其括在{}中以形成复合语句.

C语言中的do-while循环,一般形式如下:

do-while

do-while循环语句的语义是:

首先在循环中执行执行代码块,然后判断while表达式是否为真,如果为真,则继续循环;如果为假,则终止循环. 因此,do-while循环必须至少执行一次循环语句.

注意: mtianyan: 使用do-while结构语句时,while括号后必须有一个分号.

用c语言编写的for循环的一般形式:

for

其执行过程如下:

执行表达式1初始化循环变量;判断表达式2,如果其值为真(不为0),则执行for循环体中的代码块,然后向下执行;如果其值为false(0),则循环结束;否则,循环结束. 执行表达式3,(i ++)和其他对循环变量进行操作的语句;在for循环中执行代码块后,执行第二步;第一步初始化将只执行一次. 循环结束,程序继续向下执行.

注意: 必须编写for循环中的两个分号

在for循环中:

使用for语句时应引起注意:

for循环中的“表达式1、2、3”不能写为空,但不能默认两个分号(;;). 省略“表达式1(将初始值分配给循环变量)”递归 2次调用,这表示未将初始值分配给循环变量. 省略“表达式2(循环条件)”,不做其他处理,循环总是执行(无限循环). 省略“表达式3(循环变量的增加和减少)”,不执行其他任何处理,并且始终执行循环(无限循环). 表达式1可以是用于设置循环变量的初始值的赋值表达式,也可以是其他表达式. 表达式1和表达式3可以是一个简单表达式,也可以是多个逗号分隔的表达式.

6

表达式2通常是关系表达式或逻辑表达式,但也可以是数字表达式或字符表达式. 只要其值不为零,就执行循环体. 每个表达式中的变量必须在for循环之前定义.

while,do-while和for的三个循环在特定的使用情况下是不同的,如下所示:

当您知道循环数时,更适合用于循环;当您不知道循环数时,适合使用while或do-while循环:

但是从本质上讲,while,do-while和for循环是可以互换的.

多个循环意味着循环结构出现在循环结构的循环主体中.

通常,在实际开发中最多使用三层再循环.

由于循环层越多,运行时间越长,程序越复杂,通常使用2-3个多层循环就足够了. 此外,还可以嵌套不同的循环.

在执行多个循环期间,外部循环是父循环,内部循环是子循环.

父循环是一次,子循环需要执行,直到脱离循环为止. 下一次进入父循环,子循环继续执行...

循环多重

mtianyan: 打印三角形星堆

#include <stdio.h>
int main()
{
    int i, j, k;
    for(i=1; i<5; i++)
    {
        /* 观察每行的空格数量,补全循环条件 */
        for(j=i; j<5; j++)  
        {
            printf(" ");    //输出空格
        }
        /* 观察每行*号的数量,补全循环条件 */
        for( k=0;k<2*i-1;k++) 
        {
            printf("*");   //每行输出的*号
        }
        printf("\n");     //每次循环换行
    }
    return 0;
}

#include <stdio.h>
int main() 
{ 
    // 定义相乘数字i,j以及结果result
    int i, j, result;
     for(i=9;i>=1;i--)
     {
        for(j=1;j<=i;j++)
        {
            printf("%d*%d=%d ",i,j,result=i*j);
        }
        printf("\n");
     }
    return 0;
}

然后,当循环5次时,您需要停止训练而不继续. 在C语言中,您可以使用break语句执行此操作.

使用break语句时请注意以下几点:

没有循环结构,break不能在单独的if-else语句中使用. 在多级循环中,break语句仅跳出当前循环.

然后,当循环5次时,您需要中断并继续训练. 在C语言中,您可以使用continue语句执行此操作

递归 2次调用_递归函数与递归调用_c递归调用

continue语句的功能是结束此循环并开始执行下一个循环.

break语句和Continue语句之间的区别是:

中断是跳出当前的整个循环,继续是结束该循环并开始下一个循环.

switch语句的结构如下:

switch

mtianyan: 切换语句时,您还应注意以下几点:

大小写之后的每个常量表达式的值不能相同,否则会发生错误. 如果case子句后没有中断;它将继续执行直到遇到中断为止;在跳出switch语句之前. switch之后的expression语句只能是整数或字符类型. 在这种情况下,允许使用多个语句,可以将其括在{}中. 可以更改case和default子句的顺序,而不会影响程序执行结果. 默认子句可以省略.

#include <stdio.h>
int main() 
{ 
    /* 定义需要计算的日期 */
    int date = 0;
    int year = 2008;
    int month = 8;
    int day = 8;
    switch(month)
    {
        case 12:date+=30;
        case 11:date+=31;
        case 10:date+=30;
        case 9:date+=31;
        case 8:date+=31;
        case 7:date+=30;
        case 6:date+=31;
        case 5:date+=30;
        case 4:date+=31;
        case 3:
        if((year%4==0&&year%100!=0)||year%400==0)
        {
            date+=29;
        }
        else
        {
            date+=28;
        }
        case 2:
        date+=31;
        case 1:
        date+=day;
        printf("%d年%d月%d日是该年的第%d天",year,month,day,date);
        break;
        default:
        printf("error");
        break;
    }
    return 0;
}


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-287848-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 胡珍玉
      胡珍玉

      本来伊拉克人民还有家

    • 邹一墨
      邹一墨

      Amber和欧阳娜娜越来越像了

    • 倪子和
      倪子和

      很多家里人就等你掉坑里然后往下扔石头

    热点图片
    拼命载入中...