本文目錄一覽:
常見的C語言編譯器是什麼?
目前最流行的C語言編譯器有以下幾種:
1、GNU Compiler Collection 或稱 GCC
GCC(GNU Compiler Collection,GNU編譯器套件),是由 GNU 開發的編程語言編譯器。它是以GPL許可證所發行的自由軟體,也是 GNU計劃的關鍵部分。
GCC原本作為GNU操作系統的官方編譯器,現已被大多數類Unix操作系統(如Linux、BSD、Mac OS X等)採納為標準的編譯器,GCC同樣適用於微軟的Windows。GCC是自由軟體過程發展中的著名例子,由自由軟體基金會以GPL協議發布。
2、Microsoft C 或稱 MS C
Microsoft C 是c語言的一種IDE(集成開發環境),常見的還有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,High C,Turbo C等等……
3、Borland Turbo C 或稱 Turbo C
Turbo C是美國Borland公司的產品,Borland公司是一家專門從事軟體開發、研製的大公司。該公司相繼推出了一套 Turbo系列軟體, 如Turbo BASIC, Turbo Pascal, Turbo Prolog, 這些軟體很受用戶歡迎。
擴展資料:
C編譯的整個過程很複雜,大致可以分為以下四個階段:
1、預處理階段在該階段主要完成對源代碼的預處理工作,主要包括對宏定義指令,頭文件包含指令,預定義指令和特殊字元的處理,如對宏定義的替換以及文件頭中所包含的文件中預定義代碼的替換等,總之這步主要完成一些替換工作,輸出是同源文件含義相同但內容不同的文件。
2、編譯、優化階段編譯就是將第一階段處理得到的文件通過詞法語法分析等轉換為彙編語言。優化包括對中間代碼的優化,如刪除公共表達式,循環優化等;和對目標代碼的生成進行的優化,如如何充分利用機器的寄存器存放有關變數的值,以減少內存訪問次數。
3、彙編階段將彙編語言翻譯成機器指令。
4、鏈接階段鏈接階段的主要工作是將有關的目標文件連接起來,即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的目標文件成為一個能夠被操作系統裝入執行的統一整體。
參考資料來源:百度百科-gcc (GNU編譯器套件)
參考資料來源:百度百科-Microsoft C
參考資料來源:百度百科-Turbo C
C語言文件的編譯與執行的四個階段並分別描述
開發C程序有四個步驟:編輯、編譯、連接和運行。
任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進位文件上運行。
1、預處理:導入源程序並保存(C文件)。
2、編譯:將源程序轉換為目標文件(Obj文件)。
3、鏈接:將目標文件生成為可執行文件(EXE文件)。
4、運行:執行,獲取運行結果的EXE文件。
擴展資料:
將C語言代碼分為程序的幾個階段:
1、首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。文件不包含任何宏定義,因為所有宏都已展開,並且包含的文件已插入。我歸檔。
2、編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的彙編代碼文件。這個過程往往是整個程序的核心部分,也是最複雜的部分之一。
3、彙編程序不直接輸出可執行文件,而是輸出目標文件。彙編程序可以調用LD來生成可以運行的可執行程序。也就是說,您需要鏈接大量的文件才能獲得「a.out」,即最終的可執行文件。
4、在鏈接過程中,需要重新調整其他目標文件中定義的函數調用指令,而其他目標文件中定義的變數也存在同樣的問題。
參考資料來源:百度百科-c語言
用C語言編譯N!(n的階乘)
所謂n的階乘就是從1到n的累積,所以可以通過一個for循環,從1到n依次求積即可。
參考代碼:
#include “stdio.h”
int main() {
int n,i,s=1;
scanf(“%d”,n);
for(i=1;i=n;i++)//for循環求累積
s=s*i;
printf(“%d\n”,s);
return 0;
}
/*
運行結果:(例如求5的階乘)
5
120
*/
1:用C語言編譯N!(n的階乘)2:將字元串a複製為字元串b(用指針方法)
1、將字元串a複製到字元串b
指針法:
main()
{
char a[]=”I am a boy!”,b[20];
int i,*p1,*p2;
p1=a;p2=b;
for(;*p1!=’\0′;p1++,p2++)
*p2=*p1;
*p2=’\0′;
printf(“string a is:%s\n”,a);
printf(“string b is:%s”);
for(i=0;b[i]!=’\0′;i++)
printf(“%c”,b[i]);
printf(“\n”);
}
方法2:數組名法
main()
{
char a[]=”I am a boy!”,b[20];
int i;
for(i=0;*(a+i)!=’\0′;i++)
*(b+i)=*(a+i);
*(b+i)=’\0′;
printf(“string a is:%s\n”,a);
printf(“string b is:%s”);
for(i=0;b[i]!=’\0′;i++)
printf(“%c”,b[i]);
printf(“\n”);
}
求N!
遞歸法
main()
{
int n;
float y;
printf(“input a integer munber:”);
scanf(“%d”,n);
y=fac(n);
printf(“%d!=10.0f”,n,y);
}
float fac(int n)
{
float f;
if(n0){printf(“n0,dataerror!”);}
else if(n==0 || n==1)f=1;
else f=fac(n-1)*n;
return (f);
}
這些程序都是我一個字一個字輸進去的啊,不是為了什麼分!媽的大學考C語言忙著和女朋友親熱沒考過! 現在教學生C語言還自學了C++! 同學希望對你有所幫忙!
用函數方法實現N!
float fact(int x,float total)
{int i;
total=1;
for(i=0;ix;i++)
total=total*i;
return total;
}
原創文章,作者:YKHEA,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/315884.html