| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 507 人关注过本帖
标题:[求助]一个数组小程序的错误
只看楼主 加入收藏
knightman
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-9-2
收藏
 问题点数:0 回复次数:8 
[求助]一个数组小程序的错误

#include <stdio.h>
string_cut(char string[],char a)
{ int i,j;
for(i=0;i<9;i++)
if(string[i]=='f')
{for(j=0;j<9;j++)
string[j]=string[j+1];}
}
main(){
char array[9],ch='f';
array[9]={'a','b','c','d','e','a','f','f','e'};
string_cut(array[9],'f')
printf("%s\n",array);
}
高手帮忙找下这个程序的错误~谢谢

[此贴子已经被作者于2007-9-4 15:36:17编辑过]

2007-09-04 15:15
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

#include <stdio.h>
string_cut(char string[],char a)
{ int i,j;
for(i=0;i<9;i++)
if(string[i]==a)//这里
{for(j=0;j<9;j++)
string[j]=string[j+1];}
}
main(){
char array[9]={'a','b','c','d','e','a','f','f','e'};//数组初始化
string_cut(array,'f');//函数参数调用
printf("%s\n",array);
}

函数的功能应该是删除某一个字符,做这项工作只需要一层循环的.那就是


void string_cut(char string[],char a)
{ int i,count=0,flag;
for(i=0;i<9-count;i++)
{
flag=0;//设置A出现的标记
if(string[i]==a)
{
count++;//计数器
flag=1;
}
string[i]=string[i+count];//移动
if(flag)i--;//重新判断string[i]
}
string[9-count]='\0';//没有这个,输出可能有乱码.
}





倚天照海花无数,流水高山心自知。
2007-09-04 15:44
闭关修炼
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-8-24
收藏
得分:0 
........................

努力努力再努力~!!!!!!
2007-09-04 16:38
zzxwill
Rank: 1
等 级:新手上路
帖 子:398
专家分:0
注 册:2007-8-15
收藏
得分:0 

char array[9],ch='f';
array[9]={'a','b','c','d','e','a','f','f','e'};
首先数组初始化不能在字符或int ,float等后面。必须改为:
char array[9]={'a','b','c','d','e','a','f','f','e'},ch='f';


下面是我编的一个:
#include <stdio.h>
#include<string.h>
main()
{
char array[9]={'a','b','c','d','e','a','f','f','e'},ch='f';
int i,j;
char b[80];
j=0;

for(i=0;i<9;i++){
if(array[i]!='f'){
b[j++]=array[i];
}
}
b[j]='\0';
puts(b);
}



一分耕耘,一分收获。
2007-09-04 17:00
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用zzxwill在2007-9-4 17:00:44的发言:

char array[9],ch='f';
array[9]={'a','b','c','d','e','a','f','f','e'};
首先数组初始化不能在字符或int ,float等后面。必须改为:
//应该是对数组的初始化只能在定义的时候完成.
char array[9]={'a','b','c','d','e','a','f','f','e'},ch='f';


下面是我编的一个:
#include <stdio.h>
#include<string.h>
main()
{
char array[9]={'a','b','c','d','e','a','f','f','e'},ch='f';
int i,j;
char b[80];
j=0;

for(i=0;i<9;i++){
if(array[i]!='f'){
b[j++]=array[i];
}
}
b[j]='\0';
puts(b);//这里多用个数组,很好,其实你还不如直接输出来的好.
}



倚天照海花无数,流水高山心自知。
2007-09-04 21:02
knightman
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-9-2
收藏
得分:0 

2楼的版主,你的程序完全正确,不过我想提个问题:

void string_cut(char string[],char a)
{ int i,count=0,flag;
for(i=0;i<9-count;i++)
{
flag=0;//设置A出现的标记
if(string[i]==a)
{
count++;//计数器
flag=1;
}
string[i]=string[i+count];//移动
if(flag)i--;//重新判断string[i]
}
string[9-count]='\0';//没有这个,输出可能有乱码.
}
这个函数里面最后一个语句string[9-count]='\0'; 我给出的数组里面有2个‘f’,按说 你最后一个语句 应该运行2次,好像是只运行了一次吧,这是怎么回事??

2007-09-04 23:38
knightman
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-9-2
收藏
得分:0 
3楼和4楼的朋友~你们的算法是对的,不过也可能是我疏忽了,我要求是编写函数来写算法的,还是谢谢你们,大家一起再接再厉
2007-09-04 23:42
knightman
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-9-2
收藏
得分:0 
回复:(nuciewth)#include string_c...

谢谢版主的帮助,您的程序我运行过了,是正确的,不过我还想提个问题:
void string_cut(char string[],char a)
{ int i,count=0,flag;
for(i=0;i<9-count;i++)
{
flag=0;
if(string[i]==a)
{
count++;
flag=1;
}
string[i]=string[i+count];
if(flag)i--;
}
string[9-count]='\0';
}
您写的这个函数,最后一句 string[9-count]='\0'; 我给出的数组里有2个‘f’,按说是应该 运行2次, 但貌似是只运行了一次吧~ 这是怎么回事?? 希望解释下~谢谢

2007-09-04 23:46
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
count在记数的时候已经把每次碰到的f记录下来,所以每次移位是移动了count位.
我采取的是"动态移位",而你的是每次总是全部移动.再去做下一步.
string[9-count]='\0';这句本来就是运行一次啊.

倚天照海花无数,流水高山心自知。
2007-09-05 23:57
快速回复:[求助]一个数组小程序的错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016962 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved