向函数传递字符串,既可以用字符数组做函数参数,也可以用字符指针做函数参数,这两种方式都是传引用调用,就是将字符串的首地址、而非字符串中的全部字符传给形参。

题目

向函数传递字符串,既可以用字符数组做函数参数,也可以用字符指针做函数参数,这两种方式都是传引用调用,就是将字符串的首地址、而非字符串中的全部字符传给形参。


相似考题
参考答案和解析
C
更多“向函数传递字符串,既可以用字符数组做函数参数,也可以用字符指针做函数参数,这两种方式都是传引用调用,就是将字符串的首地址、而非字符串中的全部字符传给形参。”相关问题
  • 第1题:

    以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如,str所指字符串为Hello!,c中的字符为e,则函数返回字符串ello!的首地址。若str所指字符串为空或不包含c中的字符,则函数返回NULL,请填空。char *fun(char *str,char c){ int n=0; char *p=str; if(p!=NULL) while(p[n]!=c&&p[n]!=’\0’) n++; if(p[n]==’\0’) return NULL; return();}


    正确答案:p+n
    在本题中,函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址。
    在本题的程序中,fun函数带有两个形参,其中一个是指针str,它指向字符串的首地址,另一个是字符变量c。程序首先定义了一个整型变量n,从程序中可知,它是字符串str中参数c相对于首地址的偏移量,然后定义了一个指针变量p,指向字符串str的首地址,然后执行条件语句,如果字符串不为空,则执行循环语句,循环结束的条件是要么字符串结束,要么找到形参c中对应的字符。根据循环结束的条件我们可以判断,其非死循环,循环结束后,从程序中可以看出,判断循环结束的原因是否因为字符串结束而结束的,如果是,说明没找到形参c中对应的字符,返回NULL。
    如果不是,则说明是因为找到了形参c中对应的字符而结束循环的。根据题目要求,需要返回以形参c中字符开头的后续字符串的首地址,而这时以形参c中字符开头的后续字符串的首地址为p+n。

  • 第2题:

    下列函数的功能是( )。 A.将a所指字符串赋给b所指空间B.使指针b指向a所指字符串SXB

    下列函数的功能是( )。

    A.将a所指字符串赋给b所指空间

    B.使指针b指向a所指字符串

    C.将a所指字符串和b所指字符串进行比较

    D.检查a和b所指字符串中是否有’\0


    正确答案:A
    表达式*b=*a是将a所指的字符赋给b所指的空间,然后,指针a和b依次后移,直到到达指针a所指字符串的结尾。

  • 第3题:

    规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的。号之外,将串中其他*号全部删除。在编写函数时.不得使用C语言提供的字符串函数.


    正确答案:
    程序设计题解析:【考点分析】本题考查:指针型变最定义;wh丑e循环语句;语句条件表达式;字符串结束标识‘\0’。【解题思路】函数fun的功能:除了字符串前导的*号之外,将串中其他+号全部删除。【解答本题】(1)定义一个临时指针P,初始指向原串首地址;(2)利用循环语句把字符串前导*号拷贝到原串;(3)继续移动指针,把串中和串尾的非*号字符拷贝到原串;(4)为修改后的字符串赋结束字符‘、O’。【解题宝典】要删除字符串中的指定字符,我们通常采用保留非指定字符的方法。可以将非指定字符保留在原串,即将需要保留的字符从原串的起始位置重新赋值;也可以保留到新串,即新建一个字符串,存放要保留的字符。

  • 第4题:

    下列给定程序中,函数proc()的功能是:将字符串str中的所有字符复制到字符串b中,要求在每复制3个字符之后插入1个空格。例如,在调用proc()函数之前给字符

    串str输入abcdefghijk,调用函数之后,字符串b中的内容则为abc def ghijk。

    请修改程序中的错误,使它能得出正确的结果。

    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

    试题程序:


    正确答案:

  • 第5题:

    以下程序中函数sCmp的功能是返回形参指针sl和s2所指字符串中较小字符串的首地址。若运行时依次输入:abCd、abba和abC三个字符串,则输出结果是( )。

    A.abCd

    B.abba

    C.abC

    D.abCa


    正确答案:B
    main函数将输入的三个字符串存在二维数组str中,并通过两次streW函数调用,将最小的一个字符串复制到string中。abcd、abba、abc中最小的字符串为abba。

  • 第6题:

    若给fun函数的形参S传送字符串:”abe.6354abc”,则函数的返回值是_________。(字符串中包括空格)


    正确答案:

  • 第7题:

    当使用getChars()时,正确的表述是()

    • A、该函数用于字符数组转换成字符串
    • B、该函数不需要任何参数
    • C、该函数用于float或double转换成字符数组
    • D、该函数用于从字符串转换成字符数组

    正确答案:D

  • 第8题:

    请把下面说法中正确的选出来()。

    • A、在函数调用过程中数值型函数的默认返回值为0,可变型函数的默认返回值为空串
    • B、在调用Sub过程中使用Call语句时,参数必须在括号内
    • C、过程本身使用的参数列表称为“形参”,而主程序传递给过程的真正参数称为“实参”
    • D、DIM语句声明的数组把数值数组中的全部数组元素都初始化为0,把字符串数组中的全部元素都初始化为空字符串

    正确答案:B,C,D

  • 第9题:

    单选题
    以下对C语言字符数组描述中,正确的是()
    A

    可以用length函数计算字符数组中字符串的长度

    B

    可以在赋值语句中通过赋值运算符=对字符数组整体赋值

    C

    存放在字符数组中的字符串,以’/0’作为该字符串结束标志

    D

    字符数组只能存放字符串,不能存放字符


    正确答案: D
    解析: 在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。字符串常量总是以'/0'作为字符串的结束符。

  • 第10题:

    单选题
    数据结构里,关于字符串函数strcmp()描述错误的是()。
    A

    函数功能是比较两个字符串的大小。

    B

    字符串1等于字符串2,函数返回值等于true

    C

    字符串1大于字符串2,函数返回值是1。

    D

    字符串1小于字符串2,函数返回值是-1。


    正确答案: D
    解析: 暂无解析

  • 第11题:

    多选题
    C语言中字符串处理函数描述正确的是()
    A

    strcmp是字符串比较函数

    B

    strcat是字符串连接函数

    C

    strlen是求字符串的长度的函数

    D

    strcpy是字符串拷贝函数


    正确答案: D,B
    解析: 暂无解析

  • 第12题:

    多选题
    如何将字符串转换为数值?()
    A

    先用数值的valueOf函数将字符串转换为数值类对象,再利用该对象的intValue或doubleValue等函数将数值类对象转换为数值

    B

    利用数值类的parseInt,parseDouble等函数将字符串直接转换为数值

    C

    利用数值类的静态函数valueOf将字符串转换为数值

    D

    利用数值类的静态函数intValue将字符串转换为数值

    E

    利用字符串对象的toString函数将字符串转换为数值


    正确答案: E,C
    解析: 暂无解析

  • 第13题:

    已知strcpy 的函数原型:char *strcpy(char

    *strDest, const char *strSrc)其中strDest 是目的字符

    串,strSrc 是源字符串。不调用C++/C 的字符串库

    函数,请编写函数strcpy。


    正确答案:

     

    char *strcpy(char *strDest, const char *strSrc)
    {
    if ( strDest == NULL || strSrc == NULL)
    return NULL ;
    if ( strDest == strSrc)
    return strDest ;
    char *tempptr = strDest ;
    while( (*strDest++ = *strSrc++) != ‘\0’)
    ;
    return tempptr ;
    }

  • 第14题:

    下列给定程序中,函数fun的功能是:从形参SS所指字符串数组中,删除所有串长超过k的字符串,函数 返回剩余字符串的个数。ss所指字符串数组中共有N个字符串,且串长小于M。

    请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序在文件BLANKl.C中。

    不得增行或删行.也不得更改程序的结构!


    正确答案:
    (1)N(2)k(3)ss[i]【考点分析】本题考查:for循环语句;ff语句条件表达式;字符串拷贝函数strcpy的使用。【解题思路】填空1:for循环语句作用是遍历字符串数组中的每一个字符串,所以循环变量i的循环条件是i<N。填空2:题目要求删除串长度小于k的字符串,所以if条件语句的条件表达式是len<=k。。填空3:通过字符串拷贝函数将串长不大于k的字符串另存,并记录个数。【解题宝典】字符串拷贝函数strcpy,其格式为:strcpy(字符数组名1,字符数组名2)功能:把字符数组2中的字符串拷贝到字符数组l中。字符串结束标识‘、0’也一同拷贝。字符数名2,也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。

  • 第15题:

    函数readDat是从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort,其函数的功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat把结果xx输出到文件out.dat中。 条件:字符串从中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。注意:部分源程序存在test.c文件中。 请勿改动数据文件in.dat中的任何数据、主函数main、读函数readDat和写函数writeDat的内容。


    正确答案:
    【审题关键句】以行为单位从字符串左边部分降序排序,右边部分升序排序。如果原字符串长度为奇数,则最中间的字符不参加处理。
    【解题思路】
    ①定义字符局部变量ch,整型循环变量i、j、k和表示字符串长度的变量len、P。
    ②在第一层for循环中,变量i从0开始,依次递增直到其值等于20,在循环体中,首先调用库函数strlen(xx[i])求得字符串xx[il的长度,把此值转化成整型赋给变量len,用len的值除以2,得到字符串xx[i]的长度的一半赋给变量P;在第二层for循环中,变量j从0开始,依次递增直到其值等于(p-1),在循环体中执行第三层for循环,循环变量k从j+1开始,依次递增直到其值等于P,对字符串xx[i]左半部分的子字符串中的字符xx[i][j]和xx[i][k]按照ASCII码值的大小进行比较,如果xx[i][j]的ASCII码值小于xx[i][k]的ASCII码值,则两者进行互换,实现对字符串xx[i]左半部分的子字符串按照降序排列。然后,有if条件语句判断,len对2的余数是否等于1,如果等于1,说明字符串xx[i]的长度为奇数,则变量P加1,因为这时字符串的中间字符不参与排序。再对字符串xx[i][j]右半部分的字符串按升序排列。在for循环中,变量j从P开始,依次递增直到其值等于len-1,在循环体中,执行for循环中,变量k从j+1开始,依次递增直到其值等于Ien,对字符xx[i][j]和xx[i][k]按其ASCII码值的大小进行比较,如果字符xx[i][j]的ASCII码值大于xx[i][k]的ASCII码值,则两者进行互换,实现字符串xx[i]右半部分的字符串按照升序排列。
    【参考答案】

  • 第16题:

    假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参P已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。 例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容应当是abcdefg****。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。 试题程序:


    正确答案:

    题目中要求除了尾部的*号之外,将字符串中其他*号全部删除。首先将所有不是*的字符放在字符串str中,然后将尾部的*接在字符的后面,最后为字符串str加上结束符。

  • 第17题:

    fprintf函数的一般调用方式是( )

    A.fprintf(格式字符串,文件指针,输出表列);

    B.fprintf(文件指针,格式字符串,输出表列)

    C.fprintf(文件指针,格式字符串,输出表列);

    D.fprintf(fp,格式字符串,输出表列);


    正确答案:C

  • 第18题:

    fprintf函数的正确调用形式是()

    • A、fprintf(文件指针,格式字符串,输出表列)
    • B、fprintf(文件指针,格式字符串,输入表列)
    • C、fprintf(格式字符串,输出表列,文件指针)
    • D、fprintf(格式字符串,输入表列,文件指针

    正确答案:A

  • 第19题:

    数据结构里,关于字符串函数strcmp()描述错误的是()。

    • A、函数功能是比较两个字符串的大小。
    • B、字符串1等于字符串2,函数返回值等于true
    • C、字符串1大于字符串2,函数返回值是1。
    • D、字符串1小于字符串2,函数返回值是-1。

    正确答案:B

  • 第20题:

    多选题
    请把下面说法中正确的选出来()。
    A

    在函数调用过程中数值型函数的默认返回值为0,可变型函数的默认返回值为空串

    B

    在调用Sub过程中使用Call语句时,参数必须在括号内

    C

    过程本身使用的参数列表称为“形参”,而主程序传递给过程的真正参数称为“实参”

    D

    DIM语句声明的数组把数值数组中的全部数组元素都初始化为0,把字符串数组中的全部元素都初始化为空字符串


    正确答案: D,B
    解析: 暂无解析

  • 第21题:

    单选题
    fscanf函数的正确调用形式是()。
    A

    fscanf(文件指针,格式字符串,输出列表);

    B

    fscanf(格式字符串,输出列表, 文件指针);

    C

    fscanf(格式字符串,文件指针,输出列表);

    D

    fscanf(文件指针,格式字符串,输入列表);


    正确答案: A
    解析: 暂无解析

  • 第22题:

    单选题
    当使用getChars()时,正确的表述是()
    A

    该函数用于字符数组转换成字符串

    B

    该函数不需要任何参数

    C

    该函数用于float或double转换成字符数组

    D

    该函数用于从字符串转换成字符数组


    正确答案: B
    解析: 暂无解析

  • 第23题:

    多选题
    以下关于字符串函数的描述中,正确的是()
    A

    append函数用于在已有的字符串末尾添加新的内容

    B

    insert函数的作用是在字符串的某个位置插入一个字符

    C

    setCharAt函数的作用是将String或StringBuffer字符串的某个字符串替换

    D

    replace函数的作用是替换一段子串 E delete函数用语删除整个字符串


    正确答案: B,A
    解析: 暂无解析

  • 第24题:

    多选题
    数据结构里,下面关于字符数组描述正确的是()
    A

    gets()读取的字符串,其长度没有限制,以敲回车键结束。

    B

    puts()函数,该函数一次只能输出一个字符串

    C

    strcmp()函数,字符串1小于字符串2,函数返回值整数-1

    D

    strcpy()函数功能是进行字符串连接.


    正确答案: A,B
    解析: 暂无解析