求助高手C语言····

[复制链接]
查看11 | 回复2 | 2010-12-2 15:46:46 | 显示全部楼层 |阅读模式
5.下列程序输出的结果是(
)。
#include
voiddel( char*str )
{
inta, b ;
for(a = b = 0 ; str[a]!='\0'; a++ )
if(*(str+a)!='c’)
*(str+b++)=*(str+a);
str='\0';
}
void main( )
{
charstr[] ="abcdef" ;
del(str);
printf("str[ ]=%s " , str );
}
提示:在函数del中str+a地址上的内容不为字符’c’时不复制,实际上是指删除指针str所指的字符串中的字符’c’。
6.以下程序输出的结果是(
)。
#include
#include
voidfun( char*w ,intm)
{
chars, *p1 , *p2;
p1 = w;
p2= w+m-1;
while(p1
void main()
{
inta[3][3] = {{2,0,8},{4},{6}};
inti,*p = &a[0][0];
for(i = 0;ia[mid])

(3)
;
else

(4) ;
}
return(-1);
}

提示:用low、high、mid分别表示数组a低地址端、高地址端、中间元素的下标,只要低地址端下标小于高地址端下标循环一直持续,如果中间元素大于所查找的数,表示所查找的数在以low、high为边界的左侧,如果中间元素小于所查找的数,表示所查找的数在以low、high为边界的右侧,如都不是表示已找到。
9.下述函数从一个数组v中删除值为key的元素。数组的元素个数由指针n指明,请填空。
voiddelnode(doublev[],int *n)
{int i,j,k=-1;
for(i=
(1)
;
(2)
;i--)
if(v==key)
{
k++;

for(j=i; (3)
;j++)

v[j]=v[j+1];
}
if(k>=0)
*n=
(4)

}
提示:由于在第1个for循环中为i--,因而循环一定是从数组下标最大的元素*n-1开始,循环的条件是i>=0,如果找到要删除的元素,后面的元素依次向前移,一直移到最后v[*n-1],k标记删除的次数,*n存放最后数组中元素的个数。

回复

使用道具 举报

千问 | 2010-12-2 15:46:46 | 显示全部楼层
5,if(*(str+a)!='c’) c后面应该是英文符号结果是:abdef6,AGAAGAG7,2388,1:low=03:j<*n4:*n-k
回复

使用道具 举报

千问 | 2010-12-2 15:46:46 | 显示全部楼层
5.输出abdef
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行