Ⅰ C语言strcmp 使用方法
strcat
函数是把两个字符串做连接,并返回连接后的字符串。
strcat(a,b)="aab"
所以,即求
strcmp("aab","ab")
的值,
strcmp
函数只有3种值,
当前面的字符串大于后面的字符串时,返回
1
当前面的字符串小于后面的字符串时,返回
-1
当前面的字前嫌符串等于后肢悔返面的字符串时,返回
0
"aab" 和
"ab",第一个字母是相等的,第二个历饥字母
,a比b
小,
所以,最终strcmp(strcat(a,b),b)的值是:
-1
Ⅱ C语言中字符串从小到大排序
#include <stdio.h>
#include <string.h>
void f(char *str)
{
char *p,*q,*r,c;
/*--用选择排序法对字符串str中字符按从小到大排序。找出以下程序段中的错误--*/
for(p=str;*p;p++)
{
for(r=p,q=p+1;*q;q++)
if(*r>*q)//应该加*号,不加*号的比较大小是没有意义的,因为r,q是指针,而要比较的是指针指向的地址所储存的变量,
所以要加*号..
r=q;
if(r!=p)
{
c=*r;
*r=*p;
*p=c;
}
}
/*--删除字符串str中的重复字符。找出以下程序段中的错误--*/
for(p=str;*p;p++)
{
for(q=p+1;*q && *q==*p;q++)//增加了&& *q=*p,这样才能保证当出现相同的字符时才开始操作,过程如下:
假设排好序的字符串为aab;
那么p首先指向a,q指向第二个a,此时满足*p==*q的条件,进入for循环,将q开始的字符串赋给p开始的字符串,即
aab->ab;
如果*p!=*q时,循环结束,大致就是这样子了..
strcpy(p,q--);
}
}
void main()
{
char s[50];
int number=0;
printf("Please enter a string:\n");
gets(s);
f(s);
printf("%s\n",s);
}
Ⅲ C语言c<a<b的表达合法吗怎么求
是合法的表达式。
只是c<a<b表达式的含义不是数学上讲的a>c且a<b就满足条件,这表示的恰好与数学的相反,a<c且a>b就为真,a>c且a<b就为假。