導航:首頁 > 源碼編譯 > 所有c程序都需要編譯鏈接無誤後才能進行嗎

所有c程序都需要編譯鏈接無誤後才能進行嗎

發布時間:2024-12-24 13:52:54

❶ 在dev-c++中我寫好程序了點運行為什麼老是出現源文件未編譯咋回事啊,高手給看看咋回事啊,我自學C語言小

你好。運行前要對源代碼進行編譯鏈接,然後才能運行。所以正確的操作是:點擊第一行菜單欄里的運行,出現一個下拉菜單,點擊其中的 「編譯」,當編譯無誤時,再點擊運行菜單中的 「運行」,就可以了。其他編譯器也是類似的使用方法。也可以使用快捷鍵,在工具欄頭幾個。多用幾次就知道啦

❷ c語言編譯器如何運行

編譯共分為四個階段:預處理階段、編譯階段、匯編階段、鏈接階段。

1、預處理階段:

主要工作是將頭文件插入到所寫的代碼中,生成擴展名為「.i」的文件替換原來的擴展名為「.c」的文件,但是原來的文件仍然保留,只是執行過程中的實際文件發生了改變。(這里所說的替換並不是指原來的文件被刪除)

2、匯編階段:

插入匯編語言程序,將代碼翻譯成匯編語言。編譯器首先要檢查代碼的規范性、是否有語法錯誤等,以確定代碼的實際要做的工作,在檢查無誤後,編譯器把代碼翻譯成匯編語言,同時將擴展名為「.i」的文件翻譯成擴展名為「.s」的文件。

3、編譯階段:

將匯編語言翻譯成機器語言指令,並將指令打包封存成可重定位目標程序的格式,將擴展名為「.s」的文件翻譯成擴展名為「.o」的二進制文件。

4、鏈接階段:

在示例代碼中,改代碼文件調用了標准庫中printf函數。而printf函數的實際存儲位置是一個單獨編譯的目標文件(編譯的結果也是擴展名為「.o」的文件),所以此時主函數調用的時候,需要將該文件(即printf函數所在的編譯文件)與hello world文件整合到一起,此時鏈接器就可以大顯神通了,將兩個文件合並後生成一個可執行目標文件。

❸ 急!!歷年國家計算機二級c語言筆試真題答案。

2010年9月全國計算機二級C語言筆試試題:文字版
一、選擇題(每小題2分,共70分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項填塗在答題卡相應位置上,答在試卷上不得分。

(1)下列敘述中正確的是
A)線性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的
B)線性表的鏈式存儲結構所需要的存儲空間一般要多於順序存儲結構
C)線性表的鏈式存儲結構所需要的存儲空間一般要少於順序存儲結構
D)上述三種說法都不對

(2)下列敘述中正確的是
A)在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態變化
B)在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態變化
C)在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態變化
D)上述三種說法都不對

(3)軟體測試的目的是
A)評估軟體可靠性
B)發現並改正程序中的錯誤
C)改正程序中的錯誤
D)發現程序中的錯誤

(4)下面描述中,不屬於軟體危機表現的是
A)軟體過程不規范
B)軟體開發生產率低
C)軟體質量難以控制
D)軟體成本不斷提高

(5)軟體生命周期是指
A)軟體產品從提出、實現、使用維護到停止使用退役的過程
B)軟體從需求分析、設計、實現到測試完成的過程
C)軟體的開發過程
D)軟體的運行維護過程
(6)面向對象方法中,繼承是指
A)一組對象所具有的相似性質
B)一個對象具有另一個對象的性質
C)各對象之間的共同性質
D)類之間共享屬性和操作的機制

(7)層次型、網狀型和關系型資料庫劃分原則是
A)記錄長度
B)文件的大小
C)聯系的復雜程度
D)數據之間的聯系方式

(8)一個工作人員可以使用多台計算機,而一台計算機可被多個人使用,則實體工作人員、與實體計算機之間的聯系是
A)一對一
B)一對多
C)多對多
D)多對一

(9)資料庫設計中反映用戶對數據要求的模式是
A)內模式
B)概念模式
C)外模式
D)設計模式

(10)有三個關系R、S和T如下:

則由關系R和S得到關系T的操作是
A)自然連接
B)交
C)投影
D)並
(11)以下關於結構化程序設計的敘述中正確的是
A)一個結構化程序必須同時由順序、分支、循環三種結構組成
B)結構化程序使用goto語句會很便捷
C)在C語言中,程序的模塊化是利用函數實現的
D)由三種基本結構構成的程序只能解決小規模的問題

(12)以下關於簡單程序設計的步驟和順序的說法中正確的是
A)確定演算法後,整理並寫出文檔,最後進行編碼和上機調試
B)首先確定數據結構,然後確定演算法,再編碼,並上機調試,最後整理文檔
C)先編碼和上機調試,在編碼過程中確定演算法和數據結構,最後整理文檔
D)先寫好文檔,再根據文檔進行編碼和上機調試,最後確定演算法和數據結構

(13)以下敘述中錯誤的是
A) C程序在運行過程中所有計算都以二進制方式進行
B)C程序在運行過程中所有計算都以十進制方式進行
C)所有C程序都需要編譯鏈接無誤後才能運行
D)C程序中整型變數只能存放整數,實型變數只能存放浮點數

(14)有以下定義:int a; long b; double x,y;則以下選項中正確的表達式是
A)a%(int)(x-y)
B)a=x!=y;
C)(a*y)%b
D)y=x+y=x

(15)以下選項中能表示合法常量的是
A)整數:1,200
B)實數:1.5E2.0
C )字元斜杠:『\』
D)字元串:"\007"
(16)表達式a+=a-=a=9的值是
A)9
B)_9
C)18
D)0

(17)若變數已正確定義,在if (W)printf(「%d\n,k」);中,以下不可替代W的是
A)a<>b+c
B)ch=getchar()
C)a==b+c
D)a++

(18)有以下程序
#include<stdio.h>
main()
{int a=1,b=0;
if(!a) b++;
else if(a==0)if(a)b+=2;
else b+=3;
printf(」%d\n」,b);

程序運行後的輸出結果是
A)0
B)1
C)2
D)3

(19)若有定義語句int a, b;double x;則下列選項中沒有錯誤的是
A)switch(x%2) B)switch((int)x/2.0
{case 0: a++; break; {case 0: a++; break;
case 1: b++; break; case 1: b++; break;
default : a++; b++; default : a++; b++;
} }
C)switch((int)x%2) D)switch((int)(x)%2)
{case 0: a++; break; {case 0.0: a++; break;
case 1: b++; break; case 1.0: b++; break;
default : a++; b++; default : a++; b++;
} }
(20)有以下程序
#include <stdio.h>
main()
{int a=1,b=2;
while(a<6){b+=a;a+=2;b%二10;}
printf(」%d,%d\n」,a,b);

程序運行後的輸出結果是
A)5,11
B)7,1
C)7,11
D)6,1

(21)有以下程序
#include<stdio.h>
main()
{int y=10;
while(y--);
printf(」Y=%d\n」,Y);

程序執行後的輸出結果是
A)y=0
B)y= -1
C)y=1
D)while構成無限循環
(22)有以下程序
#include<stdio .h>
main()
{char s〔」=」rstuv";
printf(」%c\n」,*s+2);

程序運行後的輸出結果是
A)tuv
B)字元t的ASCII碼值
C)t
D)出錯
(23)有以下程序
#include<stdio.h>
#include<string.h>
main()
{char x〔〕=」STRING」;
x〔0」=0;x〔1〕=』\0』;x〔2」=』0』;
printf(」%d %d\n」,sizeof(x),strlen(x));

程序運行後的輸出結果是
A)6 1
B)7 0
C)6 3
D)7 1

(24)有以下程序
#include<stdio.h>
Int f(int x);
main()
{int n=1,m;
m=f(f(f(n)));printf(」%d\n」,m);

int f(int x)
{return x*2;}
程序運行後的輸出結果是
A)1
B)2
C)4
D)8

(25)以下程序段完全正確的是
A)int *p; scanf("%d",&p);
B)int *p; scanf(「%d」,p);
C)int k, *p=&k; scanf("%d",p);
D)int k, *p:; *p= &k; scanf(「%d」,p);
(26)有定義語句:int *p[4];以下選項中與此語句等價的是
A)int p[4];
B)int **p;
C)int *(p「4」);
D)int (*p)「4」;

(27)下列定義數組的語句中,正確的是
A)int N=10; B)#define N 10
int x[N]; int x[N];
C)int x[0..10〕; D)int x〔〕;

(28)若要定義一個具有5個元素的整型數組,以下錯誤的定義語句是
A)int a[5]={0};
B)int b[]={0,0,0,0,0};
C)int c[2+3];
D)int i=5,d[i];

(29)有以下程序
#include<stdio.h>
void f(int *p);
main()
{int a〔5〕={1,2,3,4,5},*r=a;
f(r);printf(」%d\n」;*r);

void f(int *p)
{p=p+3;printf(」%d,」,*p);}
程序運行後的輸出結果是
A)1,4
B)4,4
C)3,1
D)4,1
(30)有以下程序(函數fun只對下標為偶數的元素進行操作)
# include<stdio.h>
void fun(int*a;int n)
{int i、j、k、t;
for (i=0;i<n一1;1+=2)
{k=i;『
for(j=i;j<n;j+=2)if(a〔j〕>a〔k])k=j;
t=a〔i];a〔i]=a〔k];a〔k]=t;


main()
{int aa「10」={1、2、3、4、5、6、7},i;
fun(aa、7);
for(i=0,i<7; i++)printf(」%d,」,aa〔i〕));
printf(」\n」);

程序運行後的輸出結果是
A)7,2,5,4,3,6,1
B)1,6,3,4,5,2,7
C)7,6,5,4,3,2,1
D)1,7,3,5,6;2,1

(31)下列選項中,能夠滿足「若字元串s1等於字元串s2,則執行ST"要求的是
A)if(strcmp(s2,s1)==0)ST;
B)if(sl==s2)ST;
C)if(strcpy(s l ,s2)==1)ST;
D)if(sl-s2==0)ST;

(32)以下不能將s所指字元串正確復制到t所指存儲空間的是
A)while(*t=*s){t++;s++;}
B)for(i=0;t[i]=s[i〕;i++);
C)do{*t++=*s++;}while(*s);
D)for(i=0,j=0;t[i++]=s[j++];);
(33)有以下程序( strcat函數用以連接兩個字元串)
#include<stdio.h>
#include<string .h>
main()
{char a〔20〕=」ABCD\OEFG\0」,b〔〕=」IJK」;
strcat(a,b);printf(」%s\n」,a);

程序運行後的輸出結果是
A)ABCDE\OFG\OIJK
B)ABCDIJK
C)IJK
D)EFGIJK

(34)有以下程序,程序中庫函數islower (ch)用以判斷ch中的字母是否為小寫字母
#include<stdio.h>
#include<ctype.h>
void fun(char*p)
{int i=0;
while (p[i〕)
{if(p[i]==』 』&& islower(p「i-1」))p[i-1]=p[i-1]-『a』+『A』;
i++;


main()
{char s1〔100〕=」ab cd EFG!」;
fun(s1); printf(」%s\n」,s1);

程序運行後的輸出結果是
A)ab cd EFG!
B)Ab Cd EFg!
C)aB cD EFG!
D)ab cd EFg!
(35)有以下程序
#include<stdio.h>
void fun(int x)
{if(x/2>1)fun(x/2);
printf(」%d」,x);

main()
{fun(7);printf(」\n」);}
程序運行後的輸出結果是
A)1 3 7
B)7 3 1
C)7 3
D)3 7

(36)有以下程序
#include<stdio.h>
int fun()
{static int x=1;
x+=1;return x;

main()
{int i;s=1;
for(i=1;i<=5;i++)s+=fun();
printf(」%d\n」,s);

程序運行後的輸出結果是
A)11
B)21
C)6
D)120
(37)有以下程序
#inctude<stdio.h>
#include<stdlib.h>
Main()
{int *a,*b,*c;
a=b=c=(int*)malloc(sizeof(int));
*a=1;*b=2,*c=3;
a=b;
printf(「%d,%d,%d\n」,*a,*b,*c);

程序運行後的輸出結果是
A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3

(38)有以下程序
#include<stdio.h>
main()
{int s,t,A=10;double B=6;
s=sizeof(A);t=sizeof(B);
printf(「%d,%d\n」,s,t);

在VC6平台上編譯運行,程序運行後的輸出結果是
A)2,4 B)4,4 C)4,8 D)10,6

(39)若有以下語句
Typedef struct S
{int g; char h;}T;
以下敘述中正確的是
A)可用S定義結構體變數
B)可用T定義結構體變數
C)S是struct類型的變數
D)T是struct S類型的變數

(40)有以下程序
#include<stdio.h>
main()
{short c=124;
c=c_______;
printf(「%d\n」、C);

若要使程序的運行結果為248,應在下劃線處填入的是
A)>>2 B)|248 C)&0248 D)<<I
二、填空題(每空2分,共30分)
請將每空的正確答案寫在答題卡【1】至【15】序號的橫線上,答在試卷上不得分。
(1)一個棧的初始狀態為空。首先將元素5,4,3,2,1依次入棧,然後退棧一次,再將元素 A,B,C,D依次入棧,之後將所有元素全部退棧,則所有元素退棧(包括中間退棧的元素)的順序為【1】

(2)在長度為n的線性表中,尋找最大項至少需要比較【2】次。

(3)一棵二叉樹有10個度為1的結點,7個度為2的結點,則該二叉樹共有【3】個結點。

(4)僅由順序、選擇(分支)和重復(循環)結構構成的程序是【4】程序。

(5)資料庫設計的四個階段是:需求分析,概念設計,邏輯設計【5】。

(6)以下程序運行後的輸出結果是【6】。
#include<stdio.h>
main()
{int a=200,b=010;
printf(」%d%d\n」,a,b);


(7)有以下程序
#include<stdio.h>
main()
{int x,Y;
scanf(」%2d%ld」,&x,&y);printf(」%d\n」,x+y);

程序運行時輸入:1234567程序的運行結果是【7】。

(8)在C語言中,當表達式值為0時表示邏輯值「假」,當表達式值為【8】時表示邏輯值「真」。
(9)有以下程序
#include<stdio.h>
main()
{int i,n[]={0,0,0,0,0};
for (i=1;i<=4;i++)
{n[i]=n[i-1]*3+1; printf(」%d ",n[i]);}
}
程序運行後的輸出結果是【9】。

(10)以下fun函數的功能是:找出具有N個元素的一維數組中的最小值,並作為函數值返回。請填空。(設N已定義)
int fun(int x〔N〕)
{int i,k=0;
for(i=0;i<N;I++)
if(x〔i〕
return x〔k〕;
}

(11)有以下程序
#include<stdio.h>
int*f(int *p,int*q);
main()
{int m=1,n=2,*r=&m;
r=f(r,&n);printf(」%d\n」,*r);

int*f(int *p,int*q)
{return(*p>*q)?p:q;}
程序運行後的輸出結果是【11】

(12)以下fun函數的功能是在N行M列的整形二維數組中,選出一個最大值作為函數值返回,請填空。(設M,. N已定義)
int fun(int a〔N〕[M))
{int i,j,row=0,col=0;
for(i=0;i<N;I++)
for(j=0;j
if(a〔i〕〔j〕>a〔row〕〔col〕){row=i;col=j;}
return(【12】):
}
(13)有以下程序
#include<stdio.h>
main()
{int n[2],i,j;
for(i=0;i<2;i++)n[i]=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++)n〔j〕=n「i」+1;
printf(」%d\n」,n[1]);

程序運行後的輸出結果是【13】

(14)以下程序的功能是:藉助指針變數找出數組元素中最大值所在的位置並輸出該最大值。請在輸出語句中填寫代表最大值的輸出項。
#include<stdio.h>
main()
{int a〔10〕,*p,*s;
for(p=a;p-a<10;p++)scanf(」%d」,p);
for(p=a,s=a;p-a<10;p++)if(*p>*s)S=P;
printf("max=%d\n」,【14】);


(15)以下程序打開新文件f.txt,並調用字元輸出函數將a數組中的字元寫入其中,請填空。
#include<stdio.h>
main()
{【15】*fp;
char a〔5〕={』1』,』2』,』3』,』4』,』5』},i;
fp=fopen(」f .txt」,」w」);
for(i=0;i<5;i++)fputc(a[i],fp);
fclose(fp);

❹ C語言編譯成後綴名.exe

C語言源代碼編輯檢查無誤後,編譯鏈接就可以生成.exe的文件了。也可以直接運行,系統會自動編譯鏈接的。

❺ 如何運行C語言編寫的程序

1. 編寫完畢的C語言程序需要通過編譯器轉換為計算機可執行的機器碼。
2. 編譯過程用於檢測程序中的錯誤,確保代碼無誤後,才能進行運行。
3. 在集成開發環境(IDE)中,如Microsoft Visual Studio Express,通過點擊工具欄的「編譯」按鈕來啟動編譯過程。
4. 編譯成功後,點擊「運行」按鈕來執行程序。
5. 對於Windows系統,推薦使用Microsoft Visual Studio Express作為編譯環境,因為它提供了集成的C語言編譯器。
6. OS X系統的用戶可以選擇Xcode,這是一款功能強大的多語言IDE,也包含了C語言編譯器。
7. 在Linux環境中,gcc是廣泛使用的C語言編譯器。
8. 如果系統報錯缺少dll文件,可能是由於病毒或惡意軟體導致的文件丟失。在這種情況下,應確保系統安全,並清理不必要的開機載入項,以優化系統性能。
9. 不同的操作系統通常需要特定的編譯器來編譯和運行C語言程序。選擇合適的編譯器並正確安裝是運行程序的前提。

閱讀全文

與所有c程序都需要編譯鏈接無誤後才能進行嗎相關的資料

熱點內容
php無限分類循環 瀏覽:33
北漂程序員營養餐 瀏覽:103
掃描件pdf轉換成圖片 瀏覽:56
忍者必須死伺服器升級到什麼時候 瀏覽:337
鹼基最多配對演算法 瀏覽:829
命令和決定表彰上的區別 瀏覽:150
全國醫保服務平台app叫什麼 瀏覽:317
php輸出表單 瀏覽:237
西門子r變數編程入門 瀏覽:374
壓縮機器人怎麼做 瀏覽:285
魔獸懷舊服什麼時候來新伺服器 瀏覽:796
如何電腦網路加密 瀏覽:475
終端世界在編譯 瀏覽:771
白色洗碗棉手工解壓 瀏覽:748
JDM什麼app 瀏覽:512
編譯原理終止狀態判斷 瀏覽:751
怎樣設置桌面文件夾的樣子 瀏覽:871
怎麼進入hypixel伺服器國服 瀏覽:84
如何編譯openwrt更快 瀏覽:102
平板如何加密文件夾 瀏覽:229