单选题有以下函数:int fun(char *s,char *t){ while((*s)(*t)(*t++==*s++)); return (*s-*t);}函数的功能是(  )。A 求字符串的长度B 比较两个字符串的大小C 将字符串s复制到字符串t中D 连接字符串s和字符串t

题目
单选题
有以下函数:int fun(char *s,char *t){ while((*s)&&(*t)&&(*t++==*s++)); return (*s-*t);}函数的功能是(  )。
A

求字符串的长度

B

比较两个字符串的大小

C

将字符串s复制到字符串t中

D

连接字符串s和字符串t

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下面函数的功能是 。 sss(char *s,*t) { while((*s)&&(*t++==*s++)); reunrn(*s-*t); }()

A.求字符串的长度

B. 比较两个字符串的大小

C. 将字符串s复制到字符串t中

D. 将字符串s续接到字符串t中


参考答案:B

第2题:

函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp()),请填空。#include<stdio.h>int sstrcmp(char *s,char *t){ while(*s&&*t&&*s= =){s++;t++; }return;}


正确答案:*t或t[0] *s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]
当s所指字符和t所指字符不等时,退出循环;否则继续执行循环。当发现不等时,返回*s-*t,即如果s所指字符大于t所指字符,则返回值大于0,小于则返回值小于0.

第3题:

有以下函数

int fun(char *s)

{ char *t=s;

while(*t++);

return(t-s);

}

该函数的功能是

A) 比较两个字符 串 的大小

B) 计算 s 所指字符串占用内存字节的个数

C) 计算 s 所指字符串的长度

D) 将 s 所指字符串复制到字符串 t 中


正确答案:B

第4题:

假定输入的字符串中只包含字母和*号。请编写函数 fun(),它的功能是:除了尾部的,:号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。

例如,若字符串中的内容为****A*BC*DEF*G******,删除后,字符串中的内容应当是ABCDEFG******。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

include<conio. h>

include<stdio. h>

void fun(char *a, char *p)

{

}

main ( )

char s[81],*t;

printf ("Enter a string: \n ");

gets (s);

t=s;

while (*t)

t++;

t--; /*指针t指向字符串尾部* /

while (*t== '*' )

t--; /*指针t指向最后一个字母*/

fun (s, t);

printf ("The string after deleted: \n");

puts (s);

}


正确答案:void fun(char *a char *p) { char *t=a; for (; t=p; t++) if(*t!='*') * (a++)=*t; /*将p以前所有不是*号的字符保留下来*/ for (;*t!='\0' ;t++) * (a++) =.t; / * 将p以后的所有*号保留下来*/ *a='\0'; / *在字符串最后加上结束标记位*/
void fun(char *a, char *p) { char *t=a; for (; t=p; t++) if(*t!='*') * (a++)=*t; /*将p以前所有不是*号的字符保留下来*/ for (;*t!='\0' ;t++) * (a++) =.t; / * 将p以后的所有*号保留下来*/ *a='\0'; / *在字符串最后加上结束标记位*/ 解析:本题曾在历年上机考试及模拟试题中多次出现,一般用两个循环语句来实现。第1个循环的作用是将p以前所有不是*号的字符保留下来,即删除所有的*号。第2个循环的作用是将p以后的所有*号保留下来。

第5题:

下面函数的功能是()sss(s,t)char*s,*t;{ while((*s)&&(*t)&&(*t++==*s++));return(*s- * t); }

A.求字符串的长度

B.比较两个字符串的大小

C.将字符串s复制到字符串t中

D.将字符串s接续到字符串t中


正确答案:B

第6题:

以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。void sstrcpy(char*s,char*t){while(*s++=);}main(){ char str1[100],str2[]="abcdefgh"; sstrcpy(str1,str2); printf("%s\n",strl);}


正确答案:*t++ 或 *(t++)
将t所指字符赋给s,然后各自增1,指向下一字符,知道遇到最后的字符‘0’,则退出循环。

第7题:

有以下函数 int fun(char *s) { char *t=s; while(*t++); return(t-s); } 该函数的功能是

A.比较两个字符串的大小

B.计算s所指字符串占用内存字节的个数

C.计算s所指字符串的长度

D.将s所指字符串复制到字符串t中


正确答案:B
解析:循环语句while(*t++);执行完时,指针变量t就指向了字符中结束符‘\o’之后的位置,所以语句return(t-s);返回的就是字符串s所用内存的字节个数。

第8题:

有以下函数

int aaa(char *s)

{ char *t=s;

while(*t++);

t--;

return(t-s);

}

以下关于 aaa 函数的功能叙述正确的是

A) 求字符串s 的长度

B) 比较两个串的大小

C) 将串s 复制到串t

D) 求字符串s 所占字节数


正确答案:A

第9题:

编写算法,实现下面函数的功能。函数void insert(char*s,char*t,int pos)将字符串t插入到字符串s中,插入位置为pos。假设分配给字符串s的空间足够让字符串t插入。(说明:不得使用任何库函数)


参考答案:本题是字符串的插入问题,要求在字符串s的pos位置,插入字符串t。首先应查找字符串s的pos位置,将第pos个字符到字符串s尾的子串向后移动字符串t的长度,然后将字符串t复制到字符串s的第pos位置后。
  对插入位置pos要验证其合法性,小于1或大于串s的长度均为非法,因题目假设给字符串s的空间足够大,故对插入不必判溢出。
  [算法描述]
  void insert(char *s,char *t,int pos)
  //将字符串t插入字符串s的第pos个位置。
  {int i=1,x=0; char *p=s,*q=t; //p,q分别为字符串s和t的工作指针
  if(pos<1) {cout<<“pos参数位置非法”<  while(*p!=’\0’&&i  //若pos小于串s长度,则查到pos位置时,i=pos。
  if(*p == '/0') { cout<  else //查找字符串的尾
  while(*p!= '/0') {p++; i++;} //查到尾时,i为字符‘\0’的下标,p也指向‘\0’。
  while(*q!= '\0') {q++; x++; } //查找字符串t的长度x,循环结束时q指向'\0'。
  for(j=i;j>=pos ;j--){*(p+x)=*p; p--;}//串s的pos后的子串右移,空出串t的位置。
  q--; //指针q回退到串t的最后一个字符
  for(j=1;j<=x;j++) *p--=*q--; //将t串插入到s的pos位置上
  [算法讨论] 串s的结束标记('\0')也后移了,而串t的结尾标记不应插入到s中。

第10题:

下列给定程序中,函数fun()的功能是:从s所指字符串中,找出t所指字符串的个数作为函数值返回。例如,当s所指字符串中的内容为abcdabfab,t所指字符串的内容为ab,则函数返回整数3。

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

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

试题程序:

include <conio.h>

include <stdio.h>

include <string.h>

int fun (char *s, char *t)

{int n; char *p, *r;

n=0;

while(*s)

{p=s;

r=t;

while (*r)

/**************found**************/

if(*r==*p) {r++; p++}

else break;

/*************found**************/

if(r=='\0')

n++;

s++;

}

return n;

}

main()

{char s[100], t[100]; int m;

clrscr();

printf("\nPlease enter string s: ");

scanf ("%s",s);

printf("\nPlease enter substring t: ");

scanf ("%s",t);

m=fun (s,t);

printf("\nThe result is: m=%d\n", m);

}


正确答案:(1)错误:if(*r==*p) {r++;p++} 正确:if(*r==*p) {r++;p++;} (2) 错误;if(r=='\0') 正确:if(*r=='\0')
(1)错误:if(*r==*p) {r++;p++} 正确:if(*r==*p) {r++;p++;} (2) 错误;if(r=='\0') 正确:if(*r=='\0') 解析:从字符串s中找出于串t的方法是:从第一个字符开始,对字符串进行遍历;若s串的当前字符等于t串的第1个字符,两字符串的指针自动加1,继续比较下一个字符;若比较至字符串t的结尾,则跳出循环;若s串的字符和t串的字符不对应相同,则继续对下一个字符进行处理。

更多相关问题