A. 用C語言編輸入一個3位的正整數,分別輸出它的個位,十位,百位數字
代碼如下:
#include<stdio.h>
void main()
{
int n,a,b,c;
scanf("%d",&n);
a=n; c=a%10; a/=10; b=a%10; a/=10; a%=10;
printf("%d的個位為%d,十位為%d,百位為%d。\n",n,c,b,a);
}
c語言:
1.簡介:
C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie於1972年推出,1978年後,C語言已先後被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。
2.基本特性
1、高級語言:它是把高級語言的基本結構和語句與低級語言的實用性結合起來的工作單元。
2、結構式語言:結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便於使用、維護以及調試。C 語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程序流向,從而使程序完全結構化。
4、代碼級別的跨平台:由於標準的存在,使得幾乎同樣的C代碼可用於多種操作系統,如Windows、DOS、UNIX等等;也適用於多種機型。C語言對編寫需要進行硬體操作的場合,優於其它高級語言。
5、使用指針:可以直接進行靠近硬體的操作,但是C的指針操作不做保護,也給它帶來了很多不安全的因素。C++在這方面做了改進,在保留了指針操作的同時又增強了安全性,受到了一些用戶的支持,但是,由於這些改進增加語言的復雜度,也為另一部分所詬病。java則吸取了C++的教訓,取消了指針操作,也取消了C++改進中一些備受爭議的地方,在安全性和適合性方面均取得良好的效果,但其本身解釋在虛擬機中運行,運行效率低於C++/C。一般而言,C,C++,java被視為同一系的語言,它們長期占據著程序使用榜的前三名。
3.特有特點
1.C語言是一個有結構化程序設計、具有變數作用域(variable scope)以及遞歸功能的過程式語言。
2.C
B. i++是什麼意思
++i 和 i++在單獨使用時起到的作用就是 i=i+1,即後一個值是前一個值加一。
++i是使用i之前先使i加一。i++是使用i之後再加一。如果不能理解,那麼可以理解為:++i是先計算,再操作,i++是先操作,再計算。
例如:a = ++i,相當於 i=i+1; a = i; a = i++,相當於 a = i; i=i+1;
(2)預編譯條件語句僅作用同一環境擴展閱讀
「++」符號是編程語言中的自增運算符,作用是在運行後將變數的數值自動加一,「++」符號所處的位置不同,運算規則也不同,當「++」放在變數前方時,如 ++i,此時的作用是先將i變數中的數值進行加一運算,然後再將運算後的數值加入運算,而i++是先將i中的數值加入運算,然後再自加一。
i++的用法:
classYanShi{ publicstaticvoidmain(String[]args){ inti=3; i=i++; System.out.println("i="+i);}}//輸出是i=3
classYanShi_01
{ publicstaticvoidmain(String[]args){ inti=3,j; j=i++; System.out.println("i="+i+",j="+j);}}//輸出i=4,j=3
C. C語言中cnt是什麼意思
cnt是count的縮寫,用做計數器。
例子:假設cnt=8,則printf("cnt=%d ",cnt)的意思就是printf("cnt=8 "), 的意思是換行,該語句的執行結果是在屏幕上輸出cnt=8,然後換行;
C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著跨平台的特性,以一個標准規格寫出的C語言程序可在包括一些類似嵌入式處理器以及超級計算機等作業平台的許多計算機平台上進行編譯。
(3)預編譯條件語句僅作用同一環境擴展閱讀
C程序是由一組變數或是函數的外部對象組成的。 函數是一個自我包含的完成一定相關功能的執行代碼段。我們可以把函數看成一個「黑盒子」,你只要將數據送進去就能得到結果,而函數內部究竟是如何工作的,外部程序是不知道的。
外部程序所知道的僅限於輸入給函數什麼以及函數輸出什麼。函數提供了編製程序的手段,使之容易讀、寫、理解、排除錯誤、修改和維護。
C程序中函數的數目實際上是無限的,如果說有什麼限制的話,那就是,一個C程序中必須至少有一個函數,而且其中必須有一個並且僅有一個以main為名的函數,這個函數稱為主函數,整個程序從這個主函數開始執行。
C語言程序鼓勵和提倡人們把一個大問題劃分成一個個子問題,對應於解決一個子問題編制一個函數,因此,C語言程序一般是由大量的小函數而不是由少量大函數構成的,即所謂「小函數構成大程序」。
這樣的好處是讓各部分相互充分獨立,並且任務單一。因而這些充分獨立的小模塊也可以作為一種固定規格的小「構件」, 用來構成新的大程序。
C語言發展的那麼多年來,用C語言開發的系統和程序浩如煙海。在發展的同時也積累了很多能直接使用的庫函數。
ANSI C提供了標准C語言庫函數。
C語言初學者比較喜歡的Turbo C 2.0提供了400多個運行時函數,每個函數都完成特定的功能,用戶可隨意調用。這些函數總體分成輸入輸出函數、數學函數、字元串和內存函數、與BIOS和DOS有關的函數、 字元屏幕和圖形功能函數、過程式控制制函數、目錄函數等。
Windows系統所提供的Windows SDK中包含了數千個跟Windows應用程序開發相關的函數。其他操作系統,如Linux,也同樣提供了大量的函數讓應用程序開發人員調用。
作為程序員應盡量熟悉目標平台庫函數其功能。這樣才能游刃有餘地開發特定平台的應用程序。比如作為Windows應用程序的開發者,應盡量熟悉Windows SDK;作為Linux應用程序開發者,應盡量熟悉Linux系統調用和POSIX函數規范。
比較特別的是,比特右移(>>)運算符可以是算術(左端補最高有效位)或是邏輯(左端補 0)位移。
例如,將 11100011 右移 3 比特,算術右移後成為 11111100,邏輯右移則為 00011100。因算術比特右移較適於處理帶負號整數,所以幾乎所有的編譯器都是算術比特右移。
運算符的優先順序從高到低大致是:單目運算符、算術運算符、關系運算符、邏輯運算符、條件運算符、賦值運算符(=)和逗號運算符。
D. C++ if()是不是條件編譯指令
if()屬於判斷語句,不是條件編譯指令。
與if類似的條件編譯指令為#if和#ifdef。
條件編譯指令屬於預編譯語句,即編譯器在執行編譯工作時,會第一步處理預編譯語句,之後再進行剩餘的編譯工作。
在C語言中,所有的預編譯語句都是以#開頭的,如#define, #undef,#if等等。
條件編譯指令包括以下幾項:
1 #if
當後續的參數為真時執行編譯。
2 #ifdef/#ifndef
#ifdef當後續的宏定義被定義時執行編譯。
#ifndef當後續的宏定義沒有被定義時執行編譯。
3 #elif
與C語言語句中的else if類似,與#if或#ifdef連用,當後續參數為真時執行編譯。
4 #endif
用於條件編譯結尾,表示條件編譯結束。
E. C++中的條件編譯是怎麼一回事能舉例解釋一下嗎
一般情況下,源程序中所有的行都參加編譯。但是有時希望對其中一部分內容只在滿足一定條件才進行編譯,也就是對一部分內容指定編譯的條件,這就是「條件編譯」。有時,希望當滿足某條件時對一組語句進行編譯,而當條件不滿足時則編譯另一組語句。
條件編譯命令最常見的形式為:
#ifdef 標識符
程序段1
#else
程序段2
#endif
它的作用是:當標識符已經被定義過(一般是用#define命令定義),則對程序段1進行編譯,否則編譯程序段2。
其中#else部分也可以沒有,即:
#ifdef
程序段1
#denif
這里的「程序段」可以是語句組,也可以是命令行。這種條件編譯可以提高C源程序的通用性。如果一個C源程序在不同計算機系統上運行,而不同的計算機又有一定的差異。例如,我們有一個數據類型,在Windows平台中,應該使用long類型表示,而在其他平台應該使用float表示,這樣往往需要對源程序作必要的修改,這就降低了程序的通用性。可以用以下的條件編譯:
#ifdef WINDOWS
#define MYTYPE long
#else
#define MYTYPE float
#endif
如果在Windows上編譯程序,則可以在程序的開始加上
#define WINDOWS
這樣則編譯下面的命令行:
#define MYTYPE long
如果在這組條件編譯命令之前曾出現以下命令行:
#define WINDOW
則預編譯後程序中的MYTYPE都用float代替。這樣,源程序可以不必作任何修改就可以用於不同類型的計算機系統。當然以上介紹的只是一種簡單的情況,可以根據此思路設計出其它的條件編譯。
例如,在調試程序時,常常希望輸出一些所需的信息,而在調試完成後不再輸出這些信息。可以在源程序中插入以下的條件編譯段:
#ifdef DEBUG
print ("device_open(%p)\n", file);
#endif
如果在它的前面有以下命令行:
#define DEBUG
則在程序運行時輸出file指針的值,以便調試分析。調試完成後只需將這個define命令行刪除即可。有人可能覺得不用條件編譯也可達此目的,即在調試時加一批printf語句,調試後一一將printf語句刪除去。的確,這是可以的。但是,當調試時加的printf語句比較多時,修改的工作量是很大的。用條件編譯,則不必一一刪改printf語句,只需刪除前面的一條「#define DEBUG」命令即可,這時所有的用DEBUG作標識符的條件編譯段都使其中的printf語句不起作用,即起統一控制的作用,如同一個「開關」一樣。
有時也採用下面的形式:
#ifndef 標識符
程序段1
#else
程序段2
#endif
只是第一行與第一種形式不同:將「ifdef」改為「ifndef」。它的作用是:若標識符未被定義則編譯程序段1,否則編譯程序段2。這種形式與第一種形式的作用相反。
以上兩種形式用法差不多,根據需要任選一種,視方便而定。
還有一種形式,就是#if後面的是一個表達式,而不是一個簡單的標識符:
#if 表達式
程序段1
#else
程序段2
#endif
它的作用是:當指定的表達式值為真(非零)時就編譯程序段1,否則編譯程序段2。可以事先給定一定條件,使程序在不同的條件下執行不同的功能。
例如:輸入一行字母字元,根據需要設置條件編譯,使之能將字母全改為大寫輸出,或全改為小寫字母輸出。
#define LETTER 1
main()
{
char str[20]="C Language",c;
int i=0;
while((c=str[i])!='\0'){
i++;
#if LETTER
if(c>='a'&&c<='z') c=c-32;
#else
if(c>='A'&&c<='Z') c=c+32;
#endif
printf("%c",c);
}
}
運行結果為:C LANGUAGE
現在先定義LETTER為1,這樣在預處理條件編譯命令時,由於LETTER為真(非零),則對第一個if語句進行編譯,運行時使小寫字母變大寫。如果將程序第一行改為:
#define LETTER 0
則在預處理時,對第二個if語句進行編譯處理,使大寫字母變成小寫字母(大寫字母與相應的小寫字母的ASCII代碼差32)。此時運行情況為:
c language
有人會問:不用條件編譯命令而直接用if語句也能達到要求,用條件編譯命令有什麼好處呢?的確,此問題完全可以不用條件編譯處理,但那樣做目標程序長(因為所有語句都編譯),而採用條件編譯,可以減少被編譯的語句,從而減少目標的長度。當條件編譯段比較多時,目標程序長度可以大大減少。
補充:
頭文件中的#ifndef
千萬不要忽略了頭件的中的#ifndef,這是一個很關鍵的東西。比如你有兩個C文件,這兩個C文件都include了同一個頭文件。而編譯時,這兩個C文件要一同編譯成一個可運行文件,於是問題來了,大量的聲明沖突。
還是把頭文件的內容都放在#ifndef和#endif中吧。不管你的頭文件會不會被多個文件引用,你都要加上這個。一般格式是這樣的:
#ifndef <標識>
#define <標識>
......
......
#endif
<標識>在理論上來說可以是自由命名的,但每個頭文件的這個「標識」都應該是唯一的。標識的命名規則一般是頭文件名全大寫,前後加下劃線,並把文件名中的「.」也變成下劃線,如:stdio.h
#ifndef _STDIO_H_
#define _STDIO_H_
......
#endif
F. C語言中#if #else 有什麼作用
#if是個預編譯指令的田間編譯指令
可以使用條件編譯選擇特定的代碼節進行編譯,而排除其他代碼節。例如,可能需要編寫調試語句來比較同一編程任務的不同方法的速度,或者可能需要本地化用於多種語言的應用程序。條件編譯語句被設計為在編譯時(而不是在運行時)運行。
一般在C++裡面有的,#if這類東西通場會放到程序開頭,方便經常調用的函數,,變數,標示等等,放在函數裡面他就在函數裡面起作用,在函數外面,計算機就不認識他了,呵呵。,。
他們是程序編譯的時,控制器好分配資源,通常我們用的是#ifdef 查看前面或是別人如果定義了一個宏 定義了,,那就跳過,,沒定義#ifndef 那麼then #def 定義 用#endif是搭配#if 是結束這些宏定義語句用的
有#是預編譯的代碼;
沒有#號就是普通的if語句,
G. c語言的語言組成
數據類型
C的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。
常量與變數
常量其值不可改變,符號常量名通常用大寫。
變數是以某標識符為名字,其值可以改變的量。標識符是以字母或下劃線開頭的一串由字母、數字或下劃線構成的序列,請注意第一個字元必須為字母或下劃線,否則為不合法的變數名。變數在編譯時為其分配相應存儲單元。
數組
如果一個變數名後面跟著一個有數字的中括弧,這個聲明就是數組聲明。字元串也是一種數組。它們以ASCII的NULL作為數組的結束。要特別注意的是,方括內的索引值是從0算起的。
指針
如果一個變數聲明時在前面使用 * 號,表明這是個指針型變數。換句話說,該變數存儲一個地址,而 *(此處特指單目運算符 * ,下同。C語言中另有 雙目運算符 *) 則是取內容操作符,意思是取這個內存地址里存儲的內容。指針是 C 語言區別於其他同時代高級語言的主要特徵之一。
指針不僅可以是變數的地址,還可以是數組、數組元素、函數的地址。通過指針作為形式參數可以在函數的調用過程得到一個以上的返回值,不同於return(z)這樣的僅能得到一個返回值。
指針是一把雙刃劍,許多操作可以通過指針自然的表達,但是不正確的或者過分的使用指針又會給程序帶來大量潛在的錯誤。
字元串
C語言的字元串其實就是以'