上机课问题26-33
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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))