已有定义:charstr1[15]={“university”},str2[15];则以下语句中正确的是()A、str2=str1B、str2=”college”C、scanf(“%s”,str2)D、printf(“%s”,str1)

题目

已有定义:charstr1[15]={“university”},str2[15];则以下语句中正确的是()

  • A、str2=str1
  • B、str2=”college”
  • C、scanf(“%s”,&str2)
  • D、printf(“%s”,str1)
参考答案和解析
正确答案:D
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2接在字符串str1的后面。

例如:str1=“How do”,str2=“you do?”,结果输出: How do you do?

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

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

include<stdio.h>

include<conio.h>

define N 40

void fun(char*str1,char *str2)

{

int i=0;

char *pl=str1;

char*p2=str2;

while(【 】)

i++;

for(;【 】;i++)

*(p1+i)=【 】;

*(p1+i)='\0';

}

main()

{

char str1[N],str2[N);

clrscr();

printf("*****Input the string str1 & Str2*****\n");

printf("\nstr1:");

gets(str1);

printf("\nstr2:");

gets(str2);

printf("**The string str1 & str2**\n");

puts(str1);

puts(str2);

fun(str1,str2);

printf("*****The new string *****\n");

puts(str1);

}


正确答案:*(p1+i) *p2 *p2++
*(p1+i) *p2 *p2++ 解析:第一空:变量i用来记录字符串str1的长度,当指针指列宁符串str1结束标志符‘\0’时,while循环结束,变量 i停止累加。第二空:指针p2指向字符串str2,通过for循环将字符中str2按在str1后面,循环结束的条件是指针p2所指的字符是字符串结束标志符‘\0’。第三空:指针p2最初指向字符串str2的首字符,通过自加1,使指针p2依次向后移动,指向str2的各个字符,实现将宁符串str2接在str1后面的功能。

第2题:

语句定义如下: char strl[50],str2[20],ch; 则下列语句正确的是______。

A.str1={"Crazy"}; str2=str1;

B.str1={"Crazy"}; str2={"English"}; strcpy(str1,str2);

C.ch="xy";

D.ch='x';


正确答案:D
解析:str1和str2是数组名,是常量,其值不可改变,所以A和B中将字符串常量赋值给str1和str2是错误的。字符变量ch占一个字节,只能存放一个字符,所以C也不正确。

第3题:

以下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’,则退出循环。

第4题:

请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2倒置后接在字符串str1后面。

例如:str1=“How do”,str2=“?od uoy”,结果输出:“How do you do?”。

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

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

include<stdio.h>

include<conio.h>

define N 40

void fun(char *str1,char *str2)

{

int i=0,j=0,k=0,n;

char ch;

char *p1=str1;

char *p2=str2;

while(*(p1+i))

i++;

while(*(p2+j))

j++;

n=【 】;

for(;k=j/2;k++,j--)

{

ch=*(p2+k);

*(p2+k)=*(p2+j);

*(p2+j)=ch;

}

【 】;

for(;【 】;i++)

*(p1+i)=*p2++;

*(p1+i)='\0';

}

main()

{

char str1[N],str2[N];

int m,n,k;

clrscr();

printf("***Input the string str1 & str2

***\n");

printf("\nstr1:");

gets(str1);

printf("\nstr2:");

gets(str2);

printf("***The string str1 & str2 ***\n");

puts(str1);

puts(str2);

fun(str1,str2);

printf("*** The new string ***\n");

puts (str1);

}


正确答案:j-- *(p2+n)='\0' *p2
j-- *(p2+n)='\0' *p2 解析:第一空:while循环执行后,变量j中保存了字符串str2的长度,而后面的for循环是将字符串str2倒置,即将第一个字符与最后一个字符对调,第二个字符与倒数第二个字符对调,如此循环直到中间的字符。第一次执行循环时,*(p2+j)指向最后一个字符,所以j要减1,并将未减1之前的数赋给n。第二空:将字符串str2倒置后,在字符串的最后要加上结束标记符,'\0'。第三空:当*p2所指的字符为,'\0'时,说明已经将倒置后的字符串str2都接在字符串str1后面了,for循环应该结束。当*p2所指的为其他字符时,for循环要继续执行。

第5题:

下列给定程序中,函数proc的功能是:首先把b所指字符串中的字符按逆序存放,然后将str1所指字符串中的字符和Str2所指字符串中的字符,按排列的顺序交叉合并到str所指数组中,过长的剩余字符接在str所指数组的尾部。例如,当str1所指字符串中的内容为ABCDEFG,str2 所指字符串中的内容为1234时,str所指数组中的内容应该为A483C2D1EFG;而当str1所指字符串中的内容为1234,str2所指字符串中的内容为ABCEDFG时,str所指数组中的内容应该为1G2F31:4DCBA。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: include<stdlib.h> include<conio.h> include<stdio。h> include<string.h> void proc(char*strl,char*str2,char*str) { int i,j;char ch; i=0;j=strleu(str2)-1; //****found**** while(i>j) { ch=str2[i];str2[i]=str2[j];str2[j]=ch; i++;j--; } while(*str1||*str2) { if(*str1){*str=*str1;str++;str1++;) if(*str2){*str=*str2;str++;str2++;) } //****found**** *str=0: } void main { char s1[100],s2[100],t[200]; system("CLS"); printf("\nEnter s1 string:"); scanf("%s",sl); printf("\nEnter s2 string:"); scanf("%s",s2); proc(s1,s2,t); printf("\nThe result is:%s\n",t); }


正确答案:

(1)错误:while(i>j)
正确:while(i<j)
(2)错误:*str=0;
正确:*str='\0 ';
【解析】由函数proc可知,变量i和j分别存放的是字符串str前面和后面第i个字符的位置,当i<j时,两个位置的字符交换。因此,“while(i>j)”应改为“while(i<j)”;交叉合并完成后,要为新的字符串添加结束符,因此,“*str= 0;”应改为“*str='\0';”,

第6题:

请补充函数fun,该函数的功能是比较字符串str1和str2的大小,井返回比较的结果。

例如: 当str1=“cdef",str2=“cde”时,函数fun()返回“>”。

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

请勿改动主函数main 和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

include< stdio, h>

include<conio. h>

define N 80

char *fun (char *str1,char *str2)

{

char *p1=str1, *p2=str2;

while (*p1 & & *p2 )

{

if (【 】)

return "<";

if(【 】)

return ">";

p1++;

p2++;

}

if (*p1=*p2)

return "==";

if (*p1==【 】)

return "<";

else

return ">";

}

main()

{

char str1 [N], str2 [N];

clrscr ();

printf ("Input str1: \n");

gets (str1);

printf ("Input str2: \n");

gets (str2);

printf ("\n*****the result*****\n");

printf ("\nstr1 %s str2", fun (str1, str2) );

}


正确答案:*p1*p2 *p1>*p2 \0’
*p1*p2 *p1>*p2 \0’ 解析:第一空:比较两个字符串的大小,是从第一个字符开始比较,如果两字符不相等,则由字符的大小决定字符串 P2指向字符串str2,如果p1所指的字符小于p2所指的字符,则字符串str1小于字符串str2。第三空:如果p1所指的字符大于p2所指的字符,则字符串str1 大于字符串str2。第三空:如果str1是str2 的前一部分,则str1 的所有字符都等于str2 中的对应字符,而字符串结束标记符‘\0’小于其他字符,所以,这里如果p1所指的字符等于‘\0’,则表示字符串str1小于字符串str2。

第7题:

若有定义:charstr1[6]="abcdm",*ps,*str2="abcdef";则()是正确的

A.strcpy(str1,str2)

B.表达式strcmp(str1,str2)的值大于0

C.str1=str2

D.表达式strlen(str1)的值为6


参考答案:A

第8题:

阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。

[函数2.1说明]

函数strcpy的功能是将字符串str2的内容复制到字符申str1。

[函数2.1]

(1) strcpy (char *slr1, const char *str2)

{ char * temp;

while( * str2!='\0') *cp++ =(2);

(3)='\0';

return str1;

}

[函数2.2说明]

函数int strcmp(const char *str1, const char *str2)的功能是按字典序比较两个字符串str1和str2的大小。当str1<str2时返回-1,当str1>str2时返回1,否则返回0。

[函数2.2]

int strcmp(const char *str1, const char *str2)

{ while( *str1= =* str2) {

if(* s1= =(4)) return 0;

s1++;

(5);

}

if( *str1<*str2) return -1;

return 1;

}


正确答案:char * (2) * str2++ (3) * cp (4) ‘\0’ (5) s2++或 ++s2
char * (2) * str2++ (3) * cp (4) ‘\0’ (5) s2++或 ++s2 解析:(1)根据函数说明,char *是函数strcpy的返回值类型;
(2)while循环是字符串复制的关键,它将str2的字符一个个复制到cp;
(3)字符复制完成后,应在字符串cp的末尾添加结束符;
(4)~(5):while循环的功能是从字符串首开始逐个比较str1和str2的每一字符,如果循环一直执行到两字符串末尾,则说明两串相等,应返回0值。

第9题:

使用VC++6.o打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char*str1,char*str2),此函数的功能是计算str1中出现str2的个数,当不出现时,则返回0。 例如: str1为“asdfsfdfg” str2为“sf”则返回1 str2为“df”则返回3 注意:不能修改函数的其他部分。 试题程序: include<iostream.h> //注意只能使用int类型,不能类型转换 intfun(char*str1,char*str2) { } voidmain() { charstr1[1024]; charstr2[256]; cout<<"pleaseinputastring:"<<endl; cin.getline(str1,1024); cout<<"pleaseinputotherstring;"<<endl cin.getline(str2,256); cout<<fun(str1,str2); cout<<endl; return; }


正确答案:
intfun(char*str1.char*str2)
{
intsize=0;
intstrllen;
intstr2len;
for(strllen=0;str1[strllen]!=0;strllen++);
for(str21en=0;str2[str21en]!=0;str2len++);
for(inti=0:i<strllen;i++)
{
intj=0;
for(;j<str21en;j++)
if(strl[i+j]!=str2[j])
break;
if(i==str21en)
{
++size;
i+=j;
}
}
returnsize;
}
【解析】本题考查的是字符串查找算法。首先求出两个字符串的长度,然后循环遍历第1个字符串,再使用一个内循环遍历第2个字符串,判断两个字符串相应位置是否一致。如果遍历完第2个字符串,所有位置都一致,则记数值size增1,即找到一个子串。

第10题:

下列语句中,正确的是______。

A.static char str[]="China";

B.static char str[];str="China";

C.static char str1[5],str2[]={"China"};strl=str2;

D.static char str1[],str2[];str2={"China"};strcpy(str1,str2);


正确答案:A

更多相关问题