C语言自学课程(2)

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

正确: 继续只能在循环主体中使用

在C语言中也有这样一条语句,它是goto语句,这是无条件分支语句.

goto语句的用法格式为:

goto 语句标号;

mark

C语言提供了大量库函数: 例如,stdio.h提供输出函数

自定义功能的一般形式:

自定义函数

注意:

[]可以省略内容,省略数据类型描述,默认为int类型函数;省略的参数表示该函数是无参数函数,不省略的参数表示该函数是参数化函数;函数名称遵循标识符命名约定; Mtianyan: 尝试将自定义函数放在主函数之前. 如果要将其放在主函数之后,则需要在主函数之前声明自定义函数. 声明格式为:

[数据类型说明] 函数名称([参数]);

当我们需要使用自定义函数时递归 2次调用,必须调用它,因此当我们调用它时,我们将其称为函数调用.

在C语言中,函数调用的一般形式为:

函数名([参数]); 

注意:

调用不带参数的函数时,可以省略[]的包含. []可以是常量,变量或其他结构化数据和表达式,并且多个参数用逗号分隔.

不需要功能参数的功能称为无参数功能,需要功能参数的功能称为参数化功能.

带有和不带有参数的函数的一般形式如下:

函数

参数化函数和无参数函数之间的唯一区别是,函数()中还有一个附加参数列表.

该函数的参数分为形式参数和实际参数.

类似于小明,他所说的实际上并没有行事;

就像小刚实际上可以采取行动一样.

函数的形式参数和实际参数具有以下特征:

函数调用结束并返回到调用函数后,将无法再使用形式参数变量.

无论实际数量是什么类型,在调用函数时它们都必须具有某些值,以便将这些值传递给形式参数. 因此,应事先使用实际参数通过赋值获得一定的值.

mark

函数的返回值是指在函数被调用并返回到调用函数之后,通过在函数体内执行程序段所获得的值.

在函数的返回值中注意以下几点:

return语句的一般形式为:

return 表达式   或者为:  return (表达式);

注意: 如果两者不一致,则以函数的返回类型为准,并且类型转换将自动执行.

注意:

void函数可以具有执行代码块,但不能具有返回值.

mtianyan: 如果void函数中有return语句,则该语句只能以函数结尾. 格式为: return;

递归是一个在其函数主体中调用自身的函数.

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

递归函数的执行将重复调用自身,每次调用将进入一个新层.

请注意,递归函数必须具有结束条件

分析这个5阶乘的例子,看看他的计算过程:

递归

当程序计算阶乘5时,它首先执行递归,并在n = 1或n = 0时返回1,然后重新计算并返回. 可以看出,递归函数必须具有结束条件.

递归函数的特征:

每个级别的函数调用都有其自己的变量,但是不会复制功能代码. 例如,当计算阶乘5时,每次递归的变量都不相同;每个调用都会有一个返回,例如计算5在阶乘中,每次递归都会返回到下一次;在递归函数中,递归调用之前的语句与各级被调用函数的执行顺序相同;在递归函数中,递归调用后的语句的执行顺序与调用顺序相反. 递归函数中必须有一个终止语句.

用一句话概括递归: 自调用和完成状态

任务

猴子在第一天采摘了N个桃子,那时吃了一半. 这还不够,所以他又吃了一个. 第二天,我吃了剩下的桃子的一半,又吃了一个. 每天我都会吃一半,剩下一半和前一天之一. 第十天,我想吃的时候只剩下一个桃子. 问第一天摘了多少桃子?并反向打印每天剩下的桃子数量.

#include <stdio.h>
int getPeachNumber(int n)  
{
    int num;    
    if(n==10)
    {
       return 1;      
    } 
    else
    {
        num = (getPeachNumber(n+1)+1)*2;  
        printf("第%d天所剩桃子%d个\n", n, num); 
    }
    return num;
}
int main()
{
    int num = getPeachNumber(1);
    printf("猴子第一天摘了:%d个桃子。\n", num);
    return 0;
}

有5个人坐在一起,问第五个人几岁?他说他比第四人大2岁. 当问及第四人称的年龄时,他说自己比第三人称大2岁. 问第三人称自己比第二人大两岁. 问第二个人,说他比第一个人大两岁. 最后,我问第一人称,他说他今年10岁. 第五人多大了?

程序分析:

使用递归方法,递归分为两个阶段: 后推和递归. 如果您想知道第五人称的年龄,则需要知道第四人称的年龄,依此类推,推到第一人称(10岁),然后往回推.

#include <stdio.h> 
int dfs(int n) {
    return n == 1 ? 10 : dfs(n - 1) + 2;
}
int main() 
{
    printf("第5个人的年龄是%d岁", dfs(5)); 
    return 0;
} 

C语言中的变量根据其范围可以分为两种类型,即局部变量和全局变量.

mtianyan: C语言根据变量的生命周期进行划分,可以分为静态存储和动态存储.

C语言的存储类别分为四类:

1. 用关键字auto定义的变量是自动变量. 自动可以省略. 如果未写入auto,则将其隐式定义为“自动存储类别”,这是一种动态存储方法. 如:

auto

2. 那些用static修改的变量是static变量. 如果在函数内部定义它们,则它们称为静态局部变量;否则,它们将被称为局部变量. 如果它们在函数外部定义,则称为静态外部变量. 以下是静态局部变量:

static

注意: 静态局部变量属于静态存储类别. 存储单元分配在静态存储区域中,在程序整个运行期间不会释放;静态局部变量在编译时被分配了一个初始值,即该初始值仅被分配了一次;如果在定义局部变量时未分配初始值,则对于静态局部变量,将在编译时自动分配初始值0(对于数字变量)或空字符(对于字符变量).

3. 为了提高效率,C语言允许将局部变量的值放置在CPU的寄存器中. 这样的变量称为“寄存器变量”,并用关键字register声明. 例如:

register

mtianyan: 注意: 只能将局部自动变量和形式参数用作寄存器变量;请参见表3. 计算机系统中寄存器的数量是有限的,并且不能定义任何数量的寄存器变量;局部静态变量不能定义为寄存器变量.

4. extern声明的变量是外部变量,外部变量的含义是函数可以调用在函数之后定义的变量. 如:

extern

静态变量仅分配一次

hello.c

#include <stdio.h>
#include "test.c"   //引用test.c文件
extern void printLine()     //这里定义的方法对吗?
{
   printf("**************\n");   
}
int main()
{
    say();
    return 0;
}

test.c

#include <stdio.h>
void printLine();
static void say(){
printLine();
printf("I love imooc\n");
printf("good good study!\n");
printf("day day up!\n");
printLine();
}

对于hello.c,直接引入了test.c文件. 然后您可以在testc中调用静态方法say()

对于test.c,未引入. 您可以通过声明调用在另一个源文件中公开的方法.

北京叫车计费规则如下:

1. 每公里单价为2.3元.

2. 起始价13元(含3公里)

3. 要在第二天的23:00(含)至凌晨5:00(不含)之间乘,每公里将加收20%的费用.

4. 每次加收1元的燃油附加费.

小明每天必须乘上下班. 公司与房屋之间的距离为12公里. 工作时间是早上9点和下午6点.

请编写一个小程序来计算小明每天的总费用.

#include <stdio.h>
float taxifee(int clock,int miles)
{
    float money;
    if(miles<=3)
    {
        money=14;
        printf("费用为14\n");
    }
    else
    {
        if(clock>=23 || clock<5)
        {
            money=13+1+2.3*(miles-3)*1.2;
            printf("夜间车费为:%f\n",money);
        }
        else
        {
            money=13+1+2.3*(miles-3);
            printf("日间车费为:%f\n",money);
        }
    }
    return money;    
}
int main()
{
    printf("打的总费用:%.1f\n",taxifee(9,12)+taxifee(18,12));
    return 0;
}

程序中还需要一个容器,但是该容器有点特殊. 它是程序中具有固定大小和相同数据类型的连续存储空间. 它也有一个很好的名字,叫做数组. 阵列可以理解为固定大小,放置的物品是同一种购物袋,可以在这里购买

袋子中的物品按一定顺序放置.


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

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

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