精华内容
下载资源
问答
  • C语言如何计算数组的长度

    万次阅读 多人点赞 2018-05-04 17:17:46
    (1)借助sizeof()函数 :#include<stdio.h>int main(){ // 定义一个整型数组, 并进行... // 计算数组中数据长度 : // 所有数据的字节除以一个数据的字节即为数据的个数 :  length = sizeof(arr) / ...

    (1)借助sizeof()函数 :

    #include<stdio.h>
    int main()
    {
    // 定义一个整型数组, 并进行初始化赋值9个数据 : 
    int arr[] = {1,2,3,4,5,6,7,8,9};
    int length = 0;
    // 计算数组中数据长度 :
    // 所有数据的字节数除以一个数据的字节数即为数据的个数 : 
    length = sizeof(arr) / sizeof(int); 

    printf("数组的长度为: %d\n",length);

    return 0;



    执行结果 :


    (2)上面的方法会出现一个误区

    那就是当数组作为实参传递到另一个函数时, 而这个函数执行了上面同样的方法, 结果出来的不会正确的数组的长度 :

    测试代码 :

    #include<stdio.h>

    void test(int arr[])
    {
    int length = 0;
    length = sizeof(arr) / sizeof(int);
    printf("test_数组的总字节数为: %d\n",sizeof(arr));
    printf("test_数组的长度为: %d\n",length);
    }

    int main()
    {
    // 定义一个整型数组, 并进行初始化赋值9个数据 : 
    int arr[] = {1,2,3,4,5,6,7,8,9};
    int length = 0;
    // 计算数组中数据长度 :
    // 所有数据的字节数除以一个数据的字节数即为数据的个数 : 
    length = sizeof(arr) / sizeof(int); 
    printf("main_数组的长度为: %d\n",length);

    test(arr);

    return 0;

    执行结果 :


    代码分析 :

    当将数组作为实参传递到另一个函数中时, 另一个函数的形参相当于一个指针变, 因为将数组的名作为实参时, 就是将数字的首地址作为实参, 所以在test函数中输出的sizeof(arr)其实得到的是一个整型数组的长度(所占的字节数), 所以结果是8, 再用其除以int所占的字节数(4), 结果就是2 .

    (这样是得不到准确的数组的长度的, 建议的操作是在定义数组的函数中计算数组的长度, 在以实参的形式传递出去, 这样其他的函数变可以获得数组的长度

    展开全文
  • 初始化数组 int ages[3] = {4, 6, 9}; int nums[10] = {1,2}; // 其余的自动初始化为0 int nums[] = {1,2,3,5,6}; // 根据大括号中的元素个确定数组元素的个数 int nums[5] = {[4] = 3,[1] = 2...计算数组中元素的个
  • c语言的数组

    2015-11-14 23:37:43
    如果没有对数组进行初始化,里面存放的是一些垃圾数据(随机值)在定义数组的同时进行初始化,可以省略元素个,会自动的计算出数组元素的个数要想给数组一次性赋值(给数组中所有的元素赋值)只能在定义数组的同时,...

      数组[]中的元素个数只能写整型常量,以及返回值是整型常量的表达式通过变量定义数组,如果没有对数组进行初始化,里面存放的是一些垃圾数据(随机值)在定义数组的同时进行初始化,可以省略元素个数,会自动的计算出数组元素的个数要想给数组一次性赋值(给数组中所有的元素赋值)只能在定义数组的同时,如果定义完数组之后,就不能再对数组进行一次性的赋值数组的地址就是它第0个元素的地址,数组名就是数组的地址

      数组元素存放值是从小到大, 而每一个元素存值又是从大到小

      因为内存寻址从大到小,所以先定义的数组的地址比后定义的地址大

      基本数据类型作位函数参数是值传递

      数组作为函数参数传递的是地址

      当数组作为函数参数传递的时候,可以省略[]中的元素个数

      当数组作为函数参数传递的时候,会自动转换成"指针类型"

      而指针在当前操作系统mac 下占用8个字节

      想在函数中动态计算数组的元素个数是不行的,因为指针类型占8个字节

      选择排序原理:依次选择数组中过的每一个元素和其他元素进行比较

      当内循环执行完一次(比较完一次), 最值出现在头角标上

      冒泡排序原理: 冒泡排序是拿相邻的两个元素进行比较

      特点: 内循环执行完一次(完整的比较完一次),最值出现在尾角标上

    展开全文
  • C语言数组函数结合

    2021-03-26 10:02:04
    如何计算数组中元素的个数 数组的总大小/一个类型的大小 int a[3] char b[3] 两个数组有什么不同 一个char型占用空间一个字符 一个整型占用空间四个字节 printf(“a数组的大小是:%d”,sizeof(a)) printf(“a数组有...

    数组和函数结合,数组名当作实际参数
    arrayPrint(array)

    purchar()输出一个字符 getchar()获取一个字符

    如何计算数组中元素的个数
    数组的总大小/一个类型的大小

    int a[3]
    char b[3]
    两个数组有什么不同
    一个char型占用空间一个字符
    一个整型数占用空间四个字节

    printf(“a数组的大小是:%d”,sizeof(a))
    printf(“a数组有%d个元素”,sizeof(a)/sizeof(a[0]))

    !!!
    形式参数中,虽然写的是一个数组的样子,中括号中数组的大小是无效的!!!
    这里不管括号中写多少,都不能代表形参数组有多大!
    这里的中括号的作用仅仅用来表示,该参数是一个(地址)。windows 啊哈c中4个字节表示Linux 64位中用8个字节表示

    例子:
    #include <stdio.h>
    #include <stdlib.h>
    int arrayPrint(int datas[],int cnt){
    int i;
    for(i=0;i<cnt;i++)
    {
    printf(“第%d个元素是%d\n”,i+1,datas[i]);
    }

    }

    int main()
    {
    int array[3] = {3,2,32};
    arrayPrint(array,sizeof(array)/sizeof(array[0]));
    //也可以arrayPrint(&array[0],sizeof(array)/sizeof(array[0]));
    从第一个地址遍历数组

    system("pause");
    return 0;
    

    }

    展开全文
  • 编写函数,计算二维数组中正数的平均值和负数的个数,通过两个全局变量返回 a.主函数中定义一个3行4列的二维数组,数组元素类型不限,在程序中对数组元素进行赋值 b.主函数中输出该二维数组(显示为3行4列)、正数的平均...

    题目来源:大工慕课 链接
    作者:Caleb Sung

    题目要求

    编写函数,计算二维数组中正数的平均值和负数的个数,通过两个全局变量返回
    a.主函数中定义一个3行4列的二维数组,数组元素类型不限,在程序中对数组元素进行赋值
    b.主函数中输出该二维数组(显示为3行4列)、正数的平均值以及负数的个数

    提示

    根据题意我们要随机生成12个数字赋值给a[3][4], 不过采用srand(time(NULL))生成随机种子后再使用rand()来生成随机数只能生成正的随机数。
    对于这个问题我们可以利用这样的方法解决:

    a[i][j] = (rand()%100+0) - 50;

    可以理解为生成-50到50之间(含)的整数。

    参考代码

    为防止计算平均数时结果带有小数,应当将average定义为float等类型。

    #include<stdio.h>
    
    int count=0;
    float average=0;
    
    void summary(int a[3][4]){
        int sum=0, i, j;
        for(i=0; i<3; i++)
            for(j=0; j<4; j++){
                if(a[i][j] > 0)
                    sum += a[i][j];
                else
                    count++;
            }
        average = sum/12;
    }
    
    void main(){
        int a[3][4], i, j;
        srand(time(NULL));
        for(i=0; i<3; i++)
            for(j=0; j<4; j++)
                a[i][j] = (rand()%100+0) - 50;
        printf("随机生成的数组为:\n");
        for(i=0; i<3; i++)
            for(j=0; j<4; j++){
                printf("%d\t", a[i][j]);
                if(j == 3){
                    printf("\n");
            }
        }
        summary(a);
        printf("\n数组中全部正数的平均值为:%.2f\n数组中全部负数的数量为:%d", average, count);
    }
    展开全文
  • 一个整型占用空间4个字节;一个字符型数组的空间1个字节 C语言中计算a数组的大小是printf("a数组的大小是%d\n",...C语言计算数组中元素的个数: 数组的总大小 / 一个类型的大小 即:sizeof(a) / sizeof(a[0]) ...
  • 请编写一个函数function,它的功能是:求除1到m之内(含m)能北7或11整除的所有整数放在数组a,通过n返回这些数的个数。 2 、温馨提示 C语言试题汇总里可用于计算机二级C语言笔试、...
  • //M中第arow行在结点数组中的范围 for( Mcol=M.rpos[arow]; Mcol; Mcol++ ){ //遍历M中第arow行每一个j Mj=M.matrix[Mcol].j; Nlim = Mj[Mj+1] : N.tu+1;//在N中找到行号i等于M中列号j位置 for( ...
  • 给定一个二进制数组计算其中最大连续1的个数。 示例 1: 输入: [1,1,0,1,1,1] 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3. 注意: 输入的数组只包含 0 和1。 输入数组的长度是正...
  • 题目完整描述: 按如下函数原型编写程序,用一个整型数组feedback保存调查40个反馈意见...众数是数组中出现次数最多那个(不考虑两个或两个以上反馈意见出现次数相同情况)。 这是一道 一维数组做函数参...
  • 一、地址 ...[ ]里面的个数必须是一个固定值,可以是常亮(比如6,8),常量表达式(比如3+4 、5*5)。绝对不能使用变量或多数情况下不要省略元素个(当数组作为函数的形参和数组初始化时以外)。 ...
  • 数组,顾名思义就是一组同类型的。一、数组的声明 声明数组的语法为在数组名后加上用方括号括起来的维...数组的大小等于每个元素的大小乘上数组元素的个数。方括号的维表达式可以包含运算符,但其计算结果必
  • 2、当{ }中值的个数少于元素个时: 3、二维数组的两种赋值方式: 4、将字符串一次性地赋值(可以指明数组长度,也可以不指明): 5、字符数组中的'\0': 6、花式初始化赋值: 7、计算元素个: 为了严谨:...
  • 数组,顾名思义就是一组同类型的。 一、数组的声明 声明数组的语法为在数组名后加上用方...数组的大小等于每个元素的大小乘上数组元素的个数。方括号的维表达式可以包含运算符,但其计算结果必须是一个长整型
  • C语言中,对于字符型数组,可以直接使用strlen函数(函数头:&lt;string.h&gt; 格式:strlen(数组),返回一个int值)得出数组实际存储元素个,但如果是其它类型,就不能。但当其它类型的数组存满时,...
  • 文件描述:统计字符串单词的个数.c 作者:安理计算机 杨腾飞 日期:2019.2.15 版本:v1.1 问题描述:输入一行字符,然后判断其中有多少单词,要求每个单词间用空格分开,并且最后的字符不能为空格 知识点: ------...
  • (1) 修改要猜的数字的个数n,根据修改后的n值,计算机可随机生成n个数,用户进行n个数的猜测游戏。 (2) 修改可以尝试的次数。 3. 若游戏胜出且成绩在前五名,可输入并记录对应的用户姓名,并添加到积分榜。...
  • 由于计算机二级编程题并不是很难,所以有的题就没写...并将他们放在a所指的数组中,通过n返回这些数的个数第三题 请编写函数void fun(int x,int pp[],int *n),它的功能是:求出1到1000能整除x且不是偶数的各整数,并按
  • 1.sizeof()操作符以字节形式给出了其操作数的存储大小,要计算字符串数组中元素的个数需要进行简单的四则运算,即sizeof(str)/sizeof(str[0]),strlen()则直接带入参数就行,即strlen(str) 2.sizeof()不会过滤"\0",...
  • 全国高校计算机等级考试(二级C)模拟一试题 一、选择题 1、设有语句:int k, *p; 以下能正确执行的赋值语句是(D )。...A、数组的首地址 B、数组第一个元素的值 C、数组中全部元素的值 D、数组元素的个数
  • (1) 修改要猜的数字的个数n,根据修改后的n值,计算机可随机生成n个数,用户进行n个数的猜测游戏。 (2) 修改可以尝试的次数。 3. 若游戏胜出且成绩在前五名,可输入并记录对应的用户姓名,并添加到积分榜。...
  • 9.第九章 数组.txt

    2019-11-08 16:29:47
    方括号中的常量表达式表示数据元素的个数,也称为数组的长度,数组中每个成员称为数组元素。 对于数组的说明: (1)类型说明符实际上是指数组元素的类型。 (2)数组名实际上就是第一个元素的地址,是一个常量。...
  • C语言例题

    2019-06-17 14:54:23
    C语言例题1.用指针交换两个或三个数的值,按大小顺序输出2.同构数3.判断n的位数,按数的正序和逆序输出4....将数组a的的元素按相反顺序存放212.用指针的方法输出二维数组的值13.编一个函数调用求不能同...
  •  (1)整数n和删除数字的个数“8”在源程序完成赋值,程序直接输出运行结果;  (2)程序结果输出先后被删除的数字(之间以逗号分隔)和删除后所得的最小数。  (提示:整数n可以以字符数组的方式定义、赋值和...
  • 程序设计编写函数fun,其功能是:求出1~1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。注意:部分原程序在文件PROG1.C中。请勿改动主函数main和其它...
  • 本题使用数组来处理,用数组a[100]存放产生的确100个随机整数,数组x[10]来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数。即个位是1的个数存放在x[1],个位是2的个数存放在x[2],……个位是0...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    第1章 声明和初始化 ...6.23 sizeof返回大小是以字节计算的,怎样才能判断数组中有多少个元素呢? 第7章 内存分配 基本内存分配问题 7.1 为什么这段代码不行?char*answer;printf("Typesomething...

空空如也

空空如也

1 2 3 4 5
收藏数 88
精华内容 35
关键字:

c语言计算数组中数的个数

c语言 订阅