题目:现有如下计算机编程语言列表:
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%,错误的测例显示我都没有输出