Ⅰ 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就為假。