请补充fun()函数,该函数的功能是:把字符的ASCII码中为奇数的字符从字符串str中删除,结果仍然保存

题目

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

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

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

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

试题程序:

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

第1题:

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

第2题:

请补充函数fun(),该函数的功能是:把字符下标能铍2或3整除的字符从字符串str中删除,把剩余的字符重新保存在字符串str中。字符串str从键盘输入,其长度作为参数传入函数fun()。

例如,输入“abcdefghijk”,输出“bfh”。

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

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

试题程序:

include <stdio.h>

define N 80

void fun(char s[], int n)

{

int i, k;

【 】;

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

{

s[k++]=s[i];

if(【 】)

k--;

}

【 】;

}

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

}


正确答案:k=0 (i%2==0)||(i%3==0 s[k]='\0'
k=0 (i%2==0)||(i%3==0 s[k]='\0' 解析:第一空;变量k声明时没有初始化,所以在使用前要对它初始化。因为k用作字符数组的下标,所以初始化为 0。第二空:如果当前字符的下标能被2或3整除,则不保存这个字符。第三空:将所有字符下标能被2或3整除的字符从字符串中删除后,在字符串的最后还要加上结束标记符'\0'。

第3题:

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

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

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

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

试题程序:

inc lude< stdio, h>

define N 80

【 】

{

int i, j;

【 】

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

{

if (s [i] %2!=0)

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

}


正确答案:void fun(char s[]int n) j=0 s[j]='\0'
void fun(char s[],int n) j=0 s[j]='\0' 解析:第一空:由主函数main()调用fun()函数的格式可以知道,fun()函数没有返回值,第二个参数是字符数组,第二个参数是整型变量。第二空:变量j声明时没有初始化,所以在使用j之前要将它初始化为0。第三空:当把所有ASCⅡ码为偶数的字符都存入字符串s中后,要在最后加上‘\0’,表示字符串的结束。

第4题:

函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一含新串放在t所指的数组中。

例如,若s所指字符串中的内容为:“ABCDEFGl23456”,其中字符A的ASCII码值为奇数,因此应当删除:其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是:“246”。

注意:部分源程序存在文件PROGl.C中。

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


正确答案:
解析:该程序功能是将字符串中除了下标为偶数、ASCII值也为偶数的字符外,其余的全都删除。解题过程利用if条件判断表达式选择符合条件的字符,然后将符合条件的字符放入指定的字符串。

第5题:

请补充函数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。第二空:借助第三个变量交换两数的方法,非常重要也非常基础,必须要求掌握。

第6题:

请编写函数fun(),其功能是:将s所指字符串中除了下标为偶数、同时ASCII码值为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。

例如,若s所指字符串中的内容为ABCDEFG12345,其中字符B的ASCII码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCII码值为奇数,所在数组中的下标为偶数,因此不应当删除,其他依次类推。最后t所指的数组中的内容应是ACEG。

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

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

试题程序:

include<conio.h>

include<stdio.h>

include<string.h)

void fun(char *s, char t[])

{

}

main()

{

char s[100],t[100];

clrscr();

printf("\nPlease enter string s:");

scanf("%s",s);

fun(s,t);

printf("\nThe result is: %s\n",t);

}


正确答案:void fun(char *s/char t[]) {int ij=0; for(i=0;s[i]!='\0';i++) {if(i%2==0 && s[i]%2!=0) t[j++]=s[i]; } /*将下标为偶数同时ASCII码值为奇数的字符放入数组t中*/ t[j]='\0'; /*在字符串最后加上结束标志位*/ }
void fun(char *s/char t[]) {int i,j=0; for(i=0;s[i]!='\0';i++) {if(i%2==0 && s[i]%2!=0) t[j++]=s[i]; } /*将下标为偶数同时ASCII码值为奇数的字符放入数组t中*/ t[j]='\0'; /*在字符串最后加上结束标志位*/ } 解析:本题要求除了下标为偶数同时ASCII码值为奇数的字符之外,其他字符都删除。即要留下下标为偶数同时ASCII码值为奇数的字符。所以,在if的条件语句中应使用if(i%2==0&&s[i]%2!=0)。

第7题:

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

第8题:

请补充函数fun(),该函数的功能是:把字符下标为非素数的字符从字符串sb中删除,把字符下标为素数的字符重新保存在字符串e口中。字符串sb从键盘输入,其长度作为参数传入函数fun()。

例如,输入“abcdefghijkl”,输出“cdfhl”。

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

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

试题程序:

include <stdio.h>

define N 80

void fun(char s[],int n)

{

int i, j, k, flag;

【 】;

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

{

if (i>1)

s [k++] =s [i];

flag=I;

for(【 】; j<i&&flag; j++)

if (i%j==0)

{

flag=0;

【 】

}

}

s [k]='\0';

}

main()

{

int i=0, strlen=0;

char str[N];

clrscr ();

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

gets (str);

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

{

strlen++;

i++;

}

fun (str, strlen);

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

puts (str);

}


正确答案:k=0 j=2 k--
k=0 j=2 k-- 解析:第一空:变量k声明时没有初始化,所以要在使用前初始化为0。第二空:如果一个数能被除了1和其自身之外的数整除,即余数为0,则这个数不是素数。所以除数j从2开始取数。第三空:如果当前字符的下标为非素数,则应将此字符删除,所以变量k减1,使下一个字符覆盖它,达到删除的目的。

第9题:

请编写函数fun(),其功能是将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除。字符串中剩余的字符所形成的一个新的字符串放在t所指的数组中。

例如:s所指字符串中的内容为ABCDEFG12345,其中字符A,的ASCII码值虽为奇数,但元素所在的下标为偶数,因此必需删除;字符1的ASCII码值为奇数,所在数组中的下标也为奇数,不删除,最后t所指的数组中的内容应是135。

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

文件test 27_2.cpp的内容如下;

include <conio.h>

include <stdio.h>

include <iostream.h>

include <string.h>

void fun(char *s,char t[ ])

{

}

void main ( )

{

char s[100],t[100];

cout<<"Please enter string S: "<<end1;

gets(s);

fun(s, t);

puts(t);

}


正确答案:void fun(char *schar t[ ]) { int ij=0n; n=strlen(s); for(i=0;in;i++) if(i%2!=0&&s[i]%2!=0) { t[j]=s[i];j++;} t[j]='\0'; }
void fun(char *s,char t[ ]) { int i,j=0,n; n=strlen(s); for(i=0;in;i++) if(i%2!=0&&s[i]%2!=0) { t[j]=s[i];j++;} t[j]='\0'; } 解析:在解答本题时,首先要清楚一点:那就是在字符参与数值运算时,用的是其ASCII码值来进行计算。另外的一个考查点是判断某数是奇数的方法,即判断该数与2的余数是否为0。