请补充函数proc,该函数的功能是按条件删除一个字符串指定字符一半的数目,具体要求如下:如果该字符串所包含的指定字符的个数是奇数,则不删除,如果其数目是偶数,则删除原串后半部分的指定字符。其中,str指向原字符串,删除后的字符串存放在b所指的数组中,c中存放指定的字符。例如,当str输入“abcabcabcab”,c=b时,b的输出为“abcabcaca”;如果str的输入为“abcabcabca”,则b的输出为“abcabcabca”。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何

题目

请补充函数proc,该函数的功能是按条件删除一个字符串指定字符一半的数目,具体要求如下:如果该字符串所包含的指定字符的个数是奇数,则不删除,如果其数目是偶数,则删除原串后半部分的指定字符。其中,str指向原字符串,删除后的字符串存放在b所指的数组中,c中存放指定的字符。例如,当str输入“abcabcabcab”,c=b时,b的输出为“abcabcaca”;如果str的输入为“abcabcabca”,则b的输出为“abcabcabca”。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅程函数prOC的横线上填入所编写的若干表达式或语句。 试题程序: include<stdlib.h> include<stdio.h> include<conio.h> define M 80 void proc(char str[],char b[],char c) { int i=0,j=0; int n=0: int m=0: while(str[i]!=\0) { if(str[i]==c) n++: i++: } 【1】 ; if(n%2) { while(str[j]!=\0 ) { b[j]=str[j]; j++; } b[j]=\0; } else { while(str[i]!=\0 ) { b[j++]=str[i]; if(str[i]==c) m++: if((m>n/2)&&(str[i]==c)) 【2】 ; i++: } 【3】 ; } } void main { char str[M],b[M]; char C; system("CLS"); printf("Enter the strin9:\n"); gets(str); printf("Enter the character of the string deleted:"): scanf("%C",&c); proc(str,b,c); printf("The new string is:%s\n",b); }


相似考题
参考答案和解析
正确答案:

【1】i=0【2】j--【3】b[j]=\0
【解析】由函数proc可知,变量i为字符串元素的下标。每次重新开始遍历字符串时,下标要从0开始,因此,【1】处填“i=0”;变量n中存放指定字符的个数,当n为偶数时,删除位置大于n/2且是指定字符的元素,因此,[21处填“j--”;删除后的字符串放在b所指的数组中,最后要添加结束符,因此,【3】处填“b[j]=\0”。

更多“请补充函数proc,该函数的功能是按条件删除一个字符串指定字符一半的数目,具体要求如下:如果该字 ”相关问题
  • 第1题:

    请补充函数proc(),该函数的功能是判断一个数是否为素数。该数是素数时,函数返回字符串:“yes!”,否则函数返回字符串:“no!”,并在主函数中输出。

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

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

    试题程序:


    正确答案:

    【l】char*proc(intn)【2】2【3】n%i==0
    【解析】由整个程序可知,【1】应为函数proc()的函数头。根据主函数中的调用可知形参的个数和类型,因此,【1】处填“char”proc(intn)”。素数为只能被1和它本身整除的整数。要判断一个整数是否为素数,要看它是否能被除1和小于它本身之外的数整除,因此,【2】处填“2”;【3】处填“n%i==0”。

  • 第2题:

    请补充函数proc(),该函数的功能是:删除字符数组中小于指定字符的字符,指定字符从键盘输入,结果仍保存在原数组中。 例如,输人“abcdefghij”,指定字符为“f”,则结果输出“fghij”。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。 试题程序:


    正确答案:
    【l】i++【2】str[j++]=str[i]【3】str[j]=ˊ\0ˊ
    【解析】要删除字符串中小于指定字符的字符,就要把字符串中每一个字符跟指定字符相比较,小于指定字符的字符不予处理,因此【l】处填“i++”;把大于等于指定字符的字符保存在原字符串中,因此【2】处填“str[j++]=str[i]”;处理完整个字符串后.为新生成的字符串添加结束符,因此【3】处填“str[j]=ˊ\0ˊ”。

  • 第3题:

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

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

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

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

    试题程序:


    正确答案:

    【1】i+1【2】str[j]=str[i]
    【解析】题目要求把字符串str中的字符按其ASCⅡ码值升序排列,可以使字符串中的每一个字符与其后的所有字符相比较,因此【1】填“i+1”;把该字符与ASCⅡ码值小于其本身而且位置在它后面的字符相交换,最后就可以使ASCⅡ码值小的在前、大的在后,因此【2】填“str[j]=str[i]”。

  • 第4题:

    假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参P已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。 例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容应当是abcdefg****。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。 试题程序:


    正确答案:

    题目中要求除了尾部的*号之外,将字符串中其他*号全部删除。首先将所有不是*的字符放在字符串str中,然后将尾部的*接在字符的后面,最后为字符串str加上结束符。

  • 第5题:

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