c編程語言
#include<stdio.h>
#include<stdlib.h>
typedefchardatatype;
typedefstructnode{
datatypedata;
structnode*next;
}*List,NODE,*pNode;
ListGetEmptyList(){
pNodehead=(pNode)malloc(sizeof(NODE));
if(head==NULL){
printf("內存耗盡!
");
exit(1);
}
head->next=NULL;
returnhead;
}
voidCreatList(Listhead,chars[]){
pNodep,q;
inti=0;
if(head==NULL){
printf("表頭為空,無法創建鏈表。|你");
return;
}
p=head;
while(s[i]){
q=(pNode)malloc(sizeof(NODE));
if(q==NULL){
printf("內存耗盡!
");
exit(1);
}
q->data=s[i];
q->next=NULL;
while(p->next)p=p->next;
q->next=p->next;
p->next=q;
++i;
}
if(q)q->next=head;//做成循環表的必要步驟
}
intListLength(Listhead){//返回單向循環表長
intlen=0;
pNodep=head->next;
while(p!=head){
++len;
p=p->next;
}
returnlen;
}
intRemovePosNode(Listhead,intpos){//刪除指定位置的結點
inti,len=ListLength(head);
pNodep=head,q;
if(pos<1||pos>len){
printf("數據錯誤。
");
return0;
}
for(i=1;i<pos&&i<len;++i,p=p->next);
if(i==pos){
q=p->next;
p->next=q->next;
free(q);
return1;
}
printf("沒有找到位置第%d的結點。
",pos);
return0;
}
intRemoveDataNode(Listhead,datatypedata){//刪除有指定數據的第一個結點
pNodep=head,q;
while(p->next!=head){
if(p->next->data==data){
q=p->next;
p->next=q->next;
free(q);
return1;
}
p=p->next;
}
if(p->next==head)printf("沒有找到數據是'%c'的結點。
",data);
return0;
}
voidshow(Listhead){
pNodep=head->next;
while(p!=head){
printf("%c",p->data);
p=p->next;
}
printf("
");
}
intmain(){
chars[]="CTrapseandPittfalls";
Listhead=GetEmptyList();
CreatList(head,s);
show(head);//顯示原串
RemovePosNode(head,8);//刪除字元'e'
show(head);
RemoveDataNode(head,'t');
show(head);
return0;
}
⑵ c語言編程怎樣入門
相對於其他編程語言,C語言還是比較難的。初學者需要注意一下幾點:
一是學習順序
先從熟悉簡單的C語言語法開始入門,然後再循序漸進,學習C++語法,WIN32、MFC、QT、網路編程,資料庫、數據結構、演算法、COM、STL等。構建一個完整的C語言知識體系。這需要一個比較漫長的學習積累的過程。語法入門部分大概2-3個月,其他部分需要學習和工作中慢慢理解和消化了。
二是學習方法
人的知識80%是通過眼睛獲取的,但是學習編程有所不同,除了看書、看視頻之外,關鍵是要勤動手,勤動腦。通過做大量的練習、項目實戰不斷積累代碼量。只有代碼量足夠多了,項目做的多了,才能算是真正學會了。項目能否完成,就是衡量是否學會的唯一標准。後期就是代碼的質量和優化問題了,這個只能在項目工作中慢慢積累經驗了。
最後強調一點,很多人學不會編程是因為掉坑裡了。就是教程或者書上的知識點之間跨越太大,作為一個初學者很難自己摸索出來,前面的知識點沒有掌握,接著學習後面的知識,肯定是學不會了。目前絕大多數編程書籍和教程或多或少都有這樣的弊端。自學能力比較強的人可以通過各種方法,參考各種網上的資料自己解決。但是大多數自學能力不是很強的人,只能依賴老師、同學、同事或者朋友幫忙指導,或者報名培訓機構,老師指導完成了。學習編程通常需要一些好的學習資料,包括紙質的書籍,視頻教程,課件,項目練習,代碼。零基礎入門的書籍推薦《明解C語言》、《C Primer Plus》,還有一本非常特別的匯編和C語言正向逆向結合的書編程達人內部教材《匯編、C語言基礎教程》也非常不錯,講解匯編和C語言的本質非常透徹,非常細致。視頻資料也是特別多了,各種視頻網站、論壇、自媒體都有,比如網易課堂、騰訊課堂、慕客網這些。還有一些論壇,比如CSDN、編程中國等。最重要的一點就是答疑服務,推薦愛達人的網站也很不錯,從零基礎入門到應用課程,配套的視頻、課件、代碼、項目、答疑服務都有,還可以兼職接單,學以致用。
⑶ 怎麼用c語言編程
以「輸入三個數,判斷是否構成三角形」為例,
你可以試試
#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,d,s;
scanf("%f,%f,%f",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{
if(a==b||b==c||c==a)
{if(a==b&&b==c) printf("this is a dengbiansanjiaoxing\n");
else printf("this is a dengyao sanjiaoxing\n");
}
else if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
printf("this is jiao\n");
else printf("yibansanjiaoxing\n");
d=(a+b+c)/2;
s=sqrt(d*(d-a)*(d-b)*(d-c));
printf("%f\n",s);
}
}
else printf("bushi sanjiaoxing ") ;
}
⑷ 用c語言編程
程序就是讀取文件到數組,再將數組進行排序,最後寫入文件。
讀寫文件流程:fopen獲取文件流(根據讀寫需求,選擇參數,使用完必須調用fclose函數關閉),fscanf讀取文件內容,fseek控制文件流指針,fprintf寫入文件。
選擇排序:每個循環周期選出一個最值,交換一次。
下面是代碼(數組為動態數組):
#include <stdio.h>
#include <malloc.h>
int maxLen;//數組長度
int *read2Nums(char path[]);//讀取
int write2File(int *nums,char path[]);//寫入
void showNums(int *nums);
int px(int *nums,int flag);//選擇排序flag=1升序,flag=0降序
int main()
{
int *nums=NULL;
char rPath[]="c:\000.dat",wPath[]="c:\rank.dat";
if(!(nums=read2Nums(rPath))) return 1;
showNums(nums);
printf("數組升序排列: ");
if(px(nums,1)==-1) return 1;
showNums(nums);
printf("數組降序排列: ");
if(px(nums,0)==-1) return 1;
showNums(nums);
printf("寫入到文件路徑%s下(存在覆蓋,不存在新建) ",wPath);
if(write2File(nums,wPath)==-1) return 1;
printf("寫入成功! ");
return 0;
}
void showNums(int *nums)
{
int i;
if(nums) for(i=0,printf("文件內容: ");i<maxLen;printf("%d ",nums[i]),i++);
printf(" ");
}
int px(int *nums,int flag)
{
int i,j,n,temp;
if(!nums) return -1;
for(i=0;i<maxLen-1;i++)
{
n=i;
for(j=i+1;j<maxLen;j++)
{
if(flag && nums[n]>nums[j]) n=j;
if(!flag && nums[n]<nums[j]) n=j;
}
temp=nums[i],nums[i]=nums[n],nums[n]=temp;
}
return 1;
}
int write2File(int *nums,char path[])
{
int i;
FILE *fp=NULL;
if(!nums) return -1;
if(!(fp=fopen(path,"w"))) return -1;
//fseek(fp,SEEK_END);
for(i=0;i<maxLen;i++)
fprintf(fp,"%d ",nums[i]);
fclose(fp);
return 1;
}
int *read2Nums(char path[])
{
int *nums=NULL,*temp=NULL,cnt=0;
FILE *fp=NULL;
maxLen=10;
if(!(fp=fopen(path,"r"))) return NULL;
nums=(int *)malloc(sizeof(int)*maxLen);
if(!nums) return NULL;
while(fscanf(fp,"%d",&nums[cnt++])!=-1)
if(cnt==maxLen)//數組長度不夠擴展(每次擴展10長度)
{
maxLen=maxLen+10;
temp=(int *)realloc(nums,sizeof(int)*maxLen);
if(temp) return NULL;
nums=temp;
}
if(--cnt<maxLen)//函數結束前,刪除多餘地址,減少內存佔用
{
maxLen=cnt;
temp=(int *)realloc(nums,sizeof(int)*maxLen);
if(!temp) return NULL;
nums=temp;
}
fclose(fp);
return nums;
}
⑸ 什麼是C語言和C+語言
1、C語言。
C語言誕生得非常早,當時人們普遍還習慣用匯編語言編寫軟體,並且沒有什麼統一,通用的操作系統,基本上軟體都是從0開始寫的。C語言的方針便是比匯編方便易用,一起不要損失匯編的表達能力。所以C語言可以看成是「高級的匯編」語言。
C語言的源代碼基本上可以非常容易地對應到匯編代碼,並且可以不需要什麼運行時環境的支撐。C的特點,簡單容易編譯,靈活貼近底層。所以一向到現在,一些需要直接和硬體打交道的軟體都還是用C語言寫的,比如(但不限於)Linux Kernel和一些嵌入式領域。
2、C++ 語言
C++早期是基於C的,C++早期的編譯方法是將C++的代碼編譯成C代碼然後再調用C的編譯器來生成機器碼。C++的方針是進步編程人員的生產率,哪怕代價是增加編譯器的復雜度。
(5)c編程語言擴展閱讀
1、C語言中,如果一個函數沒有指定返回值類型,默認為int類型,並返回一個隨機數,一般為0XCCCCCCCC.
2、在C++中,如果函數沒有返回值則必須指定為void型,否則編譯不能通過。
⑹ c語言如何編程
C語言編程如何快速實現
在我們初次學習C語言的時候,總想著快速的實現編譯過程。那麼C語言編程究竟是如何實現的呢,當然是要通過自己喜歡的編譯器來編譯完成,那麼今天就為大家介紹C語言編程是如何快速的實現。
1. 首先我們下載一款適合C語言的編譯器,今天為大家講解的C語言編譯器為CodeBlocks,該編譯器沒有太過復雜,很符合初學者,簡單上手快。
⑺ C語言是什麼意思
C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSI C,作為C語言最初的標准。
目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。
C語言是一門面向過程的計算機編程語言,與C++,Java等面向對象的編程語言有所不同。
其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
(7)c編程語言擴展閱讀:
C語言的優勢:
1.相比較其他的編程語言(像C++,JAVA),C語言是個低級語言。從總體上來說,低級的編程語言可以讓你更好的了解計算機。
2.設備驅動程序和操作系統只能用C語言來編寫。現在,你可能還從來沒有編寫過一個設備驅動程序或者一個操作系統,但是如果你需要去修改他們的時候,怎麼辦?
3.如果你想要得到一份編寫微控制器程序的工作的時候,該怎麼辦?他們都是用C語言編寫的。就因為不想學習一門新的語言,你就准備限制你能得到工作的機會嗎?
4.C的程序比其他用別的語言寫的程序,實現相同的功能,它用的代碼行數更少,而它帶來的運行效率更快。有時候,你的程序所需要的速度,只有C語言能做到。
5.如果你學習過C語言,你就能學習現在任何的高級編程語言。因為所有的高級語言都是以C語言為基礎的(像JAVA,C++,C#等等)。
6.因為C語言已經存在很多年了,它有廣泛的使用團體並且有大量的現成代碼可以利用。這就使你能在過去程序的基礎上,快速和高效的編寫新的演算法和函數。
7.C語言是一個開源組織的語言。一個開源組織的產物--LINUX,就是用C語言寫的。如果你會C語言,你就能參加這個組織並且還能向眾多的開源組織投稿,比如參加Source Forge並且給他們投稿。
8.C語言是唯一一個向你闡述指針的本質的語言。而C#和Java乾脆跳過了指針這個題目。可是指針確實使C語言變得更加強大。
9.找編程開發方面的工作時,C語言仍然是最普遍需要的語言。所以它值得你花時間去學會它。
10.任何裡面有微處理器的設備都支持C語言。從微波爐到手機,都是由C語言技術來推動的。
⑻ 編程C語言
這種老師還有什麼資格當老師?盡教一些錯誤的、過時的東西!
這個所謂的「老師」說的可以省略的情況僅限於TC2中,而現在TC2早已過時,淘汰不用了。如果在其它的IDE中省略這些代碼,程序是無法編譯的。
什麼時候也不能省略,除非不用這個頭文件中聲明的函數和數據類型。