n = scanf("%d",n);
創(chuàng)新互聯(lián)公司專業(yè)成都網(wǎng)站建設(shè)、成都網(wǎng)站制作,集網(wǎng)站策劃、網(wǎng)站設(shè)計、網(wǎng)站制作于一體,網(wǎng)站seo、網(wǎng)站優(yōu)化、網(wǎng)站營銷、軟文發(fā)稿等專業(yè)人才根據(jù)搜索規(guī)律編程設(shè)計,讓網(wǎng)站在運行后,在搜索中有好的表現(xiàn),專業(yè)設(shè)計制作為您帶來效益的網(wǎng)站!讓網(wǎng)站建設(shè)為您創(chuàng)造效益。
這一句有問題
1. scanf 函數(shù)是有返回值的,它的返回值可以分成三種情況
1) 正整數(shù),表示正確輸入?yún)?shù)的個數(shù)。
例如執(zhí)行 scanf(“%d %d”, a, b);
如果用戶輸入”3 4”,可以正確輸入,返回2(正確輸入了兩個變量);
如果用戶輸入”3,4”,可以正確輸入a,無法輸入b,返回1(正確輸入了一個變量)。
2) 0,表示用戶的輸入不匹配,無法正確輸入任何值。如上例,用戶如果輸入”,3 4”,返回0。
3) EOF,這是在 stdio.h 里面定義的常量(通常值為-1),表示輸入流已經(jīng)結(jié)束。在Windows下,用戶按下CTRL+Z(會看到一個^Z字符)再按下回車(可能需要重復(fù)2次),就表示輸入結(jié)束;Linux/Unix下使用CTRL+D表示輸入結(jié)束。
你這個輸入一個返回值就是1,因此n也會一直等于一
C語言代碼如下:
#includestdio.h
int main()
{
int a,b;
printf("please enter two number:"); ? ?-----兩個數(shù)字用空格隔開,以回車鍵結(jié)束輸入。
scanf("%d %d",a,b);if(ab)
printf("The max is %d",a);
else if(ba)
printf("The max is %d",b);
else
printf("The two Numbers are the same");?
return 0;
}
運行結(jié)果圖:
擴展資料:
c語言特點:
基本特性:
1、高級語言:它是把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來的工作單元。?
2、結(jié)構(gòu)式語言:結(jié)構(gòu)式語言的顯著特點是代碼及數(shù)據(jù)的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護以及調(diào)試。
C 語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。
3、代碼級別的跨平臺:由于標準的存在,使得幾乎同樣的C代碼可用于多種操作系統(tǒng),如Windows、DOS、UNIX等等;也適用于多種機型。C語言對編寫需要進行硬件操作的場合,優(yōu)于其它高級語言。?[
4、使用指針:可以直接進行靠近硬件的操作,但是C的指針操作不做保護,也給它帶來了很多不安全的因素。
C++在這方面做了改進,在保留了指針操作的同時又增強了安全性,受到了一些用戶的支持,但是,由于這些改進增加語言的復(fù)雜度,也為另一部分所詬病。
Java則吸取了C++的教訓(xùn),取消了指針操作,也取消了C++改進中一些備受爭議的地方,在安全性和適合性方面均取得良好的效果,但其本身解釋在虛擬機中運行,運行效率低于C++/C。
一般而言,C,C++,java被視為同一系的語言,它們長期占據(jù)著程序使用榜的前三名。
特有特點:
1.C語言是一個有結(jié)構(gòu)化程序設(shè)計、具有變量作用域(variable scope)以及遞歸功能的過程式語言。
2.C語言傳遞參數(shù)均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。
3.不同的變量類型可以用結(jié)構(gòu)體(struct)組合在一起。
4.只有32個保留字(reserved keywords),使變量、函數(shù)命名有更多彈性。
5.部份的變量類型可以轉(zhuǎn)換,例如整型和字符型變量。
6.通過指針(pointer),C語言可以容易的對存儲器進行低級控制。
7.預(yù)編譯處理(preprocessor)讓C語言的編譯更具有彈性。
優(yōu)缺點:
優(yōu)點
1.簡潔緊湊、靈活方便
C語言一共只有32個關(guān)鍵字,9種控制語句,程序書寫形式自由,區(qū)分大小寫。
把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。
C 語言可以像匯編語言一樣對位、字節(jié)和地址進行操作,而這三者是計算機最基本的工作單元。
2.運算符豐富
C語言的運算符包含的范圍很廣泛,共有34種運算符。
C語言把括號、賦值、強制類型轉(zhuǎn)換等都作為運算符處理。
從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現(xiàn)在其它高級語言中難以實現(xiàn)的運算。
3、數(shù)據(jù)類型豐富
C語言的數(shù)據(jù)類型有:整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運算。并引入了指針概念,使程序效率更高。
4、表達方式靈活實用
C語言提供多種運算符和表達式值的方法,對問題的表達可通過多種途徑獲得,其程序設(shè)計更主動、靈活。
它語法限制不太嚴格,程序設(shè)計自由度大,如對整型量與字符型數(shù)據(jù)及邏輯型數(shù)據(jù)可以通用等。
5、允許直接訪問物理地址,對硬件進行操作
由于C語言允許直接訪問物理地址,可以直接對硬件進行操作,因此它既具有高級語言的功能,又具有低級語言的許多功能,能夠像匯編語言一樣對位(bit)、字節(jié)和地址進行操作,而這三者是計算機最基本的工作單元,可用來寫系統(tǒng)軟件。
6、生成目標代碼質(zhì)量高,程序執(zhí)行效率高
C語言描述問題比匯編語言迅速,工作量小、可讀性好,易于調(diào)試、修改和移植,而代碼質(zhì)量與匯編語言相當(dāng).
C語言一般只比匯編程序生成的目標代碼效率低10%~20%。
7、可移植性好
C語言在不同機器上的C編譯程序,86%的代碼是公共的,所以C語言的編譯程序便于移植。在一個環(huán)境上用C語言編寫的程序,不改動或稍加改動,就可移植到另一個完全不同的環(huán)境中運行。
8、表達力強
C語言有豐富的數(shù)據(jù)結(jié)構(gòu)和運算符。包含了各種數(shù)據(jù)結(jié)構(gòu),如整型、數(shù)組類型、指針類型和聯(lián)合類型等,用來實現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)的運算。
C語言的運算符有34種,范圍很寬,靈活使用各種運算符可以實現(xiàn)難度極大的運算。
C語言能直接訪問硬件的物理地址,能進行位(bit)操作。兼有高級語言和低級語言的許多優(yōu)點。
它既可用來編寫系統(tǒng)軟件,又可用來開發(fā)應(yīng)用軟件,已成為一種通用程序設(shè)計語言。
另外C語言具有強大的圖形功能,支持多種顯示器和驅(qū)動器。且計算功能、邏輯判斷功能強大。
缺點
1、 C語言的缺點主要表現(xiàn)在數(shù)據(jù)的封裝性上,這一點使得C在數(shù)據(jù)的安全性上有很大缺陷,這也是C和C++的一大區(qū)別。
2、 C語言的語法限制不太嚴格,對變量的類型約束不嚴格,影響程序的安全性,對數(shù)組下標越界不作檢查等。
從應(yīng)用的角度,C語言比其他高級語言較難掌握。也就是說,對用C語言的人,要求對程序設(shè)計更熟練一些。
參考資料來源:C語言-百度百科
scanf接收字符時的格式是scanf("%c",ch)(ch是定義過的接收鍵盤輸入字符的變量,下同);。這種格式下,無論輸入緩沖區(qū)里有多少字符,scanf("%c",ch);都只接收最前面的一個賦給ch,但系統(tǒng)要以'\n'作為輸入結(jié)束的命令,那么scanf("%c",ch);在接收一個輸入字符時必然會把'\n'遺留在緩沖區(qū)里。
這樣問題就來了,由于'\n'也是一個字符,所以下一個scanf("%c",ch2);就會把上一個scanf("%c",ch);遺留在緩沖區(qū)里的'\n'接收并賦給ch2,這就造成第二個scanf("%c",ch2);失去了從鍵盤接收用戶輸入的字符的機會(scanf("%c",ch2)只接收一個字符),從而造成代碼運行出錯。
解決辦法很多,在scanf("%c",ch);語句前加getchar();,加fflush(stdin);,甚至把scanf("%c",ch);寫兩遍都能湊效。但這不僅要消費空間時間,而且閱讀也不直觀。其實知道了原理解決起來就方便了,最簡單的辦法是把每一個類似scanf("%c",ch);這樣讀字符的語句改寫成scanf(" %c",ch)(%前有個空格);就可以了,原理是這個空格會命令scanf跳過所有的廣義空格(' '、'\t'、'\n'等)再接收字符——當(dāng)然沒有空格就不會有跳過動作——問題就迎刃而解了。
下面提供驗證代碼:
//#include?"stdafx.h"http://If?the?vc++6.0,?with?this?line.
#include?"stdio.h"
int?main(void){
char?a,b;
scanf("?%c",a);
scanf("?%c",b);
printf("%c?%c\n",a,b);
return?0;
}
如果使用 return 語句的話,那么一次函數(shù)調(diào)用就只能返回一個值;如果想一次函數(shù)調(diào)用操作就能夠返回兩個值的話,那么就只能夠通過傳遞指針變量實現(xiàn)。例如下程序:
void mysubcall(int *, char *) ;
void main( )
{
int num = 10 ;
char mystr[20]=“1234567890”;
mysubcall(num,mystr);
printf(“%d %s\n”,num,mystr);
}
void mysubcall(int * num, char mystr[20])
{
(*num)+=40;
mystr[5]+=5;
}
該子函數(shù)返回的就是兩個值:改變后的數(shù)字、以及改變后的字符串。
常用兩個辦法:一是把x聲明為全局變量,這樣哪個函數(shù)都能用。如——
int x;
void temp(){
cout"enter a number";
cinx;
}
void text(){
for(int i =0; i x; i ++){
.....................}
}
二是把這個變量x由輸入函數(shù)返回,在使用x的函數(shù)中調(diào)用輸入函數(shù)獲得變量x的值。如——
int temp(){
int x;
cout"enter a number";
cinx;
return x;
}
void text(){
int n=temp();
for(int i =0; i n; i ++){
.....................}
}