linux学习day6

鸡鸭同笼问题

#include<stdio.h>
int main(){
    int n=0,m=0;
    printf("请输入有几个头,几条腿\n");
    scanf("%d %d",&n,&m);
    for(int i=0;i<=n;i++){
        int j=n-i;
        if(2*i+4*j==m){
            printf("鸡有%d只,鸭有%d只\n",i,j);
        }
    }
    return 0;
}

数组

1.1引入目的:

       对于之前所学习的内容,都是对单个数据进行操作,只需要定义单个变量,然后对该变量进行处理即可但是,如果对于庞大的数据而言,需要定义很多变量来解决,为了批量处理数据,我们引入了数组所谓数组,就是多个变量的集合,

1.2数组的概念及定义:

1.2.1   定义:

数组是连续存储多个相同数据类型的变量的集合,数组于构造数据类型

1.2.2   定义格式:

数据类型 数据名[数据长度]

int score[40];

定义了一个长度为40的整型数组score

1.2.3   注意:

连续存储,说明这多个变量的地址是连续的

相同数据类型,说明同一个数组中的每个变量的数据类型都是一样的

变量的集合:说明数组定义时不能为空

1.数据类型:可以是基本数据类型,也可以是构造数据类型,指针类型或者空类型

2.数组名:标识符,要符合标识符的命名规则

                 1)只能由字母、数字、下划线组成

                 2)不能以数字开头

                 3)不能使用关键字

                 4)严格区分大小写

                 5)做到见名知意

3.中括号:表示这是数组的标识,正在定义一个数组         

4.常量:表示定义的数组长度,或者说是定义的变量的个数

                 1)不能为0

                 2)不能为小数

                 3)不能空着

1.2.4    数组的定义:

#include<stdio.h>
int main(){
    int arr[5];//整形数组
    char brr[5];//字符数组
    double crr[5];//小数数组
    printf("arr[0]=%d brr[0]=%c brr[0]=%lf\n",arr[0],brr[0],crr[0]);
    //arr[0]=610876056 brr[0]={ brr[0]=0.000000   随机值
    int drr[5]={1,2,3,4,5};//全部初始化
    int err[5]={11,22,33};//部分初始化
    int frr[]={111,222,333,444,555};//特殊初始化
    printf("sizeof(frr)=%ld\n",sizeof(frr));//20
    printf("len of frr=%ld\n",sizeof(frr)/sizeof(frr[0]));//5
    return 0;
}

 

对于没有赋值的数组,他的值是随机的

1.2.5    数组的初始化:

所谓初始化,就是在给变量申请空间时,顺便给定初始值;初始化时,用一对花括号将元素的值包裹起来,多个值之间使用逗号隔开

对于数组的初始化而言,有三种方式

1.全部初始化:数组的长度为多少,就初始化几个元素的值

                         int arr[5]={1,2,3,4,5};

                         arr[0]=1,    arr[1]=2,    arr[2]=3,    arr[3]=4,    arr[4]=5

2.部分初始化:初始化元素的个数,小于数组的长度,此时,默认从前往后初始化,没有初始化的元素用0补齐

                         int arr[5]={1,2,3};

                         arr[0]=1,    arr[1]=2,    arr[2]=3,    arr[3]=0,    arr[4]=0

3.特殊初始化:在定义数组并初始化时,可以不用给定数组的长度,数组的长度由初始化元素个数而定

                         int arr[]={1,2,3};

                         arr[0]=1,    arr[1]=2,    arr[2]=3

 1.3对数组元素的常规操作

1.3.1 输入输出

所谓对数组进行输入输出,其实就是对任意一个元素进行重复性输入输出,重复性的动作我们使用循环解决
注意:C语言不允许对除字符数组外的其他数组整体进行输入输出,只能找到数组元素,对单个元素进行操作

#include <stdio.h>
int main(){
    int arr[5]={0};
    for(int i=0;i<5;i++){
        printf("请输入第%d个数:",i+1);
        scanf("%d",&arr[i]);
    }
    return 0;
}

1.3.2 求和值,均值

所谓求和值,就是将所有任意值进行累加,需要定义一个变量存储总和但是要求,在使用之前,必须清零

#include <stdio.h>
int main(){
    //数组的输入
    define num=10;
    int score[num]={0};
    for(int i=0;i<num;i++){
        printf("请输入第%d个数:",i+1);
        scanf("%d",&score[i]);
    }

    //求和值,均值
    int sum=0;
    double avg=0;
    for(int i=0;i<num;i++){
        sum+=score[i];
    }
    avg=1.0*sum/num;
    printf("总和为:%d,平均值为:%.2lf\n",sum,avg);
    return 0;
}

1.3.3 求最值

 

#include <stdio.h>
int main(){
    //数组的输入
    define num=10;
    int score[num]={0};
    for(int i=0;i<num;i++){
        printf("请输入第%d个数:",i+1);
        scanf("%d",&score[i]);
    }

    //求和值,均值
    int sum=0;
    double avg=0;
    for(int i=0;i<num;i++){
        sum+=score[i];
    }
    avg=1.0*sum/num;
    printf("总和为:%d,平均值为:%.2lf\n",sum,avg);

    //求最值
    int max=0;
    int maxi=0;//下标
    max=score[0];
    for(int i=1;i<num;i++){
        if(max<score[i]){
            max=score[i];
            maxi=i+1;//记录下标
        }
    }
    
    return 0;
}

1.3.4 查找

 

#include <stdio.h>
int main(){
    //数组的输入
    define num=10;
    int score[num]={0};
    for(int i=0;i<num;i++){
        printf("请输入第%d位成绩:",i+1);
        scanf("%d",&score[i]);
    }

    //求和值,均值
    int sum=0;
    double avg=0;
    for(int i=0;i<num;i++){
        sum+=score[i];
    }
    avg=1.0*sum/num;
    printf("成绩总和为:%d,平均成绩为:%.2lf\n",sum,avg);

    //求最值
    int max=0;
    int maxi=0;//下标
    max=score[0];
    for(int i=1;i<num;i++){
        if(max<score[i]){
            max=score[i];
            maxi=i+1;//记录下标
        }
    }
    printf("成绩最高的是%d位,成绩为%d\n",maxi,max);
    
    //查找
    int search=0;
    printf("请输入需要查找的成绩\n");
    scanf("%d",&search);
    for(int i=0;i<max;i++){
        if(search==score[i]){
            printf("您要查找的成绩是第%d位",i+1);
            break;
        }
        if(i==max){
        printf("查找失败\n");
    }
    }

 

1.3.5 逆序

1.3.6 挑选数据

1.3.7 排序

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值