1、計算機編寫的程序可以是高級語言程序,如:vb,c#,c++,java等
也可以是匯編語言,機器語言程序
2、匯編語言是一種助記符語言,機器語言之後誕生,幫助人們編寫程序的符號,不用再記哪些機器指令,匯編語言寫的程序就是匯編程序
3、編譯程序是把匯編語言或一些高級語言轉換成機器語言的代碼
⑵ 請問編程里的 「. _ : = 」各表示什麼意思
1、" . " —— 用在指針和結構體中。比如Student a;(Student 中有int sno;int grade;)int *b = Student;那麼 (*b).sno等同於a.sno。
2、「 :」——用在選擇判斷。x = (a > b) ? a : b;
3、「 = 」——就是賦值運算符號了,最常用的。int a = 1;表示將1賦值給變數a;int b = a;表示將a變數的值賦值給b。
編程為編定程序的中文簡稱,讓計算機代為解決某個問題,對某個計算體系規定一定的運算方式,使計算體系按照該計算方式運行,並最終得到相應結果的過程。
(2)計算機上程序編譯符號擴展閱讀:
編程的執行原理:
1、計算機對除機器語言以外的源程序不能直接識別、理解和執行,都必須通過某種方式轉換為計算機能夠直接執行的。
2、程序設計語言編寫的源程序轉換到機器目標程序的方式有兩種:解釋方式和編譯方式。
3、解釋方式下,計算機對高級語言書寫的源程序一邊解釋一邊執行,不能形成目標文件和執行文件。
⑶ C語言編譯時,一些符號用什麼寫法
不是的,錯誤不是出在符號上,而是出在它的文件輸上,你可以打開菜單欄中的Optionst選項,在下拉菜單中選擇Directories選項,按回車鍵,第一個為Include directiories:……,這就是它的輸入目錄,你安裝在磁碟的什麼地言就輸入就行了,不過後面還有一些事,自己查。
⑷ 請各位網友告訴我編程到底是怎樣編的,為什麼幾個符號就可以了,符號也是人編出來的,計算機不是不懂嗎
所謂的編程是運用一些編程軟體如C++、.net、VB等按照計算機標准語言定義寫出相應實現所需功能的程序段,您所說的符號是就是計算機的標准語言(並不是隨便輸入就可以哦),編寫時必須嚴格按照標准,否則就會報錯致使無法生成程序!另外計算機肯定是只懂0和1這兩個符號,您所看到的符號是已經被編程軟體等內部定義好的宏指令,把這些符號讀入計算機後還是0和1的組合而已!
⑸ 計算機編譯原理 圖 裡面的 圓圈 表示什麼意思
先打個比方:
用程序接受從鍵盤輸入的單詞,並對照詞典判斷是不是拼寫正確,步驟是:
一個一個地接收字母,每接受一個字母,識別狀態往前推進一步。
假如只考慮識別3個單詞:it, if, is
狀態1:剛開始,一個字母還沒收到。
狀態2:接收到一個字母 i
狀態3:又接收到一個字母 s
1,2,3用圓圈圈起來,1和2之間畫個箭頭連起來,箭頭上標上字母 i。2和3也畫個箭頭,標上字母 s 。
這樣的一張圖,表示的是單詞 is 的識別過程。
這個過程,就是你照片中第一個圖,1,2,3串成一直線的圖。
圖中V1對應 i , 圖中 V2 對應 s
你書上的圖,描述的是「自動機」。自動機反映的是讀取到一連串字母後的狀態變化過程。
它包含若干個狀態,即畫有圓圈的數字。
當讀入一個字母時,自動機從一個狀態運行到另一個狀態,對應圖上的一個帶箭頭線條。線上標注的符號,代表讀到的字元。
⑹ 關於C語言程序設計里的編譯程序的符號---開根號(C++裡面的)
double pow(double a, double b); // 返回a^b的值,開3方可寫作pow(a,1.0/3.0)
⑺ 預編譯命令行由什麼符號開頭
#include "stdio.h"
#define P 3
void *F(int x)/*定義一個無類型函數,它有返回值,只是返回的值是指向無類型數據的指針*/
void main(){printf("%d\n",(int)F(1+3));/*將無類型函數F返回的指針值通過(int)強制轉換為int型*/
還有幾個問題,
1.預處理命令行必須位於源文件的開頭是對是錯?為什麼?
對!
編譯器在編譯源代碼時都是從開頭到結尾依次讀取,自己定義的變數、宏等等都得放前面,這樣在編譯器在讀到它們時就作一個記錄;
在使用這些變數、宏時,編譯器會在記錄中去尋找,如果找不到就會報錯——此變數未被定義。
函數可以放在結尾(main()之後),但是必須在開頭作一個函數聲明(也叫函數原型)以使編譯器為它作記錄,以便以後使用它時可以在記錄中找到它。
函數也可以放在前面(main()之前),此時就不用再聲明了,編譯器在讀到它時也會作一個記錄。
總之,自己定義的東西都得先聲明後使用,否則使用時在記錄中會找不到它。
預處理命令也是自己定義的東西,同屬這一范疇。
2.為什麼在源文件的一行上不能有多條預處理命令?
每條C語句都有一個「;」作結尾,即使都放一行,編譯器都能分辨得出。
預處理命令並不以「#」作為結尾標記,放一行的話編譯器是無法分辨的,它會把此行作為一個語句處理
通常的語句最好都分行寫,否則程序量大時是不便排錯的。
3.若有下列說明和定義
union dt
date;
變數data所佔內存位元組數與成員c所佔位元組數相同,為什麼?
聯合體的長度是其最長成員(如double c)的長度。
聯合體在內存中的存儲形式:
聯合體所有成員a,b,c都是同一地址,也就是說他們共同佔用這一段內存。
以TC3.0為例,a占這一段內存的頭2個位元組,b占這一段內存的頭一個位元組,c占這一段內存的全部位元組(也就是頭4個位元組)
4.為什麼以下不對
char *sp;*sp="right!";
char s[10];s="right!";
一、進行字元串賦值時可以在定義時:直接在字元串定義後接「="right"」
如:char *sp="right";
或者 char s[10]="right";
二、也可以在非定義時,這時左值必須是左值必須是字元串指針變數。
如:sp="right!";
以下都是錯誤用法:
*sp="right!";//左值不是字元串指針變數
s="right!";//左值只是字元串指針 常量
1、如果說*a包含(x和\0),而*b包含(x和y),拿*a-*b會得出什麼結果,*a和*b都是char型變數的話
最終的表達式*a-*b中,a points to '\0',b points to 'y',so 表達式*a-*b代表的是'\0'-'y',結果是-121(y的ASCII是121)
point(char*p)
main()
{
char b[4]={'a','b','c','d'),*p=b;
point(p); printf("%c\n",*p);
}
A.a B.b C.c D.d
選哪個?為什麼?
選D,p最初是首地址b,然後p是b+3,此時*p相當*(b+3)、b[3].
2號問題:
main()
,,,},i,j;
for(i=0;i<4;i++)
{for (j=0;j<i,j++)
printf("%4c",' ');/*原題就是'和'之間只有個空格,我也不清楚是怎麼回事*/
for(j=__;j<4;j++)
printf(%4d",num[i][j]);
printf("\n");
}
}
printf("%4c",' '); 其中的' '其實是一個空格字元常量,這個同'a','b','c'等字元常量是一樣的。
這個語句中%4c是指要讀取一個字元(這個字元就是後面的空格字元常量' ')並輸出,這個字元在顯示器上應該佔4格。所以此句的功能是輸出4個空格(空格也是屬於字元)。
你改成printf("%4c",'a');printf("%4c",'b');試下,它是輸出3個空格和一個字元。
printf("%8c",' ');是輸出8個空格,這個比printf(" ");來實現輸出8個字元來得方便。
若要按下列形式輸出數組右上半三角(什麼玩意?)。
1 2 3 4 i=0,j=i,那麼j可以是0,1,2,3
6 7 8 i=1,j=i,那麼j可以是1,2,3
11 12 i=2,j=i,那麼j可以是2,3
16 i=3,j=i,那麼j可以是3
則下劃線處應填入的是?為什麼?(B)
A.i-1 B.i
C.i+1 D.4-i
3號問題:
程序中若有下列說明和定義語句:
char fun(char*);
main()
{
char *s="one",a[5]=,(*fl)()=fun,ch;
......
}
下列選項中對函數的正確調用語句是?為什麼?
A.(*fl)(a);
B.*fl(*s);
C.fun(&a);
D.ch=*fl( s);
選擇A,根據定義char fun(char*),形參必須是一個字元指針,"a","s"才是字元指針(char pointer),而"*s" is char variable,"&a" is invalid.所以排除B、C
只有fun、*fl才是函數入口地址.
B.*fl(*s);相當於*(fl(*s)),錯誤,指針運算符只能針對指針運算,fl(*s)得到的是int,不是指針,下同。故排除B、D.
D.*fl( s);相當於*(fl( s));
4號問題
#define S(x) 4*x*x+1
main()
{
int i=6,j=8;
printf("%d",S(i+j));
getchar();
}
這個函數的輸出結果是多少?怎麼得的?
得到81.
因為S(i+j)經過預編譯用i+j替換x後,它被展開為4*i+j*i+j+1。即(4*6+8*6+8+1)
你應該這樣改:
#define S(x) 4*(x)*(x)+1
或者 printf("%d",S((i+j)));即將i+j用括弧括起來(i+j),這樣就在替換時用(i+j)替換x
⑻ 編譯器怎麼區分標識符和字元
首先要清楚標識符和字元的定義
標識符是程序員自己規定的具有特定含義的單詞,比如類名稱,屬性名稱,變數名等。
舉例子就是 class string
字元是指計算機中使用的字母、數字、字和符號
舉例子就是 1,2,3,abc
然後要強調,編譯器是無法區分標識符和字元的,只有人事先為其規定好規則的情況下,編譯器才會按照標識符的方式去讀取。打個比方,我規定了class為類標識符,那當我程序里 出現了class test時,編譯器就會認為test是類而不是字元。不知道能不能理解,不過是個好問題