首页 > 其他分享 >学习C语言第三天

学习C语言第三天

时间:2023-03-30 23:02:58浏览次数:25  
标签:return 函数 int data1 第三天 C语言 学习 data data2

  前一天学习的数组,接下来要学习的是二维数组和函数。

一.二维数组

1.1引入场景

  有三个小队,每个小队都有10个人,对小队进行一些操作。

1.2二维数组的定义和表达形式

  二位数组通常称为矩阵  类型说明符 数组名[常量表达式][常量表达式]  例:

int arr[3][3];    //一个三行三列的二维数组

1.3二维数组的遍历

#include<stdio.h>

int main()
{
    int arry[2][3] = {{5,4,3},{3,8,9}};
    int i,j;
    for(i=0;i<2;i++){
        for(j=0;j<3;j++){
            printf("%d,%d,%d \n",i,j,arry[i][j]);
        }
    }
    
    return 0;
}

1.4一些注意事项

  二维数组可以不写列,但是一定要写行

1.5练习题

  有一个3*4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号

#include<stdio.h>

int main()
{
    int i;
    int j;
    int hang;
    int lie;
    
    int arry[3][4] = {1,8,12,2,3,67,4,5,6,5,90};
    int max = arry[0][0];
    for(i=0;i<3;i++){
        for(j=0;j<4;j++){
            if(max < arry[i][j]){
                max = arry[i][j];
                hang = i;
                lie = j;
            }
        }
    }
    printf("%d %d %d",max,hang+1,lie+1);
    
    return 0;
}

二.函数

2.1为什么要用函数

  2.1 1.避免代码冗长
  2.1.2.模块化的设计思路
  2.1.3.按功能划分,每个函数代表一个功能
2.2函数三要素

   函数名 参数列表 返回值   c语言要求,再程序中用到的所有函数,必须“先定义,后使用”

2.3函数的定义和调用

  类型名 函数名(){ 函数体 }

  2.3.1定义无参函数

#include<stdio.h>

void printWelcome()
{
    printf("=======\n");
    printf("欢迎\n");
    printf("=======\n");
}

int main()
{
    printWelcome();
    return 0;
}

  2.3.2定义有参数返回值的函数

#include<stdio.h>

int getDataFromX(int data)
{
    return 2*data + 1;
}

int main()
{
    int x;
    int y;
    puts("请输入一个数:");
    scanf("%d",&x);
    y = getDataFromX(x);
    printf("x = %d,y = %d",x,y);
    return 0;
}

  2.3.3定义空参数

    占坑用

2.4形式参数和实际参数

  传递参数,传递是值 形参和实参值相同,但是地址空间不同。形式参数的生命周期:栈空间,被调用的时候才为形式参数申请内存,调用结束,内存才被释放。编程案例:输入两个函数,要求输出其较大值,用函数实现

#include<stdio.h>

int getMaxFromTwoData(int data1,int data2)//形式参数
{
    return data1>data2?data1:data2;
}
 
int main()
{
    int a;
    int b;
    int max;
    puts("请输入两个数:");
    scanf("%d %d",&a,&b);
    max = getMaxFromTwoData(a,b);//实际参数
    printf("a = %d,b = %d,max = %d",a,b,max);
    return 0;
}

2.5函数调用过程

2.6函数调用的条件

  1.函数已被定义2.调用库函数3.函数的声明

2.7函数的嵌套

   案例:输入四个数,函数的方式找出最大值

#include<stdio.h>

int getMaxFromTwoData(int data1,int data2)
{
    return data1>data2?data1:data2;
}

int getMaxFromThreeData(int data1,int data2,int data3)
{
    int ret = getMaxFromTwoData(data1,data2);
    return ret>data3?ret:data3;
}

int getMaxFromFourData(int data1,int data2,int data3,int data4)
{
    int ret = getMaxFromThreeData(data1,data2,data3);
    return ret>data4?ret:data4;
}

 
int main()
{
    int a;
    int b;
    int c;
    int d;
    int max;
    puts("请输入四个数:");
    scanf("%d%d%d%d",&a,&b,&c,&d);
    max = getMaxFromFourData(a,b,c,d);//实际参数
    printf("a = %d,b = %d,c = %d,d = %d,max = %d",a,b,c,d,max);
    return 0;
}

2.8函数的递归

  工作时应该尽量减少递归的使用。

  编程案例:用递归法求n!

#include<stdio.h>

int factorial(int data)
{
    if(data == 0){
        return -1;
    }else if(data ==1){
        data = 1;
        return data;
    }else{
        return data*factorial(data-1);
    }
}

int main()
{
    int data;
    int res;
    
    puts("请输入一个数");
    scanf("%d",&data);
    
    res = factorial(data);
    
    printf("阶乘为%d",res);
}

 

标签:return,函数,int,data1,第三天,C语言,学习,data,data2
From: https://www.cnblogs.com/Lynchteacher/p/17274682.html

相关文章

  • Spring AOP官方文档学习笔记(一)之AOP概述
    1.AOP简介(1)Spring的关键组件之一就是AOP框架,它是对SpringIoC的补充(这意味着如果我们的IOC容器不需要AOP的话就不用引入AOP),此外,AOP亦是对OOP的补充,OOP的关注点在于类,而AOP的关注点在于切面,它可以将分散在不同类不同方法中重复的代码逻辑抽取出来,称之为通知(Advice),然后在运行......
  • python基础学习总结
    python关键字也是以下划线或者字母开头。python关键字可以通过导包获取关键字如下: ['False','None','True','and','as','assert','async','await','break','class','continue'......
  • sqlmap工具学习
    tryhackme:sqlmapgithub:https://github.com/sqlmapproject/sqlmapkali集成参数介绍sqlmap-h_____H________[(]___________{1.7.2#stable}|_-|.["]|.'|.||___|_[']_|_|_|__,|_||_|V...|_|https://s......
  • 苏格拉底学习法
    苏格拉底教学法(Socraticmethod)是一种以提问为基础的教学方法,其名称来源于古希腊哲学家苏格拉底。这种教学法的主要原则是通过提问来引导学生思考和探究问题,而不是直接告诉他们答案。通过这种方式,学生可以更深入地理解问题,并在思考的过程中形成自己的观点和见解。苏格拉底教学法......
  • 3.30软件工程学习总结
    今天由于课程较多,没有较多的时间学代码,但也有点时间基本上完成了团队外包杯项目的简单的展示页面设计制作。今天还思考了,觉得自己差的还是挺多的,以后在完成了团队内我能完成的任务后,在可利用的时间里还是要学习更多的内容,学习别人做的部分。......
  • 文件的简单学习
    文件输入输出:用>和<做重定向,>是把输入写进另一个文件,<是从文件中获取1FILE*fopen(constchar*resrictpath,constchar*restrictmode);2intfclose(FILE*stream);3fscanf(FILE*,...)打开文件的标准代码:1FILE*fp=fopen("file","r");2if(fp){3fscanf(......
  • Doker学习
    一、安装官网:www.docker.com安装步骤(CenteOS7)yum包更新到最新yumupdate安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的#-y:意思是需要输入Y运行下一步的自动帮我们键入Yyuminstall-yyum-utilsdevice-mapper-persistent......
  • 密码学SAT入门003——关于流密码入门算法A5-1的学习
      电子科技大学《现代密码学》慕课截图——感谢聂旭云、廖永建、熊虎等几位老师的讲解                                         算法code A5_1.algprogramdescribe......
  • nvprof学习手记
    最近在读professionalcudacprogramming.第三章里有一些关于nvprof的内容.记录一下过程中遇到的问题.本书的代码可以在这里找到.线程束分化GPU在控制流上相对简单,相比GPU它没有复杂的分支预测机制,一个warp中所有线程在同一周期内必须执行相同指令.如果一个线程执行一条指令......
  • Java学习日记4
    2023.3.29学习Java打卡JDBCJDBC(JavaDatabseConnectivity),Java-数据库连接,用Java语言操作数据库。本质:是sun公司定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中......