當前位置:首頁 » 編程語言 » 自己對c語言的看法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

自己對c語言的看法

發布時間: 2022-06-19 06:59:10

① 關於c語言

首先C要比你想像中的強大,你要拿掉你現在從簡單程序C程序的看法,還有加減乘除這種想法。

其實你的困惑是每個剛入門的人都有的,產生的原因感覺無非就是覺得你編的程序和現實中應用的程序差距太大造成C語言無用的一種錯誤印象。

我想你所認為的程序,從你的「簡單的WINDOWS程序啊」應該覺得是個圖形界面的程序,覺得一個功能強大的程序應該是我們用的圖形化界面,這是微軟為了普及個人電腦而造成的。作為普通的電腦用戶自然要圖形界面,這是為了方便他們操作而做的,而作為一個程序員,你還是有必要熟悉字元操作,比如linux下用shell來操作,這里沒有圖形,沒有按鈕,有的只是指令。

C語言只能做數學演算法,這種想法其實和你現在的水平有關。其實學了微機原理你就知道計算機從物理角度上來說,只能做加和乘(據說有乘法器,不過我沒考證過)還有邏輯運算和,或,非,異或。任何一款復雜的應用軟體歸根結底都是這些操作的集合體,舉個簡單的例子,游戲算是一個復雜的軟體了,游戲上任務的生命值,法力等等這些數值容易理解。圖形其實也可以歸結為數學,屏幕上以左下角為原點,每個像素就有了自己的坐標,他的顏色可以用三原色來合成表示,那麼一個點就有了坐標這2個數字表示位置,顏色三原色可以用0,1,2這3個表示。這也圖形就歸結成了一個數學問題,這樣CPU處理的還是數學問題。當然這是最原始的,後來人們用種種辦法去改善計算機來處理圖形,計算機圖形也是門學問,你可以看一下。

C也提供了圖形編程,包括2D和3D,我只記得一個graph.h頭文件,其它的不記得了。

沒有圖形界面的軟體難道就不是復雜軟體了么,比如你的顯卡驅動程序,它有圖形操作界面么,但確確實實是一個非常重要的軟體。

所以,好好學習C,這是一門不錯的語言。圖形化是為了方便人們觀察的,而且我認識的覺大部分程序員都討厭去做前台圖形界面的工作,他們都認為,我處理好數據就好了,簡單的,整齊的顯示給他們看就可以了,為什麼要整那些花里胡哨而沒有任何實際意義的界面呢。

② c語言的優勢

C語言具有其它語言所無法比擬的優勢,因而被廣泛應用,其具體優勢如下所示:
1、簡潔緊湊、靈活方便 C語言一共只有32個關鍵字,9種控制語句,程序書寫形式自由,區分大小寫。把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以像匯編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。
2、運算符豐富 C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括弧、賦值、強制類型轉換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現在其它高級語言中難以實現的運算。
3、數據類型豐富 C語言的數據類型有:整型、實型、字元型、數組類型、指針類型、結構體類型、共用體類型等。能用來實現各種復雜的數據結構的運算。並引入了指針概念,使程序效率更高。
4、表達方式靈活實用 C語言提供多種運算符和表達式值的方法,對問題的表達可通過多種途徑獲得,其程序設計更主動、靈活。它語法限制不太嚴格,程序設計自由度大,如對整型量與字元型數據及邏輯型數據可以通用等。
5、允許直接訪問物理地址,對硬體進行操作 由於C語言允許直接訪問物理地址,可以直接對硬體進行操作,因此它既具有高級語言的功能,又具有低級語言的許多功能,能夠像匯編語言一樣對位(bit)、位元組和地址進行操作,而這三者是計算機最基本的工作單元,可用來寫系統軟體。
6、生成目標代碼質量高,程序執行效率高 C語言描述問題比匯編語言迅速,工作量小、可讀性好,易於調試、修改和移植,而代碼質量與匯編語言相當。C語言一般只比匯編程序生成的目標代碼效率低10%~20%。
7、可移植性好 C語言在不同機器上的C編譯程序,86%的代碼是公共的,所以C語言的編譯程序便於移植。在一個環境上用C語言編寫的程序,不改動或稍加改動,就可移植到另一個完全不同的環境中運行。
8、表達力強 C語言有豐富的數據結構和運算符。包含了各種數據結構,如整型、數組類型、指針類型和聯合類型等,用來實現各種數據結構的運算。C語言的運算符有34種,范圍很寬,靈活使用各種運算符可以實現難度極大的運算。C語言能直接訪問硬體的物理地址,能進行位(bit)操作。兼有高級語言和低級語言的許多優點。它既可用來編寫系統軟體,又可用來開發應用軟體,已成為一種通用程序設計語言。另外C語言具有強大的圖形功能,支持多種顯示器和驅動器。且計算功能、邏輯判斷功能強大。

③ 談談對c語言的認識

C語言是介於高級語言與低級語言中間的語言,基本上是比較好學的編程語言

④ 談談對c語言的認識和理解

C語言適合為硬體編寫驅動程序,以及一些底層的程序。由於C語言不具有圖形界面,對於大部分人來說沒有太大的作用。但C++就不一樣了,許多帶有圖形界面的程序都是用C++寫的,學了C++可以做很多事,而學了C語言幾乎什麼都做不了,學了C語言再學C++並不會容易多少。
C語言和VB6.0在今天基本上已經被淘汰了。

⑤ c語言的優點

c語言的優點:
1.簡潔緊湊、靈活方便 C語言一共只有32個關鍵字,9種控制語句,程序書寫形式自由,區分大小...
2.運算符豐富 C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括弧、賦值、強制...
3.數據類型豐富 C語言的數據類型有:整型、實型、字元型、數組類型、指針類型、結構體類型...
4.表達方式靈活實用 C語言提供多種運算符和表達式值的方法,對問題的表達可通過多種途徑獲得...
5.允許直接訪問物理地址,對硬體進行操作 由於C語言允許直接訪問物理地址,可以直接對硬體進行訪問。

⑥ 對於學習C語言,說說你的看法

二級,我都不知道怎麼過的,可能那次題目不是很難....
如果你是計算機專業的話,二級應該不在話下,如果將來還想往編程方向發展的話,學好C,對將來的C++/C#....等面向對象很有幫助!
如果是非計算機專業的話,拿本書過了二級就可以了!

⑦ 結合變數、數組、指針變數、結構體變數談談對c語言學習的看法

本菜這幾天一直在學習結構體變數當中,就一直想著嘗試著用結構體變數這一工具來寫一個簡單的學生管理系統,經過了本菜的將近四天的奮戰,終於完成了一個具備簡單功能的學生管理系統,
首先,我要向各位碼友們聲明的是此貼並非教程貼,如題所示僅僅為本菜學習c語言過程中的心得分享帖,我不可能在這里為各位吧友進行大神般的語言描述,因為我只是一個c吧里長期潛水的菜鳥一頭,以下我只會對我非常樂於分享的東西進行比較細節的描述,其餘只會大概提起,甚至只會羅列以下代碼。。。。。。。。。

起初剛剛接觸到結構體變數的時候學到的是在
一開始就定義如下;

#define STU_NUM 60

int stu_numbers=0;
int Chinese;
int Math;
int English;

struct subject{
int chinese;
int math;
int english;
} ;
struct stu_info{
int sid; /*student id*/
char stu_name[NAME_LEN+1];
char sex[5];
struct subject S; /*這個是結構體變數的嵌套定義*/
}student[STU_NUM+1];
本學生管理系統所具備的的主要功能描述;
一. 這是一被定義為僅能容納60個學生個人信息的管理系統;
二.所包含的學生信息包括
1. 學生的學號(sid)
2.學生的姓名(不超過十個字元的字元串)
3.學生的性別(不超過三個字元的字元串)
4.各科目的成績(語數英)
5.學生數組號碼
就這樣 花了不少的功夫第一次寫完了一個不怎麼樣的學生信息管理系統

-_-|||-_-|||-_-|||-_-|||
當我再將教材往後翻幾頁的時候, 教材里順便提及了一下用鏈表來寫這個管理系統,
鏈表是一種數據結構 ,其最大的的好處就是能夠為數據分配動態內存,就不用像一開始那樣先為系統分配一個都不知道夠不夠用的空間來存貯學生的信息,額 個人感覺吧 這是我第一次比較正規地接觸到數據結構 確實是花了不少的時間來理解鏈表的構成和構造方法
不過這時間確實是花的很值得的,畢竟學會一種數據結構確實是會讓程序運行起來比較高效率(對於剛接觸的本菜來講 確實有點抽象啊)。
那麼先讓本菜來談談我眼中的鏈表究竟是怎麼樣的吧;
鏈表,首先可以細分為一小塊一小塊的結構體變數,這一小塊一小塊的結構體變數在鏈表中
是首尾相連的顧名思義 就像一條鐵鏈一樣 而這每一小塊的結構體變數中又可以從大方向地分成兩個部分, 其中一個部分就是——————涵蓋著該結構體變數里的所有信息,另一個部分就是鏈接每塊結構體變數的部分————指針 其結構如下圖

⑧ 簡單談一下自己對C語言的認識

面向過程的語言,結構化程序設計

⑨ 結合if putchar getchar等談談對c語言學習的看法

C語言中的getchar, scanf, putchar, printf學習
[摘要:輸進戰輸出功效並非C說話自身的構成局部,他們屬於規范庫局限,應用輸進輸出相干函數是必需寫:#includestdio.h 。文件名用尖括弧括起去時,預處置懲罰器將到特定地位查找而沒有是正在工]

輸入和輸出功能並不是C語言本身的組成部分,他們屬於標准庫范圍,使用輸入輸出相關函數是必須寫:#include<stdio.h> 。文件名用尖括弧括起來時,預處理器將到特定位置查找而不是在工程中。

常用的標準的輸入輸出有:
getchar(void), scanf(char *format, …); putchar(c), printf(char*format, arg1, arg2 ,…)

C語言中,用Dos窗口輸入數據時,長度滿足輸入函數要求並且按下了回車鍵才能結束本次輸入。如果長度滿足(包括超出)沒有按下回車鍵,繼續等待輸入直到按下回車鍵,如果按下回車鍵但長度沒有達到要求,繼續等待輸入,直到長度滿足要求並且按下回車鍵。
輸入結束後,輸入函數接收完所需要的數據或者無法與輸入數據匹配時結束(終止)執行。
超出的輸入數據(包括回車符)停留在緩存中,等到下一次有輸入函數時,傳遞給輸入函數。
在char型的輸入中空格、回車、換行等都當成字元處理。
而整形相關輸入中,數據邊界定義為下一個非數字字元或者指定的字元寬度,在非數字字元中,只有空白符(包括空格、製表符、回車、換頁符)可以被自動被忽略。

輸入:

int getchar(void)
從標准輸入中(一般為鍵盤)一次讀取一個字元,空格回車等都當成一個字元,是最簡單的輸入機制。
返回:調用時輸入字元的ASCII值,遇到文件結尾,返回EOF(符號常量,一般為-1)。
使用「prog <輸入文件名」實現輸入重定向(改變輸入源,例如把鍵盤輸入改成文件輸入)
文本流有一系列行組成,每一行的結尾是換行符,如果系統不遵行這種模式,標准庫將其轉變為該種模式,例如輸入端把回車符和換頁符都轉換為換行符,輸出端反向變換。

int scanf(char *format, …)
按照format的格式讀入字元,存儲在後面參數所代表的地方,因此後面的參數一定是地址(指針)。
返回:成功匹配並賦值的輸入項個數,遇到文件結尾,返回EOF,下一個字元與格式說明不匹配,返回0(EOF與0不是同一個概念)
掃描完字元串或者碰到某些輸入無法與控制字元匹配時,函數終止

intsscanf(char *string, char *format, arg1, arg2, …)
按照format格式掃描string中的字元,保存在arg1,arg2中,arg1,arg2也必須是地址(指針)。其他與scanf相同
文本流有一系列行組成,每一行的結尾是換行符,如果系統不遵行這種模式,標准庫將其轉變為該種模式,例如輸入端把回車符和換頁符都轉換為換行符,輸出端反向變換。

Format由三部分組成,」<空格製表符(通常省)> <普通字元(可省)> <轉換說明(不可省)>」
空格和製表符在處理過程中被忽略。
普通字元(不包括%),用來嚴格的和輸入流中的數據不對,若不相同,則後面的不能輸入。
轉換說明包括:
% <禁止符*(可省)> <數值(最大寬度,可省)> <h, l或L(對象寬度,可省)> <轉換字元>
轉換說明中有賦值禁止字元*,跳過該輸入欄位,不進行賦值。
執行scanf獲得的數據個數由轉換字元的個數決定。
轉換字元含義參考其他說明。

輸出:

int putchar(c)
函數putchar(c)將字元c送到標准輸出上,默認情況下是顯示屏。
返回:輸出的字元,發生錯誤則返回EOF
使用「>輸出文件名」實現輸出重定向(改變輸出地,例如把輸出到屏幕改為某個文件)
文本流有一系列行組成,每一行的結尾是換行符,如果系統不遵行這種模式,標准庫將其轉變為該種模式,例如輸入端把回車符和換頁符都轉換為換行符,輸出端反向變換。

int printf(char *format, arg1, arg2 ,…)
在format的控制下列印。
返回:列印的字元數。

int sprintf( char *string, char*format, arg1, arg2, …)
功能與printf相同,但是輸出到string中而不是標準的輸出中,要保證string足夠大。
文本流有一系列行組成,每一行的結尾是換行符,如果系統不遵行這種模式,標准庫將其轉變為該種模式,例如輸入端把回車符和換頁符都轉換為換行符,輸出端反向變換。

Format由兩部分組成,」普通字元、轉換說明」
普通字元直接輸出到數據流里
轉換說明不直接列印,控制printf中參數的轉換和列印,格式為「%<格式控制>字元」
其中格式控制符為 -x.x樣式,控制對其方式、寬度、精度(輸出長度)等,字元控制輸出的格式。

例:輸入n(n不超過100)個整數,各個整數用逗號隔開。
方法一:
思路:利用getchar()函數逐個位元組(字元)輸入,找出逗號的位置。然後將逗號之間的字元轉換成整形數放到數組里。
char str[100] = {0};
int num[50] = {0};
char comma[50] = {0};
char i = 0,j = 0,k = 0;

str[i] = getchar(); //下面的輸入是從str[1]開始,這里
while(10 != str[i++]){ //以回車符結束輸入
str[i] = getchar();
if(str[i] == 44){ //記錄逗號的位置
comma[j++] = i;
}
}
comma[j] = i - 1; //i是回車符的位置(判斷的時候執行了++),相當於最後一個逗號,j從開始,j+1為字元串中整數的個數
num_real = j;
for(i=(comma[0]-1);i>=0;i--)
num[0] = num[0] + (str[i]-48)*pow_self(++k); //解決第一個數,j=0無法確定下限
k = 0;
for(;j>=1;j--){
for(i=(comma[j]-1);i>comma[j-1];i--)
num[j] = num[j] + (str[i]-48)*pow_self(++k); //num從開始,共j+1個數
k = 0;
}

其中pow_self函數定義為:
int pow_self(char num)
{
int cnt;
int sum = 1;
for(cnt =1;cnt<num;cnt++)
sum = sum*10;
return sum;
}

方法二:
Scanf和getchar配合,getchar負責接收逗號,逗號擁有空白符的功能。
int a[5] = {0};
int i = 0;

scanf("%d",&a[0]);
while(10 != getchar()) scanf("%d",&a[++i]);

⑩ 如何認識C語言

頂樓上的,LZ的問題太……