1樓:匿名使用者
首先,你的問題不是出在無法識別中文上。而是你的**本身有問題。即使是英文也會出現這樣的邏輯錯誤。
問題在於條件判斷輸入是否為"是"或者"不是"。
即if (a=="是") printf("\n你真聰明、");
else if (a=="不是") printf("\n你真笨、");
== 並不用於比較字串,而只是對數值比較。除非對物件進行運算子過載。
這裡編譯和連結不報錯原因在於,a是一個字串地址,「是」(或者「不是」)是個常量字串,也有個記憶體地址。他們是不同的記憶體地址,你怎麼比較,都是不相等的。
而真正比較字串使用strcmp(char*, char*)函式。
即if (strcmp(a,"是")== 0 ) printf("\n你真聰明、");
其次,在編碼過程中,如果出現字串,一律使用text("here is the string")這個巨集來括起來。以保以匹配的字符集來編譯。
下面是修改後的**。經測試沒有問題。
#include
#include
#include
void main()
2樓:
樓主這是經典失誤。
字串的比較不能簡單的用指向字串的指標來比較:a=="是"(樓主的失誤),應該用字串比較函式strcmp(a,"是"),當要比較的兩個字串相等時函式返回0。使用這個函式要加標頭檔案。
下面是我修改後除錯執行成功的**:
#include
#include
#include
void main()
額,沒看到樓上的回答。。。。樓上其實說的比我詳細,這不是字符集的問題。。。。。。。。不過看**樓主應該不常用vc ,可能對text()巨集不是很理解。
樓上的**是vc的,可能會讓樓主感覺有點複雜。
3樓:青春無情
把是和不是改成yes or no
VC 程式編譯
在計算機中,int是4位,char是1位,double是8位1 當輸入 1.2 3.4 5.6 計算機只把1放入int型的變數a中,而.則當作字元被存入字元型的b中,2被放入double中,其它的是無效資料。2 int是4位,char是1位,double是8位,當你輸入字元時,當然會出錯了,你可以直...
vc 2019編寫的程式怎麼執行啊
你寫的是什麼程式?你編譯後會在工程目錄下有個debug或release目錄,裡邊有你生成的exe檔案.你直接雙擊執行即可.在除錯中選擇啟動除錯,或者按f5或點選視窗上一個向右的小三角形,程式中最好設定system pause 否則一下子就結束了 f7編譯,ctrl f5執行 什麼情況,編寫的是控制檯...
vc實現伺服器和客戶端程式的開發,程式基於流套接字的客戶機伺服器方式,實現簡單的銀行賬戶查詢功能
伺服器 伺服器是整個網路系統的核心,為網路使用者提供服務和管理整個網路,作業系統上執行的網路作業系統。本地區域網路的不斷增強,根據在網路中的伺服器和由不同的伺服器提供的功能加入 檔案伺服器,列印伺服器和通訊伺服器所進行的任務。客戶端 客戶端也被稱為工作站。當一臺計算機連線到lan,lan客戶端的計算...