题目如下:
本人的代码:
#include <iostream>
#include <cstring>
using namespace std;
int str_length(char *s);
void main()
{
char str[139];
int num;
cout<<“please input a string:\n”;
cin.getline(str,129);
num=str_length(str);
cout<<num<<endl;
}
int str_length(char *s)
{
char *ptr1,*ptr2;
int num=0,temp,leng=strlen(s);
if(s==NULL)
{
return 0;
}
else
{
ptr1=s;
ptr2=NULL;
while(ptr1!=NULL&&(ptr1-s)<leng) //若ptr1跑出s,则prt1-s大于等于leng
{
temp=0;
if(*ptr1!=” “)
{
ptr2=ptr1;
while((*ptr2)!=” “&&(ptr2-s)<leng)
{
temp++;
ptr2++;
}
ptr1=ptr2;
}
if(temp!=0)
{
num=temp; //
}
ptr1++;
}
return num;
}
}
本人在vs上运行可以出来正确结果,但是显示程序测试用例未完全通过,帮看看本人忽略了哪些情况。
本人的代码:
#include <iostream>
#include <cstring>
using namespace std;
int str_length(char *s);
void main()
{
char str[139];
int num;
cout<<“please input a string:\n”;
cin.getline(str,129);
num=str_length(str);
cout<<num<<endl;
}
int str_length(char *s)
{
char *ptr1,*ptr2;
int num=0,temp,leng=strlen(s);
if(s==NULL)
{
return 0;
}
else
{
ptr1=s;
ptr2=NULL;
while(ptr1!=NULL&&(ptr1-s)<leng) //若ptr1跑出s,则prt1-s大于等于leng
{
temp=0;
if(*ptr1!=” “)
{
ptr2=ptr1;
while((*ptr2)!=” “&&(ptr2-s)<leng)
{
temp++;
ptr2++;
}
ptr1=ptr2;
}
if(temp!=0)
{
num=temp; //
}
ptr1++;
}
return num;
}
}
本人在vs上运行可以出来正确结果,但是显示程序测试用例未完全通过,帮看看本人忽略了哪些情况。
解决方案
20
本人就想知道
from 1 to 100
这种应该返回几
this is a serial number ASDF_GHJK_QWER_TYUI_ZXCV
这种应该返回几
this is a password !QAZ2wsx#EDC
这种应该返回几
from 1 to 100
这种应该返回几
this is a serial number ASDF_GHJK_QWER_TYUI_ZXCV
这种应该返回几
this is a password !QAZ2wsx#EDC
这种应该返回几