计算机二级

请补充函数proc(),该函数的功能是:把字符串str中的字符按字符的ASCⅡ码升序排列,处理后的字符串仍然保存在原串中,字符串及其长度作为函数参数传人。例如,如果输入“9fedcba”,则输出为“abcdefg”。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。试题程序:

题目

请补充函数proc(),该函数的功能是:把字符串str中的字符按字符的ASCⅡ码升序排列,处理后的字符串仍然保存在原串中,字符串及其长度作为函数参数传人。

例如,如果输入“9fedcba”,则输出为“abcdefg”。

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

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

试题程序:

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

第1题:

请补充函数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++”。

第2题:

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

第3题:

请编写函数proc(),对长度为9个字符的字符串,除首、尾字符外,将其余7个字符按ASCⅡ码值降序排列。例如,原来的字符串为HabcdefA,则排序后输出为HfedcbaA。 注意:部分源程序给出如下。 请勿改动main()和其他函数中的任何内容,仅在函数proc()中填入所编写的若干语句。 试题程序:


正确答案:

【解析】按照题目中要求,求除首、尾字符外,将其余7个字符按ASCⅡ码值降序排列。首先需要判断除首、尾字符之外,其余7个字符ASCⅡ码值的大小,将不符合顺序要求的字符互换。

第4题:

请编一个函数fun(char*str),该函数的功能是把字符串中的内容逆置。 例如,字符串中原有的字符串为asdfg,则调用该函数后,串中的内容为gfdsa。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。 试题程序:


正确答案:

【解析】在fun()函数中,首先求行字符串的长度,然后通过循环进行字符交换。要注意的是,如果字符串长度是奇数,则最中间的元素在逆置前后的位置是没有改变的。

第5题:

下列给定程序中,函数proc()的功能是:将字符串str中的所有字符复制到字符串b中,要求在每复制3个字符之后插入1个空格。例如,在调用proc()函数之前给字符

串str输入abcdefghijk,调用函数之后,字符串b中的内容则为abc def ghijk。

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

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

试题程序:


正确答案:

第6题:

请编写函数proc(),其功能是:将str所指字符串中除下标为偶数、同时ASCⅡ码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为ABCDEFG12345,其中字符8的ASCⅡ码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCⅡ码值为奇数,所在数组中的下标为偶数,因此不应当删除。依次类推,最后t所指的数组中的内容应是ACEG。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所写的若干语句。 试题程序:


正确答案:

【解析】题目中要求将字符串str中下标为偶数、同时ASCⅡ码值为奇数的字符放在数组t中。首先,需要检查字符串str中下标为偶数的字符的ASCⅡ码值是否为奇数,将符合要求的字符放在数组t中。最后,为新的字符串数组添加结束符。

第7题:

请补充函数fun(),该函数的功能是:把字符串str中的字符按字符的ASCⅡ码降序排列,处理后的字符串仍然保存在原串中,字符串及其长度作为函数参数传入。

例如,如果输入“cdefgh”,则输出为“hgfedc”。

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

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

试题程序:

include <stdio.h>

define N 80

void fun (char s [], int n)

{

int i, j;

char ch;

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

for(j=【 】;j<n;j++)

if (s[i]<s [j])

{

ch=s [j];

【 】;

s [i] =ch;

}

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);

}


正确答案:I s[j]=s[i]
I s[j]=s[i] 解析:第一空:本题采用选择法进行排序。选择法的算法思路是:如果有n个数则从头到倒数的第2个数一个一个往后走动,每走动一个数总是将这个数与其后的所有数进行两两比较,在比较时按题目要求的顺序将进行比较的这两个数排序 (即交换)。理解了选择法的思路,则此空就非常简单了,应该填i。第二空:借助第三个变量交换两数的方法,非常重要也非常基础,必须要求掌握。

第8题:

假定输人的字符串中只包含字母和*号。请编写函数proc,它的功能是:将字符串中 的前导*号全部删除,中间和后面的*号不删除。 例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容则 应当是a*bc*def*g****。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编 写的若干语句。 试题程序: include<stdio.h> include<conio.h> void proc(char*str) { } void main { char str[81]; printf("Enter a string:kn"); gets(str); proc(str); printf("The string after deleted:kn"); puts(str);}


正确答案:
void proc(char * str)
{
char*p=str;
while(* p= =*)p++;//通过p的移动来达到使p指向第一个不是*号的字符
for(;* p!=\0;p++,str++)//把从第一个不是*号的字符放到a中
* str=* P:
* str=\0;//最后用\0作为字符串结束标志
}
【解析】题目中要求将字符串中的前导*号全部删除,首先将指针P移动到第一个不是*的字符,将指针P之后的字符放入原来的字符串中,并为新的字符串添加结束符。

第9题:

假定输入的字符串中只包含字母和*号。请编写函数proc,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。

例如,若字符串中的内容为****a*bc*def*g** **,删除后,字符串中的内容则应当是a*bc*def*g** **。

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

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

试题程序:

include<stdio.h=:{>

include<conio.h>

woid proc(char*st r)

{

}

void main

char str[81];

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

gets(str);

proc(str):

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

puts(str);}


正确答案:

void proc(char*str)

{

char*p=str

while(*p=='*')p++;//通过P的移动来达

到使P指向第一个不是*号的字符

for(*p!='0 'p++str++)//把从第一个

不是*号的字符放到a中 ‘

*str=* P

*str='0 '; //最后用'0'作为字符串结束标志

}

【解析】题目中要求将字符串中的前导*号全部删除首先将指针p移动到第一个不是*的字符,将指针P之后的字符放入原来的字符串中,并为新的字符串添加结束符。