你好,那个你说的正确答案也有一个小问题,就是他int i没有初始化为0.
你的两个函数都不太对,我帮你把你的第一个函数稍微改了一下,保持你的初衷。你想返回值,我在主函数里帮你也改了一下,fun函数可以返回值了,因为一开始你第一个函数你将返回值设成了void(无返回值),所以不能返回数组t。
现在这样就好了:
你要运行那个题目给的正确答案就把第一个函数的注释去掉,把第二个函数注释掉就好了,在把主函数main里的两行注释掉的改回来,把最后一行注释掉。第二个函数是我帮你改的你第一个函数:
#include
#include
char t[20]; //声明成全局变量
/*
void fun(char s[],char c)
{
char *p=s;
int i=0;
while(*p)
{
if(*p!=c)
s[i++]=*p;
p++;
}
s[i]='\0';
}
*/
char *fun(char s[],char c)
{
int i,j;
//char t[] = "";
for(i=0,j=0;i
if (s[i]==c)
{ t[j]= s[i+1];
j--;}
else
t[j]=s[i];
}
return t; //用return &(t[0]); 也可以
}
/*
void fun(char s[],char c)
{
int i=0;
while (s[i])
{
if (s[i]==c)
s[i]=s[i++];
else
i++;
}
}*/
main()
{
static char str[]="turbo c and borland c++";
char ch;
printf("原始字符串:%s\n",str);
printf("输入一个字符:");
scanf("%c",&ch);
//fun(str,ch);
//printf("str[]=%s\n",str);
printf("str[]=%s\n", fun(str,ch));
}
前几天刚好帮朋友写过个类似的 贴出来给你参考吧
#include
#include
#include
#include
#define LEN sizeof(struct student)
#define NULL 0
struct student
{ long num;
float english; //结构体定义学生的数据 包括学号 和各科成绩
float math;
float computer;
struct student *next;
};
int n; //全局变量 表示记录学生的个数
struct student *creat(void)
{ struct student *head; //构造函数 链表由head开始 到NULL结束
struct student *p1,*p2; //构造函数接收数据 直到输入的NUM=0
n=0;
p1=p2=(struct student *) malloc(LEN);
cin>>p1->num>>p1->english>>p1->math>>p1->computer;
head=NULL;
while(p1->num!=0)
{
n=n+1;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
p1=(struct student *) malloc(LEN);
cin>>p1->num>>p1->english>>p1->math>>p1->computer;
}
p2->next=NULL;
return(head);
}
void print(struct student *head)
{ struct student *p;
cout<
if(head!=NULL) //输出链表的内容
do
{ cout<
}
while(p!=NULL);
}
struct student *del(struct student *head,long num)
{ struct student *p1,*p2;
if(head==NULL)
p1=head;
while(num!=p1->num&&p1->next!=NULL)
{p2=p1;p1=p1->next; //删除结点 函数 按指定学生学号(num)删除结点
}
if(num==p1->num)
{if(p1==head) head=p1->next;else p2->next=p1->next;
cout<
}
else cout<
return(head);
}
struct student *insert(struct student *head,struct student *std)
{ struct student *p0,*p1,*p2;
p1=head;
p0=(struct student *) malloc(LEN);
p0=std;
if(head==NULL)
else
{ while( (p0->num>p1->num) && (p1->next!=NULL) )
{p2=p1;
p1=p1->next;
}
if(p0->num<=p1->num) //插入结点 函数 在已排序情况下 选择合适位置插入(按学号从小到大)
{if(head==p1) head=p0;
else p2->next=p0;
p0->next=p1;
}
else
}
n=n+1;
return(head);
}
int serch(struct student *head,long serch_num)
{ struct student *p1;
p1=head;
while(p1!=NULL) //寻找指定学号的学生的信息 并输出
{if(p1->num==serch_num)
{ cout<<"学生"<
else p1=p1->next;
}
cout<<"学号"<
}
int std1(struct student *head,long std1_num)
{ struct student *p1;
p1=head;
float total;
float ave;
while(p1->next!=NULL) // 寻找指定学号的学生 输出其总分和平均分
{if(p1->num==std1_num)
{ cout<<"学生"<
ave=total/3;
cout<
}
else p1=p1->next;
}
cout<<"学号"<
}
int total_ave(struct student *head,int std1_chose2)
{ struct student *p1;
float total=0.0;
if(std1_chose2==1)
{for(p1=head;p1!=NULL;p1=p1->next) //求指定科总平均分
total=total+p1->english;
cout<<"英语总平均分为:"<
else if(std1_chose2==2)
{for(p1=head;p1!=NULL;p1=p1->next)
total=total+p1->math;
cout<<"数学总平均分为:"<
else if(std1_chose2==3)
{for(p1=head;p1!=NULL;p1=p1->next)
total=total+p1->computer;
cout<<"计算机总平均分为:"<
}
/*
struct student *paixu(struct student *head)
{ struct student *p1;
int k=n,j;
struct student *a=new struct student[k];
for(j=0,p1=head; j
a[j]=*p1;
for(p1=head;p1!=NULL;p1=p1->next)
del(head,p1->num);
for(j=0 ; j
return(head);
}
*/
void main()
{ struct student *head,std;
cout<<"请根据题目要求,按组输入3名学号,及英语、数学、计算机成绩 回车完毕 输入0 0 0 0结束:"<
print(head);
long del_num;
long serch_num;
long std1_num;
int std1_chose2;
int z,z1;
cout<<"请按数字键选择需要的功能:"<
while(z!=6)
{ if(z==1){
cout<<"输入要插入的学号和成绩(英语 数学 计算机):"<
head=insert(head,&std);
print(head);
cout<
if(z==2){
cout<<"请输入要搜索的学号:"<
cout<
if(z==3){
cout<<"请输入要删除的学号"<
cout<
if(z==4){
cout<<"输入需要的功能"<
{ if(z1==1){
cout<<"请输入学号:"<
cout<
if(z1==2)
{
cout<<"请输入数字选择要统计平均分的科目:(输入1.英语 2.数学 3.计算机)"<
total_ave(head,std1_chose2);
}
}
}
if(z==5)
cout<<"请按数字键选择需要的功能:"<
}
}
100分诶 开玩笑~
不用加return
还可以这样写
#include
#include
void fun(char s[ ],char c)
{
char *p=s;
while (*p++)
if (c==*p)strcpy(p,p+1);
}
main()
{
static char str[ ]="turbo c and borland c++";
char ch;
printf("原始字符串:%s\n",str);
printf("输入一个字符:");
scanf("%c",&ch);
fun(str,ch);
printf("str[ ]=%s\n",str);
}
=====================================
你定义了void 所以不需要改变
你的函数改变的是参数s[] 所以不需要返回 看来你要在看看指针和数组这块
=========================================
很遗憾 你写的两个都错了 而且都是逻辑错误
void fun() 中返回值是void 肯定不用返回的,要返回可以用指针函数 如:
char *fun(char s[],char c) 它的返回值是一个指向字符的指针,可以用来返回数组t[]的首地址