-
建議檢視程式的基本結構:排序、選擇分支、迴圈。
不過看看你的**,連觸感也很大,沒想到**能寫成這樣。 只能把**寫在書上,甚至是乙個菜鳥
以下**可以:
#include
#include
#define n 256
int mystrcmp(char* str1,char* str2)
int i,r=-1;
for(i=0;(*str1+i)!='\0' ||str2+i)!='\0');i++)
if(*(str1+i)==*(str2+i))
r=0;continue;它最初是壞的; break 直接跳出迴圈,返回的 r 當然是 0。 但也有不相等的情況,呵呵。 例如,“123”和“456”。
if(*(str1+i)>*str2+i))
r=1;return r;///////
if(*(str1+i)<*str2+i))
r=2;return r;///////
return r;
int main()
int r;
char a[n],b[n];
char *p=a,*q=b;
printf("請輸入第乙個字串:");
scanf("%s",p);gets() 無法在我的機器上編譯。
printf("請輸入第二個字串:");
scanf("%s",q);
r=mystrcmp(p,q);
if(r==0)
printf("兩個字串相等");
if(r==1)
printf("第乙個字串很大");
if(r==2)
printf("第二個字串很大");
return 0;
結果:pig@pig-膝上型電腦:$gcc
pig@pig-laptop:~$/
請輸入第乙個字串:abc
請輸入第二個字串:abc
這兩個字串等於 pig@pig-laptop: $
請輸入第乙個字串:aji
請輸入第二個字串:aij
第乙個字串是大pig@pig-膝上型電腦:$
請輸入第乙個字串:aij
請輸入第二個字串:aji
第二個字串很大
-
if(r==1)
printf("第二個字串很大");
if(r==2)
printf("第乙個字串很大");
把你的程式部分改成上面,因為比較字母a>b的時候,但是a的ACII碼小於b,你主要是犯了這個錯誤,你的程式是正確的。
-
演算法有問題。
在for迴圈中,只比較2個字串的第乙個字元,所以無論輸入什麼字串,都只比較第乙個字元,然後僅根據第乙個字元來判斷整個字串的大小。
-
你寫了這個,只比較了乙個字元就壞了。