以下不能将s所指字符串正确复制到t所指存储空间的是(  )。

题目
单选题
以下不能将s所指字符串正确复制到t所指存储空间的是(  )。
A

while(*t=*s){t++;s++;}

B

for(i=0;t[j]=s[i];i++);

C

do{*t++=*s++;}while(*s);

D

for(i=0,j=0;t[i++]=s[j++];);

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

第1题:

下列程序中的函数strcpy2()实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,合并形成一个新字符串。例如,若t所指字符串为:efgh,调用strcpy2后,s所指字符串为:efghefgh。请填空。#include <stdio.h>#include <string.h>void strcpy2(char *s,char *t){char *p=; while(*s++=*t++); s=s-1; while(=*p++);}main(){char str1[100]="abcd",str2[]="efgh"; strcpy2(str1,str2); printf("%s\n",strl);}


正确答案:t *s++
两种赋值的方法是一样的,将指向的字符的地址赋给s,然后各自增1,s=s-1的目的是在赋值的时候多加了1.

第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题:

下列程序中的函数 strcpy2() 实现字符串两次复制 , 即将 t 所指字符串复制两次到 s 所指内存空间中 ,合并形成一个新的字符串。例如,若 t 所指字符串为 efgh ,调用 strcpy2 后, s 所指字符串为 efghefgh 。请填空。

#include <stdio.h>

#include <string.h>

void strcpy2(char *s,char *t)

{ char *p=t;

while(*s++=*t++);

s= 【 1 5 】 ;

while( 【 1 6 】 =*p++);

}

main()

{ char str1[100]="abcd",str2[]="efgh";

strcpy2(str1 ,str2); printf("%s\n",str1);

}


正确答案:
答案 s-1 ; *s++
解析:除去第 1 次复制字符串中的结束标志 ‘ \0 ’
             开始第 2 次复制字符串。

第4题:

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

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

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

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

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


正确答案:C
解析: 在函数fun(char*s)中,首先用字符指针变量t指向s,而循环语句while(*t++);的功能是使指针变量t指向字符串变量s的末尾,这时退出循环,因而语句return(t-s);返回的就是字符串s所指字符串的长度。

第5题:

下列给定程序中,函数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串的字符不对应相同,则继续对下一个字符进行处理。

第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 fun(char *s)

{ char *t=s;

while(*t++);

return(t-s);

}

该函数的功能是

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

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

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

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


正确答案:B

第9题:

有以下函数 fun(char *a, char *B) { while((*a!='\0')&&(*b!='\0')&&(*a==*B) ) { a++; b++;} return(*a-*B) ; } 该函数的功能是

A.计算a和b所指字符串的长度之差

B.将b所指字符串复制到a所指字符串中

C.将b所指字符串连接到a所指字符串后面

D.比较a和b所指字符串的大小


正确答案:D
解析:本题要求阅读的代码是一个函数,阅读之前先要看清函数的定义,该函数有两个参数,都是字符指针,这说明它接收的是两个字符串.该函数没有定义返回类型,C语言规定函数的返回类型为int时可以省略,所以切不可将其看成是无返回类型的void型函数,它是int型函数。函数体中除了返回语句外,只有一条while循环语句,该循环的循环条件为(*a!='\'0}&&(*b!='\0')&&(*a==*B),即当a和b所指处都不是字符结束符'\0'并且a和b所指处的内容相等时执行循环。而循环体中只是简单地将指针a和b同时往后移动1位。循环结束后返回a所指内容减去b所指内容的差。换个角度去考虑,也就是说当字符串a或b中有一个结束了或者是它们的相同位置中有一个字符不同时,则返回该位置两个字符之差。若两者长度相同而且所有对应字符都相同的话,最后返回的是'\0\-'\0'=0,否则的话就返回两个字符串第一对不相同的字符之差.这时应该可以看出来,这个函数实现的是对两个字符串的比较。所以,4个选项中D正确。

第10题:

有以下类定义:

class A{

char*a;

public:

A( ):a(0){ }

A(char*aA) { //把aa所指字符串复制到a所指的存储空间

a=______;

strcpy(a,aA) ;

}

~A( ){delete[ ]a;}

};

画线处应填写的表达式是

A.new char[strlen(aA)+1]

B.char[strlen(aA)+1]

C.char[strlen(aA)]

D.new char[sizeof(aA)-1]


正确答案:A
解析:为a申请一个比aa串长增加1的一个存储空问。B和C缺少new运算子,D分配空间不足。

更多相关问题