最后的魁拔 发表于 2020-1-15 09:57:07

查找指定字符 (15分)


希望各位大佬看看缺陷在哪里,也希望各位大佬能给出自己的答案{:5_101:}
输入格式:
输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。

输出格式:
如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。

输入样例1:
m
programming

输出样例1:
index = 7

输入样例2:
a
1234

输出样例2:
Not Found
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char c;
    int x=0;
    int index=-1;
    char m;
    scanf("%c",&c);
    getchar();
    scanf("%c",&m);
    if(m==c)
    {
      index = 0;
      
    }

    while(m!='\n')
    {
      x++;
      scanf("%c",&m);
      {
            if(c==m)
            {
                index = x;
                break;
            }
      }
    }
    if(index<0)
    {
      printf("Not Found\n");
    }
    else
    {
      printf("index = %d\n",index);
    }

    system("pause");
    return 0;
}

人造人 发表于 2020-1-15 10:23:43

你刷这些题为了什么?考试?
如果是考试,我不说你什么

如果不是考试,那你刷这类题就是浪费时间
不如去学习更多的编程语言,像汇编语言,python,java,还有C++,如果你想学php,web开发也没关系
学了这么多编程语言后你就可以找到这些语言共同的东西,得到了这些东西,你就可以以不变应万变
在学习其他语言的同时也可以提高你的编程思维

还有一点,学会调试
再说一次,调试很重要,一定要学会调试,你不能总是指望别人帮你调试吧?
一直指望别人帮你调试也不是个事吧

再说一次,调试很重要

最后的魁拔 发表于 2020-1-15 10:30:14

人造人 发表于 2020-1-15 10:23
你刷这些题为了什么?考试?
如果是考试,我不说你什么



刷题不是为了更好的运用所学到的吗?

人造人 发表于 2020-1-15 10:41:55

最后的魁拔 发表于 2020-1-15 10:30
刷题不是为了更好的运用所学到的吗?

反正刷题不是我的学习方法,如果你认为刷题适合你的学习方法,我也不说你什么
但是,那你也要学会调试呀

如果说,你不认可我说的,刷题浪费时间这句话,我认,因为不同的人有不同的学习方法这件事我是同意的
但是,你得承认调试很重要,一定要学会调试
并不是说哪里有调试教程,看一遍就学会了,是要不断的调试,不断的总结调试的方法,不断的改进调试的方法,慢慢的提高调试的能力

不会高级的反汇编,查看C语言对应的汇编语言如何执行没关系,先从简单的下断点,单步步入,单步步过开始学

最后的魁拔 发表于 2020-1-15 10:49:13

人造人 发表于 2020-1-15 10:41
反正刷题不是我的学习方法,如果你认为刷题适合你的学习方法,我也不说你什么
但是,那你也要学会调试呀 ...

好的,谢谢了

人造人 发表于 2020-1-15 10:50:20

调试真的很重要,用眼睛看只能解决一些非常低级的错误
一定要学会调试,因为你不能指望让别人一直帮你调试,请问有谁愿意呢?站在你自己的角度想一想,你愿意一直帮别人调试程序?
我只做对自己有提升的事,当然有时候看到一些有意思的问题,我也会帮忙,所以你估计是指望不上我帮你调试了,除非你能提出一些有意思的问题,或者有深度的问题,对我用提升的问题

调试真的很重要,用于解决 用眼睛盯着代码看 解决不了的问题

sunrise085 发表于 2020-1-15 10:53:07

本帖最后由 sunrise085 于 2020-1-15 10:54 编辑

不可否认多刷题练习的确能够更好的掌握。但是那也是要自己做才行啊,仅仅是看别人写代码效果会大打折扣。
你的提问特别的多,而且很大一部分提问没有任何含金量,简单地调试一下就可以搞定的你都拿来提问。。。
不知这应该说你懒,还是说你学习方法有水分。
人造人说的很对,你要学会自己调试。
不管你提出什么问题,很多人看到还是会回答的,为了赚分嘛,大部分人不会关心对你的学习是否有帮助。

这次继续帮你修改,不过还是希望能够自己多多调试,对你自己的学习有帮助。
你的这个程序中,没有体现不超过80字符,while循环没有查找到字符串的最后,找到一个就break了,所以你找到的index不一定是最大下标。
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char c;
    int x=1;
    int index=-1;
    char m;
    scanf("%c",&c);
    getchar();
    scanf("%c",&m);
    if(m==c)
      index = 0;

    while(m!='\n' &&x<80)
    {
      scanf("%c",&m);
      if(c==m)
            index = x;
      x++;
    }
    if(index<0)
      printf("Not Found\n");
    else
      printf("index = %d\n",index);
    system("pause");
    return 0;
}

人造人 发表于 2020-1-15 10:56:00

sunrise085 发表于 2020-1-15 10:53
不可否认多刷题练习的确能够更好的掌握。但是那也是要自己做才行啊,仅仅是看别人写代码效果会大打折扣。
...

说真的,等你做的这类事件多了,你会烦的,真的
因为当初我和你差不多吧
^_^

最后的魁拔 发表于 2020-1-15 11:00:29

sunrise085 发表于 2020-1-15 10:53
不可否认多刷题练习的确能够更好的掌握。但是那也是要自己做才行啊,仅仅是看别人写代码效果会大打折扣。
...

这个就是我自己做的

人造人 发表于 2020-1-15 11:03:00

最后的魁拔 发表于 2020-1-15 11:00
这个就是我自己做的

做不对和不是你做的有区别吗?有多大的区别?
还是要强调,调试很重要

sunrise085 发表于 2020-1-15 11:03:02

人造人 发表于 2020-1-15 10:56
说真的,等你做的这类事件多了,你会烦的,真的
因为当初我和你差不多吧
^_^

淡定淡定。
不去看不去管,就可以了嘛~~键盘在别人手上,不违规、不违法。你是管不了的。
网络时代,充斥着太多的冗余信息。不必过多理会。
对于这个论坛上的很多浅显的提问,想答就答,不想答就当做没看到,略过去得了。
你实在没必要在这里谆谆教诲,他未必会听,你还徒惹自己不高兴。
划不来,划不来~~

最后的魁拔 发表于 2020-1-15 11:04:27

人造人 发表于 2020-1-15 11:03
做不对和不是你做的有区别吗?有多大的区别?
还是要强调,调试很重要

好的谢谢

人造人 发表于 2020-1-15 11:07:18

sunrise085 发表于 2020-1-15 11:03
淡定淡定。
不去看不去管,就可以了嘛~~键盘在别人手上,不违规、不违法。你是管不了的。
网络时代,充 ...

我认为,授人以鱼不如授人以渔
教他渔总比给他鱼好吧?

sunrise085 发表于 2020-1-15 11:08:21

最后的魁拔 发表于 2020-1-15 11:00
这个就是我自己做的

没说这个不是你做的,你这没有做出正确结果,然后来提问,别人给出答案,这还能称之为是你做出来的吗?
自己多尝试,多调试。自己修改代码。最终得到完美的结果时,才算是你自己做的了

最后的魁拔 发表于 2020-1-15 11:12:28

sunrise085 发表于 2020-1-15 11:08
没说这个不是你做的,你这没有做出正确结果,然后来提问,别人给出答案,这还能称之为是你做出来的吗?
...

好的谢谢了

sunrise085 发表于 2020-1-15 11:12:59

人造人 发表于 2020-1-15 11:07
我认为,授人以鱼不如授人以渔
教他渔总比给他鱼好吧?

嗯嗯,对的!
授人以鱼不如授人以渔~
有人不愿意学渔,只愿意拿鱼,你也没办法。
再者,其实这些简单的问题存在于论坛上还是有一定作用的。很多新手在学习的时候自己发现不了这么多问题,然后看看别人的提问,自己也能提高一下~
我是很同意你的观点的。咱俩就不争论这个事儿了~~
页: [1]
查看完整版本: 查找指定字符 (15分)