代码求解,拜托了,大神抱大腿

问题描述

代码求解,拜托了,大神抱大腿

include

define N 100

void squeeze(char s1[],char s2[]);
int main()
{
char s1[];
char s2[];
printf("请输入两个字符串n");
gets(s1);
gets(s2);
squeeze(s1,s2);
printf("%s",s1);
return 0;
}
void squeeze(char s1[],char s2[])
{
int i,j,k;
k=0;
for(i=0;s1[i]!='';i++)
for(j=0;s2[j]!='';j++)
{
if (s1[i]!=s2[j])
s1[k]=s1[i];
k++;
}
}
请大神解答一下这串代码错哪了,这串代码是为了实现将s1,s2两个字符串中相同的元素去掉后输出s1

解决方案

您的【k++】放的位置不对,应该将它放在它下面那个【 } 】下面

解决方案二:

哦,也不对,应该把它放在那个【i++,】的后面也可以,即第一个for循环里面。

解决方案三:

楼主,你两个FOR循环出了问题。你的FOR循环是,只要发现s1中的一个字符与s2中的任意一个字符不同,就会保存到s1中。
我帮你改过来了。如果没看懂,请留言。

 #include <stdio.h>
#include <string.h>
#define N 100
void squeeze(char s1[],char s2[]);
int main()
{
    char s1[N];
    char s2[N];
    printf("请输入两个字符串n");
    gets(s1);
    gets(s2);
    squeeze(s1,s2);
    printf("%sn",s1);
    return 0;
}
void squeeze(char s1[],char s2[])
{
    int i,j,k;
    k=0;
    for(i=0;s1[i]!='';i++)
    {
        for(j=0;s2[j]!='';j++)
        {
            if (s1[i]==s2[j])
                break;
        }
        if(s2[j]=='')
            s1[k++]=s1[i];

    }
    s1[k]=''; 

}

解决方案四:

首先,数组s1和s2连数组大小都没有....
然后,squeeze函数写错了。我看你的代码,大概思路是对s1的每个元素都判断一遍s2中是否存在相同元素,如果不存在,就保留这个元素。
但是!但是,你应该等到s2数组遍历完了以后才能判断有没有相同元素啊,你这里一旦s1【i】!=s2【j】,立马就判断是不存在相同元素了。
附上我改过之后的squeeze的函数:
void squeeze(char s1[],char s2[])
{
for(int i=0;s1[i]!='';i++)
{
int flag=0;
for(int j=0;s2[j]!='';j++)
if (s1[i]==s2[j])
flag=1;
if(flag)
{
int k=i;
while(s1[k]!='')
{
s1[k]=s1[k+1];
k++;
}
}
}
}

解决方案五:

k一直指着中间结果s1的最后一个元素

for(i=0; s1[i]!=''; i++){
            for(j=0; s2[j]!=''; j++)
            {
                if(s1[i] == s2[j]){
                    break;
                }
            }
            //s1[i]不在s2中
            if(s2[j] == 'n'){
                s1[k] = s1[i];
                k++;
            }
        }
        s1[k] = ''

s1 : [1,2,3,4]
s2 : [0,2,4,5]

i=k = 0,由于s1[0]=1不在s2中,所以i,k都得加1,
i=j=1,由于s1[1]=2不在s2中,所以i++,k不变(k标志着结果s1的最后一个元素)
i=2,j=1,s1[2]=3,不存在,所以s1[k]=s[i]=3; i,j都加1
依次运算下去

解决方案六:

对了楼主,我和好奇,您那个【s1】和【s2】数组的大小都没有固定,是如何通过编译器的?

时间: 2024-09-25 23:36:36

代码求解,拜托了,大神抱大腿的相关文章

php加一句如果在数据库里没某条记录,则显示提示消息。判断语句应该怎么改?求大神抱大腿!

问题描述 php加一句如果在数据库里没某条记录,则显示提示消息.判断语句应该怎么改?求大神抱大腿! function xuesheng(){ $c=M('case')->field('id')->where(""upid=5 and state=1"")->findAll(); foreach($c as $k => $v){ $caseid[]=$v['id']; } $wherecase="" and cid in (

easy-遇到一个关于键盘控制小球移动的问题,求解教~对大神应该很简单

问题描述 遇到一个关于键盘控制小球移动的问题,求解教~对大神应该很简单 #include #include #include #include #include #include struct BALL { int x; int y; int speed; int number; int style; }; char pr[1],scorepointer[3],ch; float d; int add=10,score=0; BALL Ball[10]; struct Smile { int x

图片-拜托各位大神看下,有个报错空指针,试了一天了。诶~。~、、

问题描述 拜托各位大神看下,有个报错空指针,试了一天了.诶~.~.. 代码白底处便是50行. 解决方案 解决方案二: 表示大神都不知道,b=null 解决方案三: getIntent().getExtras()返回的对象可能为空.在b为null时,调用getString方法会报空指针异常. 改为以下代码即可: Bundle b = getIntent().getExtras(); if( b != null) String str = b.getString("FILE_PATH");

.net开发相关问题(文件上传,拜托各位大神帮忙解答,错误报告如下)

问题描述 报出找不到文件路径的错误!代码错误已经定位在了标红的代码处:HomeController.csif(!HasFiles.HasFile(Request.Files[upload]))continue;stringminiType=Request.Files[upload].ContentType;StreamfileStream=Request.Files[upload].InputStream;stringpath=AppDomain.CurrentDomain.BaseDirect

sql-ASP读取SQL数据表 生成多记录JSON 具体代码如何写 求教大神

问题描述 ASP读取SQL数据表 生成多记录JSON 具体代码如何写 求教大神 数据表是user 主键是m_Name <%response.ContentType=""text/json"" response.write request(""jsoncallback"")%>([{""m_Name"":""*依旧""n_Name&quo

java利用QQ邮件服务器发邮件的代码 谁有 各位大神谢谢了

问题描述 java利用QQ邮件服务器发邮件的代码 谁有 各位大神谢谢了 ...................................................................... 解决方案 //发送邮件 try { Properties prop = new Properties(); //设置服务器地址 prop.put("mail.smtp.host", "smtp.qq.com"); //设置需要身份验证 prop.put(&

c++-C#与C++位图保存方式的区别是什么?如何将C#中位图buffer正确传到C++代码中?求大神指导

问题描述 C#与C++位图保存方式的区别是什么?如何将C#中位图buffer正确传到C++代码中?求大神指导 C#中位图保存方式与C++中位图保存方式的区别是什么?如何将C#中位图buffer正确传到C++代码中?求大神指导 解决方案 C++中位图分为32/24/16位的三种位图数据存储方式,很多时候C++中主要使用32位和24位,如果你没有特别声明的话.C#中的位图 也多数是32位的.这些所谓的32位或者24位说的是位图中一个像素用多少位来表示,一个像素一般包含RGB三基色,也就是红(red)

计算机-求修复图像论文的代码。有没有大神愿意来露两手。

问题描述 求修复图像论文的代码.有没有大神愿意来露两手. 计算机-求修复图像论文的代码.有没有大神愿意来露两手.-为什么大神不愿意帮你"> 解决方案 google scholar里面搜索inpaint,大量的论文 解决方案二: 我也是做图像修复的,这方面的代码感觉几乎找不到,崩溃中...不知道你进展如何了,找到了吗

java学生信息管理系统在删除信息的时候遇到了问题,代码如下,求大神。

问题描述 java学生信息管理系统在删除信息的时候遇到了问题,代码如下,求大神. 这是代码 主类 public class Main { public static void main(String[] args) throws FileNotFoundException { int i = 0; Manage m=new Manage(); Scanner sc=new Scanner(System.in); ArrayList List=new ArrayList<Student>();