3 改進
參考資料
程式功能:實現字母的大小寫轉換。輸入乙個大寫字母,接著按下回車,第二行就輸出小寫字母。注意:每次只能輸入乙個字母,否則出錯。
程式設計軟體:visual studio 2019
#define _crt_secure_no_warnings 1
#include
intmain()
}
scanf首先接收乙個字元,賦值給ch,當scanf函式的返回值為eof時,迴圈終止,否則程式會一直迴圈輸入輸出。那麼,如果我們想終止程式,有什麼辦法可以讓scanf的返回值為eof呢?下面舉例分析。
假設輸入乙個字元a,並按下回車,格式如下圖所示
a被scanf接收,並賦值給ch,回車被getchar()接收,其中回車是換行符,也屬於字元,所以,如果不用getchar處理換行符,在下一次迴圈時,回車被當做字元賦值給ch,進而導致輸出錯誤的結果。你可以試著把getchar()去掉,執行一下,看看會出現什麼結果。程式中的eof 是end of file的縮寫,是定義在標頭檔案stdio.h的乙個巨集,它的值為-1,定義格式為:#define eof (-1))2
對於printf("%c\n", ch+32);
因為大寫和小寫字母的ascii碼值相差32,例如a的ascii碼值為65,a的ascii碼值為97。所以在ch上加上32,就會輸出其小寫格式。
當然也可以使用tolower等庫函式轉換大小寫1
,程式如下。
#define _crt_secure_no_warnings 1
#include
intmain()
}
對於以上程式,如果不小心連續輸入回車,程式會出錯,針對這個問題進行改進,並增加了程式終止功能,當按下ctrl+z時,程式終止。上面兩個程式連續輸入兩次ctrl+z時,也會退出迴圈。
執行以上程式,可以發現,即使連續輸入換行符,也不會輸出錯誤的結果。如果想要程式結束,則輸入ctrl+z3
,可以看到乙個^z字元,再按下回車,程式結束。
大小寫轉換_牛客網
↩︎↩︎
c語言中eof到底是什麼?↩︎
c語言scanf返回值↩︎
小寫金額轉換成大寫
原作在sql 2000中有一些問題。修正錯誤並在sql 2000中執行通過。set nocount on select v lowerstr ltrim rtrim str n lowermoney,20,2 四捨五入為指定的精度並刪除資料左右空格 select i i 1 select v upp...
小寫金額轉換成大寫 sql server
if exists select from dbo.sysobjects where id object id n dbo l2u andxtype in n fn n if n tf drop function dbo l2u go create function dbo.l2u n lowerm...
小寫金額轉換成中文大寫金額
public string cmycurd decimal num str2 str2.substring 15 j 取出對應位數的str2的值。如 200.55,j為5所以str2 佰拾元角分 迴圈取出每一位需要轉換的值 for i 0 i j i else else else else else...