计算机二级

有如下语句序列:char str[10];cin>>str;当从键盘输入”I love this game”时,str中的字符串是A.”I love this game”B.”I love thi”C.”I love”D.”I”

题目

有如下语句序列:

char str[10];cin>>str;

当从键盘输入”I love this game”时,str中的字符串是

A.”I love this game”

B.”I love thi”

C.”I love”

D.”I”

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

第1题:

若有定义:char strl[10],str2[ ]="student"; 以下能把str2中的字符串赋给strl的语句是()。

A.for(int i=0; i<=strlen(str2); i++) str1[ i ]=str2[ i ];

B.str1="student";

C.str1=str2;

D.for(int i=0; str2[ i ]!=0; i++) str1[ i ]=str2[ i ];


D

第2题:

有如下语句序列: Char str[10];Cin>>str; 当从键盘输入“I love this game”时,str中的字符串是( )。

A.”I love this game”

B.”I love thi”

C.”I love”

D.”I”


正确答案:D
cin是c++预定义的标准输入流对象,cin用来接收字符串时,遇“空格”、“TAB”、“回车”时都会结束。所以本题答案为D。

第3题:

请补充main函数,该函数的功能是:从键盘输入一个字符串并保存在字符str1中,把字符串str1中下标为偶数的字符保存在字符串str2中并输出。例如,当str1=“cdefghij”,则 str2=“cegi”。

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

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

试题程序:

include<stdio.h>

include<conio.h>

define LEN 80

main()

{

char str1[LEN],str2 [LEN];

char *p1=str1,*p2=str2;

int i=0,j=0;

clrscr();

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

scanf(【 】);

printf("***the origial string***\n");

while(*(p1+j))

{

printf("【 】",*(p1+j));

j++;

}

for(i=0;i<j;i+=2)

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

*p2='\0';

printf("\nThe new string is:%s\n", 【 】 );

}


正确答案:"%s"str1 %c str2
"%s",str1 %c str2 解析:第一空:本题考查对标准输入函数scanf()的调用格式,当输入字符串时,格式控制字符串为“%s”,题目要求输入的字符串保存在str1中,所以地址表列应为字符串的首地址,即为str1。第二空:本题考查对标准输出函数printf()的调用格式,当输出为字符型变量时,格式控制字符串为“%c”。第三空:题目要求将str1中下标为偶数的字符保存在字符串str2中并输出,所以ptintf()函数的输出表列是str2。

第4题:

函数f_str(char *str,char del)的功能是;将非申字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。例如,若str的值为“66981636666257”,del的值为“6”,调用此函数后,将输出3个子字符串,分别为“981”、“3”和“257”。请将函数f_str中(6)~(8)空缺处的内容填写完整。

[函数]

void f_str(char *str,char del)

{ int i,j,len;

len = strlen(str);

i = 0;

while (i<len) {

while ( (6) )

i++; /* 忽略连续的标志字符 */

/* 寻找从srt[i]开始直到标志字符出现的一个子字符串 */

j = i+1;

while (str[j] !=del && str[j] !='\0')

j++;

(7)="\0"; /* 给找到的字符序列置字符串结束标志 */

printf (" %s\t", & str [i]);

(8);

}

}


正确答案:函数f_str(char*strchar del)的功能是:将非空字符串str以分割标志字符为界线分割成若干个子字符串并输出。由函数说明和C代码可知该函数对给定的字符串进行从左至右的扫描找出不包含标志字符(变量del的值)的子字符串。在该函数C代码中变量i的初值为0len表示字符串的长度。当 ilen时进入循环体。如果当前字符(即str[i]的值)是标志字符则不做处理继续扫描以处理标志字符连成一串的情况。因此(6)空缺处所填写的内容是“str[i]==del”或其等价形式。 当退出第2个while循环时当前字符str[i]不是标志字符此时从str[i]开始继续寻找直到标志字符出现的…个子字符串(变量i保持不变用j标记寻找的过程)给找到的字符序列置字符串结束标志以便于后面语句的输出。因此(7)空缺处所填写的内容是“str[j]”。 printf输出语句结束之后就要继续寻找后面不包含标志字符的子字符串。此时需要把数组指针i移至j的后面再继续扫描。因此(8)空缺处所填写的内容是“i=j+1”。
函数f_str(char*str,char del)的功能是:将非空字符串str以分割标志字符为界线,分割成若干个子字符串并输出。由函数说明和C代码可知,该函数对给定的字符串进行从左至右的扫描,找出不包含标志字符(变量del的值)的子字符串。在该函数C代码中,变量i的初值为0,len表示字符串的长度。当 ilen时进入循环体。如果当前字符(即str[i]的值)是标志字符,则不做处理,继续扫描以处理标志字符连成一串的情况。因此(6)空缺处所填写的内容是“str[i]==del”或其等价形式。 当退出第2个while循环时,当前字符str[i]不是标志字符,此时从str[i]开始继续寻找,直到标志字符出现的…个子字符串(变量i保持不变,用j标记寻找的过程),给找到的字符序列置字符串结束标志,以便于后面语句的输出。因此(7)空缺处所填写的内容是“str[j]”。 printf输出语句结束之后,就要继续寻找后面不包含标志字符的子字符串。此时,需要把数组指针i移至j的后面,再继续扫描。因此(8)空缺处所填写的内容是“i=j+1”。

第5题:

请补充函数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后面的功能。

第6题:

执行语句序列

char str1[10]="ABCD",str2[10]="XYZxyz";

for(int i=0;strl[i]=str2[i];i++);

后,数组strl中的字符串是______。


正确答案:XYZxyz
XYZxyz 解析:注意for的循环体为空语句,其第二个表达式为一个赋值语句而不是一个逻辑表达式语句。因此,for循环的作用实际上是将str2的字符逐个赋值给str1中的对应位置。

第7题:

执行语句序列

char strl[10]="ABCD",str2[10]="XYZxyz";

for (int i=0; strl[i]=str2[i]; i++)

后,数组str1中的字符是XYZxyz,数组str2中的字符串是【 】。


正确答案:XYZxyz
XYZxyz 解析:注意for的循环体为空语句,其第二个表达式为一个赋值语句而不是一个逻辑表达式语句。因此,for循环的作用实际上是将str2的字符逐个赋值给str1中的对应位置。

第8题:

请补充函数fun(),该函数的功能是:把ASCII码为奇数的字符从字符串str中删除,结果仍然保存在字符串str中。字符串str从键盘输入,其长度作为参数传入函数fun()。

例如,输入“abcdef”,输出“bdf”。

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

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

试题程序:

include <stdio.h>

define N 80

void fun(char s[],int n)

{

int i, j;

j=0;

for(i=0;【 】;i++)

{

if(【 】)

s [j++]-s [i];

}

【 】;

}

main ( )

{

int i=0, strlen=0;

char str [N];

clrscr ();

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

gets (str);

while (str [i] !='\0')

{

strlen++;

i++;

}

fun(str, strlen);

printf("\n*** display string ***\n");

puts (str);

}


正确答案:in s[i]%2=0 s[j]= '\0'
in s[i]%2=0 s[j]= '\0' 解析:第一空:变量n为字符串的长度,所以字符数组的下标的取值范甲是从0到n-1。第二空:如果当前字符的ASCII码对2取余等于0,就说明这个字符的ASCII码为偶数,故不能删除,而是将它存于字符串s中。第三空:通过保留ASCII码为偶数的字符的力法,来实现删除ASCII码为奇数的字符的目的。处理结束后,还要在字符串s的最后加上结束标记符'\0'。

第9题:

请编写一个函数int CalcDigital(char *str),该函数可返回字符串str中数字字符(即0~9这10个数字)的个数,如字符串“olympic2008”中数字字符的个数为4。请用if条件判断语句与for循环语句来实现该函数。

注意:部分源程序已存在文件test9_2.cpp中。

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

文件test9_2.cpp的内容如下:

include<iostream.h>

include<string.h>

int CalcDigital(char*str);

void main()

{

char *str;

str=new char[255];

cout<<"输入字符串:";

cin>>str;

int num=CalcDigital(str);

cout<<str<<":"<<num<<endl;

}

int CalcDigital(char *str)

{

}


正确答案:int CalcDigital(char *str) { if(str==NULL) return 0; int num_of_digital=0; int len=strlen(str); for(int i=O;ilen;i++) if(str[i]='9' && str[i]>='0') num_of_digital++; return mum_of_digital; }
int CalcDigital(char *str) { if(str==NULL) return 0; int num_of_digital=0; int len=strlen(str); for(int i=O;ilen;i++) if(str[i]='9' && str[i]>='0') num_of_digital++; return mum_of_digital; } 解析:本题考查的是考生对于if条件判断语句与for循环语句的熟练使用程度。注意判断条件(判断是否是数字是直接比较ASCH码)的使用。