上机课问题26-33

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

求字符串长度

Time Limit:1000MS Memory Limit:65536K

Total Submit:500 Accepted:374

Description

求一个长度不大于100的字符串的长度,要求不使用strlen方法,通过自定义的函数实现字符串长度的计算。

函数定义为:int GetStrLen(char *pStr)

Input

一行字符串,使用gets(str)方法读取此行字符串。

Output

输出只有一行,只包含一个整数,表示字符串的长度。

Sample Input

I love Beijing.

Sample Output

15

Sample Result:

Source # include

int main()

{

char str[100],*p;

void GetStrlen(char *pStr);

scanf("%s",str);

p=str;

GetStrlen(p);

printf("\n");

}

void GetStrlen(char *pStr)

{

int count=0;

while(*pStr='\0')

{

count++;

pStr++;

}

printf("%d",count);

POJ:2681

忽略大小写比较字符串大小

Time Limit:1000MS Memory Limit:65536K

Total Submit:648 Accepted:220

Description

一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到 0

为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如“Hello”和“hello”,在忽略字母大小写时是相等的。请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。

要求用一个自定义函数实现忽略大小写的比较过程,用函数的返回值表示比较的结果:若返回值为0表示两个字符串相等;若返回值为1表示第一个字符串比第二个字符串大;若返回值为-1表示第一个字符串比第二个字符串小。

函数定义为:int MyStrCmp(char *pStr1,char *pStr2)

Input

输入数据共有两行,每行一个字符串,字符串中可能包含空格和其它非字母字符,并且每个字符串长度都不超过80个字符。

Output

如果第一个字符串比第二个字符串小,输出一个字符“<”;

如果第一个字符串比第二个字符串大,输出一个字符“>”;

如果两个字符串相等,输出一个字符“=”。

Sample Input # include

# include

int main()

int n;

int MyStrCmp(char*pStr1,char*pStr2);

char str1[81],str2[81],*p1,*p2;

gets(str1);

gets(str2);

p1=str1;

p2=str2;

n=MyStrCmp(str1,str2);

if(n==0)

printf("=");

if(n==1)

printf(">");

if(n==-1)

printf("<");

}

int MyStrCmp(char*pStr1,char *pStr2)

{

int count,i;

while(*pStr1!='\0'&&*pStr2!='\0')

{

if(((*pStr1<='Z'&&*pStr1>='A')||(*pStr1>='a'&&*pStr1<='z'))&&((*pStr

2<='Z'&&*pStr2>='A')||(*pStr2>='a'&&*pStr2<='z')))

{

if(*pStr1<='Z'&&*pStr1>='A')

*pStr1+=32;

if(*pStr2<='Z'&&*pStr2>='A')

*pStr2+=32;

pStr1++;

pStr2++;

}

}

if(strlen(pStr1)>=strlen(pStr2))

{

for(i=0;i

{

if(*(pStr1+i)==*(pStr2+i))&&*(pStr1+i)!='\0') continue;

if(*(pStr1+i)>*(pStr2+i))

count= 1;break;

if(*(pStr1+i)<*(pStr2+i))

count=-1;break;

if(*(pStr1+i)==*(pStr2+i)&&(*pStr1+i)!='\0')) count=0;break;

}

}

if(strlen(pStr2)>strlen(pStr1))

相关文档
最新文档