计算机二级

请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2倒置后接在字符串str1后面。例如:str1=“How do”,str2=“?od uoy”,结果输出:“How do you do?”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:include<stdio.h>include<conio.h>define N 40void fun(char *str1,char *str2){int i=0

题目

请补充函数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循环要继续执行。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

字符串函数strcat(str1,str2)的作用是将字符串str2连接在字符串str1后。


正确

第2题:

字符串函数strcat(str1,str2)的作用是将字符串str2连接在字符串str1后.


正确

第3题:

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

例如,str1=”I am a”,str2=”student”,结果输出:I am a student。

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

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

试题程序:


正确答案:

【1】*(pl+i)【2】+p2【3】*p2++
【解析】要将字符串str2接在字符串str后面,首先要得到字符串str1的长度,因此【1】填“*(p1+i)”。然后将字符串str2中的每一个字符接在字符串str1所有字符的后面,因此【2】填“*p2”;【3】填“*p2++”。

第4题:

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

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

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

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

试题程序:


正确答案:


【解析】先判断ASCⅡ码的奇偶。
第一空:根据主函数“fun(str,len);”调用语句,其中len为字符串str的长度,用来控制循环。根据主函数中对应的调用语句,补全fun()函数定义,第一空填“fun(chars[],intn)”。
第二空:“s[j++]=s[i];”语句中j的变量在使用前要对其取值进行初始化,因为数组下标是由0开始的,初始化值为0,所以第二空填“j-0”。
第三空:新生成的字符串要加尾符标志,所以第三空填“s[j]=ˊ\0ˊ”。

第5题:

请补充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。

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

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

第8题:

请补充main函数,该函数的功能是:从一个字符串中截取前面若干个给定长度的子字符串。其中,str1指向原字符串,截取后的字符存放在str2所指的字符数组中,n中存放需截取的字符个数。

例如:当str1=“cdefghij”,然后输入4,则str2=“cdef”。

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

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

试题程序:

include<stdio.h>

include<conio.h>

define LEN 80

main()

{

char str1[LEN),str2[LEN);

int n,i;

clrscr();

printf(“Enter the string:\n”);

gets(str1);

printf“Enter the position of the string

deleted:”);

scanf(【 】);

for(i=0;i<n;i++)

【 】

str2[i]=‘\0’;

printf(“The new string is:%s\n”,【 】);

}


正确答案:"%d"&n str2[i]=str1[i] str2
"%d",&n str2[i]=str1[i] str2 解析:第一空:本题考查对标准输入函数scanf()的调用格式,由后面的程序可以知道,变量n保存了要截取的字符数,注意在n前面不要忘了取址符‘&’。第二空:截取前n个字符,就是将字符串str1的前n个字符依次赋给字符串str2的前n个字符。第三空:本题考查对标准输出函数printf()的调用格式,根据题意,应输出截取后的字符串,即字符串str2。

第9题:

请编写一个函数void fun(cbara [], charb [], int n),其功能是:删除一个字符申中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。

例如,输入一个字符串world,然后输入3,则调用该函数后的结果为word。

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

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

试题程序:

include <stdio.h>

include <conio.h>

define LEN 20

void fun (char a[], char b [], int n)

{

}

main ()

{

char str1 [LEN], str2 [LEN];

int n ;

clrscr ();

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

gets (str1) ;

printf ("Enter the position of the string

deleted: ");

scanf ("%d", &n) ;

fun (str1, str2, n) ;

printf ("The new string is : %s \n",

str2) ;

}


正确答案:void fun {char a[] char b[]int n) { int ik=0; for(i=0;a[i]!=‘\0’;i++) if (i!=n) /*将不是指定下标的字符存入数组b中*/ b[k++]=a[i]; b[k]=‘\0’; /*在字符串最后加上结束标记*/ }
void fun {char a[], char b[],int n) { int i,k=0; for(i=0;a[i]!=‘\0’;i++) if (i!=n) /*将不是指定下标的字符存入数组b中*/ b[k++]=a[i]; b[k]=‘\0’; /*在字符串最后加上结束标记*/ } 解析:本题要求删除字符串中指定下标的字符,即相当于把不是指定下标的字符留下。所以要用if(i!=n),注意不能写成“=”运算。