精华内容
下载资源
问答
  • 对a数组元素正确引用规则
    千次阅读
    2019-05-29 09:30:06

    引用的数组是不能当函数的参数的。

    数组作为函数形参传递时,实际上是传递了数组首元素指针的一个副本,因为不能用一个数组初始化另外一个数组,所以数组作为形参时,函数是不知道这个数组的元素个数,只知道数组地址。例如void test(int* a),编译器只知道a是指针,不知道a指向多少个元素,甚至根本不知道a是一个数组,如何解决呢,有两种方法:

    第一,增加一个参数表示元素个数,void test(int* a, int n)

    第二,传递数组的引用void test(int (&a)[5]),调用的时候必须要传递一个元素有5个的数组;

    更多相关内容
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼西工大机考《C语言程序设计》网考寻求答案(非免费)找我Q...,以下选项中对a数组元素正确引用的是( )。A.a[2][!1]B.a[2][3]C.a[0][3]D.a[1>2][!1]2. 以下描述错误的是...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    西工大机考《C语言程序设计》网考

    寻求答案(非免费)找我Q和V:2082851315

    试卷总分:100 得分:96

    一、 单选题 (共 35 道试题,共 70 分)

    1. 若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是( )。

    A.a[2][!1]

    B.a[2][3]

    C.a[0][3]

    D.a[1>2][!1]

    2. 以下描述错误的是( )。

    A.break语句不能用于循环语句和switch语句外的任何其他语句

    B.在switch语句中使用break语句或continue语句的作用相同

    C.在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环

    D.在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环

    3. 以下存储类型只有在使用时才为该类型变量分配内存的是( )。

    A.auto和static

    B.auto和register

    C.register和static

    D.static和extern

    4. 若变量已正确定义,有以下程序段

    int a=3,b=5,c=7;

    if(a>b) a=b; c=a;

    if(c!=a) c=b;

    printf("%d,%d,%d\n",a,b,c);

    其输出结果是( )。

    A.程序段有语法错

    B.3,5,3

    C.3,5,5

    D.3,5,7

    5. 函数strlen("1234\0xy")的值为( )。

    A.7

    B.8

    C.4

    D.9

    6. 若二维数组a由m列,则在a[i][j]之前的元素个数为( )。

    A.j*m+i

    B.i*m+j

    C.i*m+j-1

    D.i*m+j+1

    7. 假定x和y为 double型,则表达式x=2,y=x+3/2的值是( )。

    A.3.500000

    B.3

    C.2.000000

    D.3.000000

    8. 设变量已正确定义并赋值,以下正确的表达式是( )。

    A.x=y*5=x+z

    B.int(15.8%5)

    C.x=y+z+5,++y

    D.x=25%5.0

    9. 在C语言中,设一表达式中包含有int,long,char和unsigned类型的变量和数据,则这4种类型数据转换的规则是( )。

    A.int→unsingned→long→char

    B.char→int→long→unsingned

    C.char→int→unsigned→long

    D.int→char→unsigned→long

    10. 若有说明:int *p,m=5,n;,以下正确的程序段是( )。

    A.p=&n;scanf("%d",&p);

    B.p=&n;scanf("%d",*p)

    C.scanf("%d",&n);*p=n;

    D.p=&n;*p=m;

    11. 在C语言中,变量的隐含存储类别是( )。

    A.auto

    B.static

    C.extern

    D.无存储类别

    12. 函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能正确执行此功能的函数是( )。

    A.funa(int *x, int *y)

    { int *p;

    *p=x; *x=*y; *y=*p;

    }

    B.funb(int x, int y)

    { int t;

    t=x; x=y; y=t;

    }

    C.func(int *x, int *y)

    { *x=*y; *y=*x;

    }

    D.{fund(int *x, int *y)

    13. 在C语言中,只有在使用时才占用内存单元的变量,其存储类型是 ( )。

    A.auto和register

    B.extern和register

    C.auto和static

    D.static和register

    14. 以下定义语句中正确的是( )。

    A.int a=b=0;

    B.char A=65+1,b=′b′;

    C.float a=1,*b=&a,*c=&b;

    D.double a=0.0;b=1.1;

    15. 以下描述中正确的是( )。

    A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

    B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号

    C.在do-while循环体中,是先执行一次循环,再进行判断

    D.do-while循环中,根据情况可以省略while

    16. 下面程序的输出结果是( )。

    main()

    {

    int s,k;

    for(s=1,k=2;k<5;k++) s+=k;

    printf("%d\n",s);

    A.1

    B.9

    C.0

    D.15

    17. 以读写方式打开一个已有的文件file1,下面有关fopen函数正确的调用方式为( )。

    A.FILE *fp;fp=fopen("file1";"f");

    B.FILE *fp;fp=fopen("file1","r+");

    C.FILE *fp;fp=fopen("file1","rb");

    D.FILE *fp;fp=fopen("file1","rb+");

    18. 设int a=12,则执行完语句a+=a-=a*a后,a的值是( )。

    A.552

    B.264

    C.144

    D.-264

    19. 阅读下列程序,则运行结果为( )。

    #include "stdio.h"

    fun()

    { static int x=5;

    x++;

    return x;\

    A.5

    B.6

    C.7

    D.8

    20. 运行下面程序:

    main()

    {

    int n1,n2;

    scanf("%d",&n2);

    while(n2!=0)

    \ n1=n2%10;

    n2=n2/10;

    }

    printf("%d",n1);

    }若从键盘上输入298↙ ,则输出结果为( )。

    A.2

    B.29

    C.8

    D.0

    21. C语言规定,在一个源程序中,main函数的位置( )。

    A.必须在最开始

    B.必须在系统调用的库函数的后面

    C.可以任意

    D.必须在最后

    22. 已知double *p[6]; 它的含义是( )。

    A.p是指向double类型变量的指针

    B.p是double类型数组

    C.p是指针数组

    D.p是数组指针

    23. 以下叙述中错误的是( )。

    A.在程序中凡是以"#"开始的语句行都是预处理命令行

    B.预处理命令行的最后不能以分号表示结束

    C.#define MAX 是合法的宏定义命令行

    D.C程序对预处理命令行的处理是在程序执行的过程中进行的

    24. 为了判断两个字符串s1和s2是否相等,应当使用( )。

    A.if(s1==s2)

    B.if(s1=s2)

    C.if(strcpy(s1, s2))

    D.if(strcmp(s1, s2)==0)

    25. 在下列结论中,只有一个是正确的,它是( )。

    A.递归函数中的形式参数是自动变量

    B.递归函数中的形式参数是外部变量

    C.递归函数中的形式参数是静态变量

    D.递归函数中的形式参数可以根据需要自己定义存储类型

    26. 以下不正确的定义语句是( )。

    A.double x[5]={2.0,4.0,6.0,8.0,10.0;

    B.int y[5]={0,1,3,5,7,9;

    C.char c1[]={′1′,′2′,′3′,′4′,′5′;

    D.char c2[]={′\x10′, ′xa′, ′\x8′;

    27. 有以下程序段

    int n=0,p;

    do

    { scanf("%d",&p);n++;

    }while(p!=123&&n<10);

    此处do-while循环的结束条件是( )。

    A.P的值不等于123或者n的值小于10

    B.P的值等于123并且n的值大于等于10

    C.P的值不等于123并且n的值小于10

    D.P的值等于123或者n的值大于等于10

    28. 以下叙述中错误的是( )。

    A.改变函数形参的值,不会改变对应实参的值

    B.函数可以返回地址值

    C.可以给指针变量赋一个整数作为地址值

    D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

    29. 当变量c的值不为2、4、6时,值也为"真"的表达式是( )。

    A.(c==2)︱︱(c==4)︱︱(c==6)

    B.(c>=2&& c<=6)︱︱(c!=3)︱︱(c!=5)

    C.(c>=2&&c<=6)&&!(c%2)

    D.(c>=2&& c<=6)&&(c%2!=1)

    30. 运行程序:

    #include

    main()

    {

    int n='c';

    switch(n++)

    { default: printf("error");break;

    case 'a':case 'A':case 'b':case 'B':printf("good");break;

    case 'c':case 'C':printf("pass");

    case 'd':case 'D':printf("warn");

    }

    }则输出结果是( )。

    A.good

    B.pass

    C.warn

    D.passwarn

    31. 设有 int x=8; 则表达式 (++x*1/3) 的值是( )。

    A.2

    B.3

    C.2.6

    D.0

    32. 下面程序的输出结果是( )。

    main()

    { int x=5,y=9,z=1,t;

    t=(x>y||x>z);

    printf("%d\n",t);

    A.1

    B.0

    C.5

    D.3

    33. 有以下程序

    #include

    main()

    { int x=1,y=0,a=0,b=0;

    switch(x)

    { case 1:

    switch(y)

    { case 0:a++; break;

    case 1:b++; break;

    }

    case 2:a++; b++; break;

    case 3:a++; b++;

    }

    printf("a=%d,b=%d\n",a,b);

    }

    A.a=1,b=0

    B.a=2,b=2

    C.a=1,b=1

    D.a=2,b=1

    34. 一个C程序的执行是从( )。

    A.本程序的main函数开始,到main函数结束

    B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

    C.本程序的main函数开始,到本程序文件的最后一个函数结束

    D.本程序文件的第一个函数开始,到本程序main函数结束

    35. 有以下程序

    main()

    { int i,s=1;

    for (i=1;i<50;i++)

    if(!(i%5)&&!(i%3)) s+=i;

    printf("%d\n",s);

    A.409

    B.277

    C.1

    D.91

    二、 判断题 (共 15 道试题,共 30 分)

    1. C语言的编译系统对宏命令的处理是和c程序中的其他语句同时进行编译的。

    A.错误

    B.正确

    2. 设变量 a 为整型,f 是实型,i 是双精度型,则表达式10+'a'+i * f 值的数据类型不能确定为何类型。

    A.错误

    B.正确

    3. (a=3)>(b=5) 是合法的关系表达式。

    A.错误

    B.正确

    4. 预处理指令只能位于C源程序文件的首部。

    A.错误

    B.正确

    5. 在c程序中,语句之间必须要用分号";"来分隔。

    A.错误

    B.正确

    6. for循环是先执行循环体语句,后判断表达式。

    A.错误

    B.正确

    7. 在C语言中char型数据在内存中的存储形式为ASCII码。

    A.错误

    B.正确

    8. 声明语句可放在函数体中的任何位置。

    A.错误

    B.正确

    9. 在C程序中,%是只能用于整数运算的运算符。

    A.错误

    B.正确

    10. 设int a=12;则执行完语句a+=a-=a*a后,a的值为144。

    A.错误

    B.正确

    11. 两个字符串所包含的字符个数相同时才能比较字符串大小。

    A.错误

    B.正确

    12. %x是格式符的一种,它可以适用于任何一种类型的数据。

    A.错误

    B.正确

    13. 若a和b类型相同,在执行了语句a=b后,b中的值将放入a中,b中的值不变。

    A.错误

    B.正确

    14. 用typedef可以定义各种类型名,但不能用来定义变量。

    A.错误

    B.正确

    15. C语言认为变量number和NuMbEr是相同的。

    A.错误

    B.正确

    展开全文
  • 引用数组元素的四种方式

    千次阅读 2020-02-29 23:10:58
    #include<stdio.h> int main() ... int a[] = { 1,2,3,4,5}; int *p; int i; for (i = 0; i < 5; i++) { printf("%d\n",a[i]); } printf("-----------------\n"); for (i =...
    #include<stdio.h>
    int main()
    {
     
       int a[] = { 1,2,3,4,5};
       int *p;
       int i;
    
       for (i = 0; i < 5; i++)
       {
    	   printf("%d\n",a[i]);
       }
    
       printf("-----------------\n");
    
       for (i = 0; i < 5; i++)
       {
    	   printf("%d\n", *(a+i));
       }
    
       printf("-----------------\n");
    
       for (p=a; p < a+5; p++)//注意a++是不可的,因为a本来就代表了数组的首地址,a是不可改变的。
       {
    	   printf("%d\n", *p);
       }
    
       printf("-----------------\n");
    
       for (p=a,i = 0; i < 5; i++)
       {
    	   printf("%d\n",p[i]);//p[i]相当于*(a+1)
       }
    
       getchar();
       return 0;
    }
    
    展开全文
  • C语言-数组的定义和引用

    千次阅读 2021-12-10 10:48:29
    引用方式:二维数组二维数组引用表现形式:引用四种方法二维数组初始化2.一维数组的应用(如排序),二维数组的应用(如矩阵运算)3.数组作函数参数4.字符数组的定义、初始化和输入输出方法5.字符串与字符串...

    1. 一维数组、二维数组的定义、初始化和引用方法

    数组数据的特点:

    1. 具有相同的数据类型
    2. 使用过程中需要保留原始数据

    数组:

    是一种具有相同数据类型的数据的有序集合

    一般形式:类型说明符 数组名[常量表达式];

    例如:int a[10]; 元素为a[0]----a[9]、2、常量表达式中不允许包含变量,可以包含常量或符号常量。

    说明:

    1. 数组名定义规则和变量名相同,遵循标识符定名规则
    2. 在定义数组时,需要指定数组中的元素个数,方括号中的常量表达式用来表示元素的个数,即数组长度。从下标0开始
    3. 常量表达式中可以包括常量和符号常量,但不能包括变量。也就是说C语言不允许对数组的大小作动态定义,即数组的大小不依赖与程序运行过程中变量的值。
    4. 数组元素下标可以是任何整型常量、整型变量或任何整型表达式。
    5. 使用数值型数组时,不可以一次引用整个数组,只能逐个引用元素
    6. 需要整体赋值时只可以在定义的同时整体赋值。

    int a[10]={0,1,2,3,4,5,6,7,8,9};正确。i nt a[10];a[10]={0,1,2,3,4,5,6,7,8,9};错误。

    1. 可以只给一部分元素赋值。

    例如:int a[10]={5,8,7,6};后面没有赋值的元素值默认为0

    1. 对全部数组元素赋值时可以不指定数组长度,
      例如:

    int a[10]={0,1,2,3,4,5,6,7,8,9};可以写成 int a[]={0,1,2,3,4,5,6,7,8,9};
    但是,既不赋初值,也不指定长度是错误的。例如:int a[];错误。

    在这里插入图片描述
    在这里插入图片描述

    一维数组的引用

    1. 引用方式:

    数组名[下标]
    下标可以是整型常量或整型表达式。
    例如:a[0]=a[5]+a[7]-a[2*3]

    在这里插入图片描述
    例子:

    #include <stdio.h>
    
    int main()
    {
        int i, a[10];
        for (i = 0; i <= 9; i++)
            a[i] = i;
        for (i = 9; i >= 0; i--)
            printf("%d", a[i]);
        printf("\n");
    }
    

    在这里插入图片描述
    2. 对数组元素初始化的实现方法
    在定义数组时对数组元素赋以初值。
    例如:int a[10]={0,1,2,3,4,5,6,7,8,9};
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    二维数组

    一般形式:类型说明符 数组名[常量表达式1][常量表达式2];例如:
    int a[3][4];可以看成是包含3个一维数组,每个一维数组里包含4个元素。一共3*4=12个元素。
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    二维数组引用

    表现形式:

    数组名 [下标] [下标]
    

    例如 a[2][3]
    在这里插入图片描述

    引用

    数据类型

    数组名 [常量表达式1][常量表达式2]={初始化数据}

    二维数组的定义

    二维数组中的元素在内存中的排序顺序是:按行存放,即先顺序存放第一行的元素,在存放第二行的元素

    在这里插入图片描述

    四种方法对二维数组初始化

    1. 分行给二维数组赋初值:
    int a [3] [4] ={{1,23,4}{5,67,8}{9,10,11,12}}
    1. 可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值
    int a [3][4] ={1,2,3,4,5,6,7,8,9,10,11,12}
    
    1. 可以对部分元素赋初值
    int a [3] [4] ={{1},{5},{9}}
    
    1. 如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。

    2.一维数组的应用(如排序),二维数组的应用(如矩阵运算)

    用冒泡法对两个数比较,将最小的掉在前头

    #include <stdio.h>
    
    int main()
    {
        int a[10];
        int i, j, t;
        printf("input 10 numbera:\n ");
        for (i = 0; i < 10; i++)
            scanf("%d", &a[i]);
        printf("\n ");
        for (j = 0; j < 9; j++)
            for (i = 0; i < 9 - j; i++)
            {
                if (a[i] > a[i + 1])
                {
                    t = a[i];
                    a[i] = a[i + 1];
                    a[i + 1] = t;
                }
            }
        printf("the sorted numbers:");
        printf("\n ");
        for (i = 0; i < 10; i++)
        {
            printf("%d  ", a[i]);
        }
    }
    

    在这里插入图片描述

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

    #include <stdio.h>
    
    int main()
    {
        int i, j, row = 0, colum = 0, max;
        int a[3][4] = {{1, 2, 3, 4}, {9, 8, 7, 6}, {-10, -10, -5, 2}};
        max = a[0][0];
        for (i = 0; i <= 2; i++)
            for (j = 0; j <= 3; j++)
                if (a[i][j] > max)
                {
                    max = a[i][j];
                    row = i;
                    colum = j;
                }
        printf("max=%d,row=%d,colum=%d\n", max, row, colum);
    }
    

    3.数组作函数参数

    数组作函数参数

    4.字符数组的定义、初始化和输入输出方法

    字符数组的定义

    用来存放字符数据的数组称为字符数组。字符数组中的一个元素存放一个字符。定义字符数组的方法与定义数值型数组的方法类似。

    其定义的一般形式是:char 数组名[数据长度]
    例如:
    char c[10];
    c[0]=‘I’; c[1]=’ ‘; c[2]=‘l’; c[3]=‘o’; c[4]=‘v’; c[5]=‘e’; c[6]=’ '; c[7]=‘y’; c[8]=‘o’; c[9]=‘u’;

    以上定义了c为字符数组,包含10个元素。
    由于字符型数据是以整数形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据,例如:
    int c[10];
    但这时每个数组元素占2个字节的内存单元,浪费存储空间。 [1]
    字符数组也可以是二维或多维数组,例如:
    char c[5][10];
    即为二维字符数组。

    字符数组的初始化

    字符数组的初始化与数值型数组初始化没有本质区别。但它除了可以逐个给数组元素赋予字符外,也可以直接用字符串对其初始化。
    在这里插入图片描述

    1. (1)用字符常量逐个初始化数组。例如:
      char a[8]={‘i’,‘l’,‘o’,‘v’,‘e’,‘y’,‘o’,‘u’};
      把8个字符依次分别赋给c[0]~c[7]这8个元素。

    如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即’\0’)。如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度

    。例如:

    char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m'}

    这时c数组的长度自动定为9。
    也可以定义和初始化一个二维字符数组,例如:
    char diamond[5][5]={{’ ‘,’ ‘,’#’},{’ ‘,’#’,’ ‘,’#’},
    {’#’,’ ‘,’ ‘,’ ‘,’#’},{’ ‘,’#’,’ ‘,’#’},{’ ‘,’ ‘,’#’}};用它代表一个菱形的平面图形。
    2. (2)字符串常量初始化数组。例如:

    char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m'}

    可写为:

    char c[ ]={"C program"};
    

    或去掉{}写为:

    char c[ ]="C program";
    

    注意:此时数组c的长度不是9,而是10。因为字符串常量的最后由系统加上一个’\0’。上面的初始化与下面的初始化等价。

    char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m','\0'}[1] 
    

    元素的引用

    可以通过引用字符数组中的一个元素,得到一个字符。
    数组的引用形式为:
    数组名[下标]

    【例5-8】输入“I like playing basketball”并显示出来。

    #include<stdio.h>
    int main(void)
    {
    char a[26]="I like playing basketball";
    int i;
    for(i=0;i<26;i++)
    printf("%c",a[i]);
    }
    

    运行结果为:I like playing basketball [2]

    结束标志

    字符串和字符串结束标志

    在C语言中,是将字符串作为字符数组来处理的。为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符’\0’作为结束标志 [1] 。

    输入输出

    1. 字符数组的输入:

    (1)用getchar()或scanf()的’%c’格式符对数组进行字符赋值。例如,对于数组a[10]:用getchar()赋值:for(i=0;i<10;i++)a[i]=getchar();用scanf()赋值:for(i=0;i<10;i++)scanf("%c",&a[i]);

    (2)用scanf()的’%s’格式对数组赋值。还是对于数组a[10]:scanf("%s",a);或scanf("%s“,&a[0]);输入”C
    program“并回车时,a数组会自动包含一个以”\0“结尾的字符串”C program“。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    1. 字符数组的输出

    (1)用putchar()或printf()的‘%c’格式符对数组进行字符赋值。例如,对于数组a[10]:用putchar()赋值:for(i=0;i<10;i++)a[i]=putchar();用printf()赋值:for(i=0;i<10;i++)printf("%c",a[i]);输出结果为:c program

    (2)用printf()的’%s’格式对数组赋值。还是对于数组a[10];printf("%s",a);输出结果为:c program

    应用举例

    #include <stdio.h>
    int main()
    {
        char string[81];
        int i, num = 0, word = 0;
        char c;
        gets(string);
        for (i = 0; (c = string[i]) != '\0'; i++)
            if (c == ' ')
                word = 0;
            else if (word == 0)
            {
                word = 1;
                num++;
            }
        printf("There are %d words in this line.\n", num);
    }
    

    5.字符串处理函数的使用

    puts函数

    C 库函数 int puts(const char *str) 把一个字符串写入到标准输出stdout,直到空字符,但不包括空字符。换行符会被追加到输出中。

    int puts(const char *str)
    

    实例:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
       char str1[15];
       char str2[15];
    
       strcpy(str1, "RUNOOB1");
       strcpy(str2, "RUNOOB2");
    
       puts(str1);
       puts(str2);
       
       return(0);
    }
    

    gets函数

    C 库函数 char *gets(char *str) 从标准输入 stdin 读取一行,并把它存储在 str所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

    char *gets(char *str)
    

    str – 这是指向一个字符数组的指针,该数组存储了 C 字符串

    实例:

    #include <stdio.h>
    
    int main()
    {
       char str[50];
    
       printf("请输入一个字符串:");
       gets(str);
    
       printf("您输入的字符串是:%s", str);
    
       return(0);
    }
    

    strcat函数

    C 库函数 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest所指向的字符串的结尾。

    char *strcat(char *dest, const char *src)
    

    dest – 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。
    src – 指向要追加的字符串,该字符串不会覆盖目标字符串。

    #include <stdio.h>
    #include <string.h>
     
    int main ()
    {
       char src[50], dest[50];
     
       strcpy(src,  "This is source");
       strcpy(dest, "This is destination");
     
       strcat(dest, src);
     
       printf("最终的目标字符串: |%s|", dest);
       
       return(0);
    }
    

    strcpy函数

    char *strcpy(char *dest, const char *src)
    

    dest – 指向用于存储复制内容的目标数组。
    src – 要复制的字符串。

    char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。

    需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况

    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
       char src[40];
       char dest[100];
      
       memset(dest, '\0', sizeof(dest));
       strcpy(src, "This is runoob.com");
       strcpy(dest, src);
     
       printf("最终的目标字符串: %s\n", dest);
       
       return(0);
    }
    

    strcmp函数

    strcmp compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。

    #include <stdio.h>
    #include <string.h>
     
    int main ()
    {
       char str1[15];
       char str2[15];
       int ret;
     
     
       strcpy(str1, "abcdef");
       strcpy(str2, "ABCDEF");
     
       ret = strcmp(str1, str2);
     
       if(ret < 0)
       {
          printf("str1 小于 str2");
       }
       else if(ret > 0) 
       {
          printf("str1 大于 str2");
       }
       else 
       {
          printf("str1 等于 str2");
       }
       
       return(0);
    }
    

    特别注意:strcmp(const char *s1,const char * s2) 这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。

    ANSI 标准规定,返回值为正数,负数,0 。而确切数值是依赖不同的C实现的。

    当两个字符串不相等时,C 标准没有规定返回值会是 1 或 -1,只规定了正数和负数。

    有些会把两个字符的 ASCII 码之差作为比较结果由函数值返回。但无论如何不能以此条依据作为程序中的流程逻辑

    strlen函数

    计算字符串 str 的长度,直到空结束字符,但不包括空结束字符

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        char str[50];
        int len;
    
        strcpy(str, "This is runoob.com");
    
        len = strlen(str);
        printf("|%s| 的长度是 |%d|\n", str, len);
    
        return (0);
    }
    

    strlwr函数

    strlwr(string)函数返回给定字符串的小写形式。

    #include<stdio.h>  
    
    int main() {
        char str[20];
    
        printf("Enter string: ");
        gets(str);//reads string from console  
        printf("String is: %s", str);
        printf("
    Lower String is: %s", strlwr(str));
    
    }
    

    strupr函数

    strupr(string)函数返回给定字符串的大写形式

    #include<stdio.h>  
    
    int  main() {
        char str[20];
    
        printf("Enter string: ");
        gets(str);//reads string from console  
        printf("String is: %s",str);  
        printf("\nUpper String is: %s \n",strupr(str));  
    }
    
    展开全文
  • 多维数组的定义、初始化、引用

    千次阅读 2022-04-23 17:48:03
    二维:数组内每个元素都是一维数组。 多维类似…… 一、定义 C++允许定义多维数组,其定义形式为: 元素类型 数组名 [常量表达式1][常量表达式2] …[常量表达式n] int A[3][4]; //定义二维数组 int B[3][4][5];...
  • 一维数组的定义、初始化和引用

    千次阅读 2021-05-19 08:32:45
    一维数组的定义、初始化和引用一维数组...(3)常量表达式表示数组元素的个数,即数组的长度,数组的下标从0开始,下标的最大值为:常量表达式-1;(4)常量表达式中可以包括常量和符号常量,不能包括变量。可以用赋值语句...
  • JAVA中对数组的理解及数组经典例题详解

    千次阅读 多人点赞 2021-10-25 17:40:14
    遍历数组2.1使用for循环2.2使用for each循环2.3Arrays类的toString 方法三、数组作为方法的参数3.1打印数组的内容3.2理解引用类型3.3认识null3.4 初识 JVM 内存区域划分四、数组作为方法的返回值五、数组练习5.1 ...
  • C语言学习——数组详解

    千次阅读 2020-04-23 15:09:22
    数组中顺序存放了一批相同数据类型的数据,这些数据不仅数据类型相同,而且在计算机内存里连续存放,地址编号最低的存储单元存放数组的起始元素,地址编号最高的存储单元存放数组的最后一个元素。通过数...
  • 数组的声明和使用

    千次阅读 2021-06-12 23:06:47
    数组元素用数组名加带方括号的下标表示,比如,a[2]。数组元素具有相同的类型,可以是除void之外的任意一种类型。 数组的声明 数组跟结构体、类等一样也是自定义数据类型,所以使用以前也需要先进行声明。 声明数组...
  • 引用类型——Java数组

    千次阅读 2016-05-10 15:49:32
    数组: 一组相关数据的集合,实际上就是一连串的变量,可以分为:一维数组、二维数组、多维数组 默认值为null,暂时还没有任何指向的内存...所谓初始化,就是为数组的数组元素分配内存空间,并为每个数组元素赋初始值。
  • 数组用来表示一组数据的集合。使用数组,可以方便地定义一个名字(数组名)来表示大批量数据,并能够通过循环批处理大量...(1)一维数组是由元素类型、数组名和长度(数组包含的元素个数)组成的构造类型。 in...
  • C语言数组考点归纳

    2021-05-22 16:45:30
    下面是小编为大家收集的C语言数组考点归纳,欢迎借鉴学习!9.1 一维数组的定义、初始化和引用1....***3***常量表达式表示数组元素的个数,即数组的长度,数组的下标从0开始,下标的最大值为:常量表达式-1;***4***...
  • Java的数组要求所有的数组元素具有相同的数据类型,换句话说一个数组里只能存储一种数据类型的数据 一旦数组的的初始化完成,数组在内存中所占的空间将被固定下来,因此数组的长度将不可改变,即使把某个数组元素的...
  • 上述代码 int 表示数组元素的类型,array 是数组的名称,5是指数组的长度。 数组占据的内存空间是连续的,所以很容易计算出数组占据的内存大小( 数组长度*sizeof(数据类型))和每个元素所..
  • 怎样在c语言中比较一个数组元素的大小?,c语言数组的定义怎样在c语言中比较一个数组元素的大小?,c语言数组的定义 有学霸在吗,能不能帮忙回复一下这个问题,谢谢啊,快快快相关问题:匿名网友:main() {int a[10]...
  • 二维数组a[ ][ ]和(*p)[4]

    千次阅读 2020-11-25 01:00:30
    从前有座山,山里有这么一个二维数组:int a[3][4] 然后我们看这个二维数组,这里很明显可以有一个问题,就是a,*a,&a等等是什么类型?它们有什么区别吗? 具体可以直接看下面的表格,左列为变量名,右列为该变量...
  • 一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或构造类型。所谓构造类型,即指由若干基本类型数据按一定的规则所构成的复杂数据类型。,,6.1一维数组,1.一维数组的定义在C语言中使用数组必须先...
  • java定义int数组

    千次阅读 2021-04-17 02:40:17
    java int 动态数组,java对象数组详解,javaint数组,java定义int数组java 动态int数组,java对象数组详解,javaint数组,java定义int数组二维数组、多维数组 数据的有点 不使用数组定义 100 个整形变量:int i1;...
  • java数组:一维数组

    2021-02-09 14:46:58
    3、一维数组中的元素访问4、 一维数组的遍历5、静态存储Object类6、动态初始化一维数组7、什么时候采用静态初始化方法/动态初始化方法? 数组:Array 1、数组相关基础知识 1、Java语言中的数组是一种引用数据类型...
  • from numpy\core\fromnumeric.py def sum(a, axis=None, dtype=None, out=None, keepdims=np._NoValue, initial=np._NoValue): ... 给定轴上的数组元素的总和。 Parameters ---------- a : array_like Elements
  • 1、数组的定义 1.1 什么是数组 1.2 数组定义格式 1.3 静态化初始化数组 1.4 数组动态初始化 2、数组的遍历 3、数组的案例 4、数组的内存图 4.1 内存概述 4.2 java中的内存分配 5、数组使用的常见问题 5.1 索引越界...
  • C++刷题——数组

    2021-10-04 22:52:52
    ,下列对数组元素引用正确的为?4、下列程序段错误的是?5、下列说法正确的是?6、运行下列程序结果为?7、请编写程序实现:检查字符串 s 中是否包含字符串 t ,若包含,则返回并输出 t 在 s 中的开始位置(下标值...
  • 数组作业及答案

    千次阅读 2019-04-24 10:21:08
    1.数组会在内存中开辟一块________的空间,每个空间相当于之前的一个变量,称为数组元素数组的长度一经确定,就无法再改变。 2.要获取一个数组的长度,可以通过________属性来获取,但获取的只是为数组分配的...
  • 1008. 数组元素循环右移问题 (20)

    千次阅读 2014-07-09 15:51:50
    一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0A1……AN-1)变换为(AN-M …… AN-1 A0 A1……AN-M-1)(最后M个数循环移至最前面的M...
  • 数组结构体总结

    2021-05-22 10:58:15
    数组定义:数组是有序的并且具有相同类型的数据的集合。一维数组1、一般形式:类型说明符数组...4、可以对数组元素赋值,数组元素也可以参与运算,与简单变量一样使用。5、使用数值型数组时,不可以一次引用整个数组...
  • 二维数组定义

    千次阅读 2022-03-18 13:35:15
    二维数组
  • C语言中数组

    2021-12-09 10:32:25
    在C语言中,数组属于构造性数据类型,一个数组可以分解为多个数组元素,这些数组可以是基本数据类型或是构造类型,因此按数组元素的类型不同,数组又可以分成数值数组,字符数组,指针数组,结构数组等各种类别。...
  • 5、数组作业

    千次阅读 2020-12-09 13:20:26
    数组作业 一、填空题 1.数组会在内存中开辟一块________的空间,每个空间相当于之前的一个变量,称为数组的...4.创建数组后,系统会给每一个数组元素一个默认的值,如String类型元素的默认值是 __。 5.在Java中有二维
  • java给数组赋值

    千次阅读 2021-03-23 20:12:06
    java 动态数组赋值,java对象数组详解,java二维数组赋值,java给数组赋值java数组动态赋值,从零学java笔录-第24篇 图解一维数组在内存中,java二维数组赋值,java给数组赋值java 数组动态赋值,从零学java笔录-第24篇 ...
  • 专项练习数组 (2)

    千次阅读 2020-02-28 20:10:26
    1.有两个N*N的矩阵A和B,想要在PC上按矩阵乘法基本算法编程实现计算A*B。假设N较大,本机内存也很大,可以存下A、B和结果矩阵。那么,为了计算速度,A和B在内存中应该如何存储(按行存指先存储第一行,再第二行,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 77,936
精华内容 31,174
热门标签
关键字:

对a数组元素正确引用规则