根据用户输入的匹配字符串,显示所有相匹配(包含该串)的编程语言。

题目:现有如下计算机编程语言列表:
C
C++
Python
Java
Basic
C#
PHP
javascript (第一个j是大写J,这里显示有问题)
SQL
Ruby
Matlab
Go
Perl
R
Fortran
Pascal
Swift

请你根据用户输入的匹配字符串,显示所有相匹配(包含该串)的编程语言。
例如:输入"Ba",显示"Basic";输入"C",显示"C", "C++", "C#"。
我的代码:

#include
#include

int main(){
    char search(char *a);
    char a[100]={0};
    gets(a);
    search(a);
    return 0;}
char search(char *a){
char b[17][100]={{"C"},{"C++"},{"Python"},{"Java"},{"Basic"},{"C#"},{"PHP"},{"Javascript"},{"SQL"},{"Ruby"},{"Matlab"},{"Go"},{"Perl"},{"R"},{"Fortran"},{"Pascal"},{"Swift"}};
    int len=0,j=0,k=0,m=0;
    while(a[len]!='\0')len++;
    for(int i=0;i<17;i++){
    k=0;
        for(j=0;;j++){
            if(a[j]=='\0')break;
            if(a[j]==b[i][j])k++;    }
        if(k==len) printf("%s\n",b[i]);}
    return 0;}

我调试的结果都是对的 为什么在oj上没有输出结果?

代码没问题,但 search 的返回值是char,你却return 0,不对,但不影响结果。
另外,题目里“包含该串”。可否不在首位?比如 abcdef 包含 bc
是否区分大小写?

这么改试试,供参考:

#include <stdio.h>
//#include <>
int main()
{
    void search(char *a); //char search(char *a);
    char a[100]={0};
    gets(a);
    search(a);
    return 0;
}
void search(char *a)  //char search(char *a)
{
    char b[17][20]={{"C"},{"C++"},{"Python"},{"Java"},
                    {"Basic"},{"C#"},{"PHP"},{"Javascript"},
                    {"SQL"},{"Ruby"},{"Matlab"},{"Go"},{"Perl"},
                    {"R"},{"Fortran"},{"Pascal"},{"Swift"}};
    int len=0,j=0,k=0,m=0;
    while(a[len]!='\0')len++;
    for(int i=0;i<17;i++)
    {
        k=0;
        for(j=0;a[j] && b[i][j];j++)
            if(a[j]==b[i][j])k++;
        if(k == len) printf("%s\n",b[i]);
    }
    return; //return 0;
}

for(j=0;a[j] && b[i][j];j++) 这一步改的不对,改了之后结果都错了,把函数改成void也没用,oj上正确率还是40%,错误的测例显示我都没有输出