程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言問題-C語言程序運行時出現問題

c語言問題-C語言程序運行時出現問題

編輯:編程綜合問答
C語言程序運行時出現問題

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
char s1[80],s2[80];
int i,flag=1,resu;
printf("Please input s1 and s2:\n");
gets(s1);
gets(s2);
for(i=0;;i++)
{
if(s1[i]>s2[i])
{
printf("%d",s1[i]-s2[i]);
flag=0;
break;
}
if(s1[i]<s2[i])
{
printf("%d",s1[i]-s2[i]);
flag=0;
break;
}
if(s1[i]==s2[i]=='\0')
{
resu=0;
printf("%d",resu);
}
}
if(flag)
{
resu=0;
printf("%d",resu);
}
}
//這是我寫的一行代碼,該程序的功能是比較兩個字符串s1和s2的大小,若s1大於s2輸出一個正數,等於則輸出0,小於則輸出一個負數,不要用strcpy函數,輸出的正數或負數的絕對值必須為相比較的兩個字符串相應字符的ASCII碼的差值,例如‘A’與‘C’相比就輸出-2;輸入and和and,輸出應為0.但是當我輸入and和and時,輸出為-43,這是為何?求大神幫助。

最佳回答:


因為你在for循環當中,比較字符串的最後一個'\0'的時候,沒有跳出循環,導致會比較數組中後面一些無效字符。所以結果可能為-43或其他的。當你比較到最後一個字符都為'\0',此時就應該結束循環,字符串的比較結果就為0;所以只要在循環裡面那個比較最後一個字符的時候加一個break就可以了。結束循環不需要在判斷flag的值,因為在循環中都已經將比較的結果處理完畢了。

phoenixylf
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved