计算机二级

下列函数从字符数组s[]中删除和c一样的字符,请在下面横线处填空。 void delete(s,C)char s[],c; {int i,j; for(i=j=0;( );i++) if(s[i]!='c') s[j++]=s[i]; s[j]="\0";}

题目

下列函数从字符数组s[]中删除和c一样的字符,请在下面横线处填空。 void delete(s,C)char s[],c; {int i,j; for(i=j=0;( );i++) if(s[i]!='c') s[j++]=s[i]; s[j]="\0";}

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

第1题:

删除字符:输入一个字符串s,再输入一个单个字符c,将字符串中所有的c字符删除后输出该字符串。要求定义和调用函数delchar(char *s,char c),该函数将字符串s中出现的所有c字符删除。编写相应程序。


可用cin.get() 或者 getchar()

第2题:

下面函数的功能是 。 void (char *s1, char *s2) { while(*s2++==*s1++); }

A.字符串反向

B.字符串比较

C.字符串连接

D.字符串复制


A

第3题:

下面函数的功能是 。 void (char *s1, char *s2) { while(*s2++=*s1++); }

A.字符串反向

B.字符串比较

C.字符串连接

D.字符串复制


A

第4题:

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

[说明1]

函数void fun(char*w,char x,int*n)用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。

[C函数1]

void fun(char*W,char x,int*n)

{ int i,P;

p=0;

w[*n]=x;

while(x>w[p]) (1) ;

for(i=*n,i>p;i--)w[i]=(2);

w[p]=x;

++*n;

}

[说明2]

函数void revstr(char*s)将字符串s逆置。例如:字符串“abcde”,经过逆置后变为“edcba”。

[C函数2]

void revstr(char*s)

{ char*p,c;

if(s==NULL)return;

p=(3); /*p指向字符串s的最后一个有效字符*/

while(s<p){ /*交换并移动指针*/

C=*s;

(4)=*p;

(5)=c;

}

}


正确答案:(1) p++ (2) w[i-1] (3) s+strlen(s)-1 (4) *s++或*(s++) (5) *p-或*(p--)
(1) p++ (2) w[i-1] (3) s+strlen(s)-1 (4) *s++或*(s++) (5) *p-或*(p--) 解析:函数1的fun()中的while循环是为了找到x的插入位置,因此(1)填“p++”,for循环是移动数组中的元素,因此(2)填“w[i-1]”。
对于函数2,设字符串的长度为n,则该函数的思想为将*(s+j)与*(s+n-1+i)对换,i=0....n/2。采用指针来实现,s为起始地址,p定位为最后一个字符的位置,所以空(3)应填“s+strlen(s)-1”;采用*s与*p交换后为s++与P--。即空(4)填“*s++”或“*(s++)”,空(5)填“*p-”或“*(p--)”。

第5题:

标准库函数fgets(s,n,file)的功能是( )。A.从文件file中读取长度为n的字符串存入字符数组S由S

标准库函数fgets(s,n,file)的功能是( )。

A.从文件file中读取长度为n的字符串存入字符数组S由

B.从文件file中读取长度不超过n-1个字符的字符串放到字符数组S中

C.从文件file中读到n个字符串存入字符数组s中

D.从文件file中读取长度为n-1个字符的字符串存人字符数组s中


正确答案:B
本题考查fgets()函数的使用调用形式:fgets(S,n,fp)。fgets函数参数说明:“s”可以是一个字符数组名,也可以是指向字符串的指针;“n”为要读取的最多的字符个数;“fp”是指向该文件型指针。fgets函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组s中,读入字符串后会自动在字符串末尾加入″\0″结束符。表示字符串结束。

第6题:

以下函数的功能是删除字符串s中的所有数字字符,请填空。void dele(char *s){ int n=0,i;for(i=0; s[i];i++)if()s[n++]=s[i];s[n]=;}


正确答案:(s[i]<48)&&(s[i]>57),’\0’
在本题中,dele函数的功能是删除字符串s中所有的数字字符。删除字符串中的数字字符,首先要求我们能判断出字符串中哪些是数字字符,哪些是非数字字符。在C语言中,一般通过字符的ASCII码来判断,由于C语言中数字字符只有0~9,它们对应的ASCII码值范围是48~57,那么字符串中ASCII码值在48~57范围内的字符就是数字字符,否则就是非数字字符。
在本题程序中,dele函数带有一个指针类型的形参,该指针变量指向需要操作的字符串,在循环体中,根据前面的分析,if语言的条件判断语句应该是判定当前所取字符是否为数字字符,从后面的程序分析可以知道,条件结果若为真,即保存当前字符串,说明当前字符为非数字字符,那么用表达式表示应该为(s[i]<48)&&(s[i]>57),当然,这个结果不是唯一的。
循环结束后,程序执行第14空所在的程序语句,这个时候获得的字符串是一个去除了数字字符的字符串,我们不难发现这个时候数组的下标n指向所有元素的后一个元素,按照字符串存储的规定,在结束后需要一个结束标识符‘\0’,而本题中正好缺少这样一个标识符,因此,第14空的作用是为新字符串添加结束标识符‘\0’,答案为‘\0’。

第7题:

以下函数的功能是删除字符串s中的所有数字字符。请填空。

void dele (char *s)

{

int n=O;

for(i=0;s[i];i++)

{

if(【 】)

s[n++]=s[i];

}

s[n]= '\0';

}


正确答案:s[i]'0'||s[i]>'9'
s[i]'0'||s[i]>'9' 解析:从一个字符串中删除某个字符的方法是从字符串的第1个字符开始一一判断该字符是否是要删除的字符,若不是,则把它放到结果字符串中;若是,则不放入结果字符串中。由此可知,本题空白处应判断s[i]是否为数字字符,只有在不是数字字符的情况下才存入结果字符串中,所以应填入:s[i]'0'||s[i]>'9'。最后应在结果字符串的末尾加上字符结束标识符'\0'。

第8题:

以下函数的功能是删除字符串s中的所有数字字符,请填空。void dele(char *s){ int n=0,i; for(i=0;s[i];i++) if() s[n++]=s[i]; s[n]=;}


正确答案:s[i]<’0’‖s[i]>’9’ 或 !(*s+i)>=’0’&&*(s+i)<=9
        ’\0’或0或NULL
将不是数字字符的数组元素赋给s,最后一个字符为0.

第9题:

下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。

#include <stdio.h>

main ()

{ int i; char? s[21],*p;

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

s[i]=getchar ();

s[i]=【6】;

p =【7】

while (*p)putchar? (【8】);

}


正确答案:
'\0';s;*p++